4.32. TI K3 based boards¶
The TI K3 is a line of 64-bit ARM SoCs.
The boot process of the TI K3 SoCs is a two step process. The first stage boot loader is loaded by the ROM code and executed on a Cortex-R5 processor. The code on this processor is responsible for setting up the initial clocks, power domains and DRAM. It then loads the binaries for the A53 cores into DRAM and starts the A53 core. From this point on the Cortex-R5 processor is used as a system controller which controls clocks and power domains of the SoC.
4.32.1. Prerequisites¶
There are several binary blobs required for building barebox for TI K3 SoCs. Find them
in git://git.ti.com/processor-firmware/ti-linux-firmware.git. The repository is assumed
to be checked out at $TI_LINUX_FIRMWARE
. The K3 SoCs boot from a FAT partition on
SD/eMMC cards. During the next steps the files are copied to $TI_BOOT
. This is assumed
to be an empty directory. After the build process copy its contents to a FAT filesystem
on an SD/eMMC card.
The Cortex-R5 is a 32-bit processors whereas the Cortex-A53 are 64-bit processors, so both 32-bit and 64-bit toolchains are needed:
export CROSS_COMPILE_32=arm-linux-gnueabihf-
export CROSS_COMPILE_64=aarch64-v8a-linux-gnu-
4.32.2. Building barebox for the Cortex-R5 processor¶
The following assumes barebox is built for a BeaglePlay board. The exact filenames need to be adjusted for other boards.
There’s a single k3-r5_defconfig
for all K3 boards. This builds the boot images
for the Cortex-R5 processors:
cp $TI_LINUX_FIRMWARE/ti-linux-firmware/ti-sysfw/ti-fs-firmware-am62x-gp.bin firmware/
export ARCH=arm CROSS_COMPILE=$CROSS_COMPILE_32
make k3-r5_defconfig
make
cp images/barebox-beagleplay-r5.img $TI_BOOT/tiboot3.bin
4.32.3. Building barebox for the Cortex-A53 processors¶
The BeaglePlay image is built as part of the multi_v8_defconfig
:
export ARCH=arm CROSS_COMPILE=CROSS_COMPILE_64
make multi_v8_defconfig
make
cp images/barebox-beagleplay.img $TI_BOOT/barebox.bin
4.32.4. Building TF-A¶
The Arm Trusted Firmware is built from https://github.com/ARM-software/arm-trusted-firmware.git:
make CROSS_COMPILE=$CROSS_COMPILE_64 ARCH=aarch64 PLAT=k3 SPD=opteed \
TARGET_BOARD=lite
cp build/k3/lite/release/bl31.bin $TI_BOOT/bl31.bin
4.32.5. Bulding OP-TEE¶
OP-TEE is built from https://github.com/OP-TEE/optee_os.git:
make CROSS_COMPILE64=$CC64 CFG_ARM64_core=y CFG_WITH_SOFTWARE_PRNG=y \
PLATFORM=k3-am62x
cp out/arm-plat-k3/core/tee-raw.bin $TI_BOOT/optee.bin
4.32.6. Copying ti-dm.bin¶
The ti-dm.bin
binary is part of ti-linux-firmware.git, this needs to be
copied to the eMMC/SD as well:
cp $TI_LINUX_FIRMWARE/ti-dm/am62xx/ipc_echo_testb_mcu1_0_release_strip.xer5f $TI_BOOT/ti-dm.bin