Yocto Build U-Boot TI
This page is using the default release am62-yocto-dunfell-5.10.140_08.06.00.42-v1.0.
To view this page for a specific Variscite SoM and software release, please follow these steps:
- Visit variwiki.com
- Select your SoM
- Select the software release
Introduction
This guide walks through the process for manually building and installing the U-Boot images from source. It is derived from TI's General Information guide
Fetch source code and install dependencies
This section describes the one time process to install the toolchains and fetch the necessary source code for building U-Boot.
Install Toolchains to home directory
$ cd ~ $ wget && \ tar -Jxvf -C $HOME && \ wget && \ tar -Jxvf -C $HOME
Fetch Source Code
Setup a working directory
$ mkdir ~/-u-boot
Fetch the U-Boot source:
$ cd ~/-u-boot $ git clone -b
Fetch the core-secdev-k3 Security Dev Tool:
$ cd ~/-u-boot $ git clone -b $ cd && \ git checkout && \ cd ../
Fetch ti-k3-image-gen:
$ cd ~/-u-boot $ git clone -b $ cd && \ git checkout && \ cd ../
Fetch ti-linux-firmware:
$ cd ~/-u-boot $ git clone -b $ cd && \ git checkout && \ cd ../
Fetch arm-trusted-firmawre:
$ cd ~/-u-boot $ git clone -b $ cd && \ git checkout && \ cd ../
Fetch optee-os:
$ cd ~/-u-boot $ git clone -b $ cd && \ git checkout && \ cd ../
Build U-Boot out of Yocto tree
After fetching the source code and installing dependencies, you may return to ~/-u-boot anytime and follow these steps to build U-Boot:
Setup the environment:
$ export PATH=$HOME//bin:$PATH && \ export PATH=$HOME//bin:$PATH && \ export export TI_SECURE_DEV_PKG=~/-u-boot/ && \ export UBOOT_DIR=~/-u-boot/ && \ export K3IG_DIR=~/-u-boot/ && \ export SYSFW_DIR=~/-u-boot//ti-sysfw && \ export DMFW_DIR=~/-u-boot//ti-dm/am62xx && \ export TFA_DIR=~/-u-boot/ && \ export OPTEE_DIR=~/-u-boot/
Build for GP SoC:
R5 Images
Build u-boot-spl.bin for tiboot3.bin. Saved in $UBOOT_DIR/out/r5:
$ cd ~/-u-boot/ $ make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- O=$UBOOT_DIR/out/r5 $ make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- O=$UBOOT_DIR/out/r5
Build tiboot3-am62x-gp-evm.bin. Saved in $K3IG_DIR. Requires u-boot-spl.bin and ti-fs-firmware-am62x-gp.bin.
$ cd $K3IG_DIR $ make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- SOC=am62x SOC_TYPE=gp SBL=$UBOOT_DIR/out/r5/spl/u-boot-spl.bin SYSFW_DIR=$SYSFW_DIR
A53 Images
Build tispl.bin and u-boot.img. Saved in $UBOOT_DIR/out/a53. Requires bl31.bin, tee-pager_v2.bin, and ipc_echo_testb_mcu1_0_release_strip.xer5f.
$ cd ~/-u-boot/ $ make -j$(nproc) ARCH=arm CROSS_COMPILE=aarch64-none-linux-gnu- U-BOOT_A53_DEFCONFIG O=$UBOOT_DIR/out/a53 $ make -j$(nproc) ARCH=arm CROSS_COMPILE=aarch64-none-linux-gnu- ATF=$TFA_DIR/build/k3/lite/release/bl31.bin TEE=$OPTEE_DIR/out/arm-plat-k3/core/tee-pager_v2.bin DM=$DMFW_DIR/ipc_echo_testb_mcu1_0_release_strip.xer5f O=$UBOOT_DIR/out/a53
Update U-Boot on running system
To update U-Boot on an existing system, the following SPL and U-Boot images need to be installed to the boot partition of the boot media (eMMC or SD):
$UBOOT_DIR/r5/tiboot3.bin $UBOOT_DIR/a53/tispl.bin $UBOOT_DIR/a53/u-boot.img
After updating the boot media, boot U-Boot and verify the commit ids of the R5 SPL, A53 SPL, and A53 U-Boot match the output of git rev-parse HEAD:
$ cd $UBOOT_DIR && git rev-parse HEAD aa251b91f7ff0d346db034ed6513fdaec3526871
Verify this matches the versions printed by U-Boot:
Update U-Boot on an SD Card
To update U-Boot on an SD Card, copy the files to the sd card.
- Mount the SD card boot partition on your host computer and verify the previous U-Boot files are installed:
$ mkdir ~/.sdcard $ sudo mount /dev/sdX ~/.sdcard $ ls ~/.sdcard tiboot3.bin tispl.bin u-boot.img uEnv.txt
- Copy the new files and umount the SD card:
$ sudo cp $UBOOT_DIR/out/r5/tiboot3.bin $UBOOT_DIR/out/a53/tispl.bin $UBOOT_DIR/out/a53/u-boot.img ~/.sdcard $ sudo umount ~/.sdcard && sync
- Boot the SD card and verify the R5 SPL, A53 SPL, and A53 U-Boot match the output of git rev-parse HEAD
Update U-Boot using UMS
U-Boot can be updated by using the USB Mass Storage gadget to mount the eMMC or SD card on your host computer.
- Connect the USB OTG port to host computer.
- Start the and interrupt U-Boot
- Start UMS on eMMC:
u-boot> ums 0 mmc 1
- Or...start UMS on SD card:
u-boot> ums 0 mmc 2
- Mount the SD card boot partition and verify the previous U-Boot files are installed:
$ mkdir ~/.sdcard $ sudo mount /dev/sdX ~/.sdcard $ ls ~/.sdcard tiboot3.bin tispl.bin u-boot.img uEnv.txt
- Copy the new files and umount the SD card:
$ sudo cp $UBOOT_DIR/out/r5/tiboot3.bin $UBOOT_DIR/out/a53/tispl.bin $UBOOT_DIR/out/a53/u-boot.img ~/.sdcard $ sudo umount ~/.sdcard && sync
- Boot the SD card and verify the R5 SPL, A53 SPL, and A53 U-Boot match the output of git rev-parse HEAD
Update U-Boot using Ethernet
U-Boot can be updated on a running system by using scp to transfer the files:
- Mount the eMMC boot partition and verify the previous U-Boot files are installed:
# mount /dev/mmcblk0p1 /mnt/ # ls /mnt tiboot3.bin tispl.bin u-boot.img uEnv.txt
- Transfer the new files:
$ scp $UBOOT_DIR/out/r5/tiboot3.bin $UBOOT_DIR/out/a53/tispl.bin $UBOOT_DIR/out/a53/u-boot.img root@<ip address>:/mnt/
- Reboot the and verify the R5 SPL, A53 SPL, and A53 U-Boot match the output of git rev-parse HEAD