Skip to main content
Version: BSP 7.x.y

Specifics: Build U-Boot for TI AM62x-based SoMs

Introduction​

This article describes additional specific steps about the compilation and the configuration of the boot container of the Toradex TI AM62x-based System on Module.

Prerequisites​

Before continuing with this article, one must follow the steps in the article Build U-Boot From Source Code.

Make sure swig, yamllint, python3-pyelftools and python3-jsonschema packages are installed on the host machine.

caution

Since the TI AM62 SoC has cores with 32-bit and 64-bit architectures, the cross-compilation environment must be setup for both architectures in the Prepare the Host Machine for Cross-Compilation section of the article Build U-Boot From Source Code.

Build U-Boot​

For the TI AM62x-based modules, the U-Boot build process must be done for both the A53 and R5 processors. Thus, the steps bring instructions on how to build them.

Get the Sources​

The following steps are intended to be run from the ~/workdir directory, created previously.

  1. Get the U-Boot source code: For Verdin AM62, which is a downstream-based module, U-Boot is fetched from https://git.toradex.com/u-boot-toradex.git.

    $ git clone -b <u-boot-git-branch> https://git.toradex.com/u-boot-toradex.git
    $ export UBOOT_DIR=$(pwd)/u-boot-toradex
  2. Get the binary-only System Firmware (SYSFW):

    $ git clone git://git.ti.com/k3-image-gen/k3-image-gen.git
    $ export K3_DIR=$(pwd)/k3-image-gen
  3. Get the TI Linux Firmware:

    $ git clone -b ti-linux-firmware git://git.ti.com/processor-firmware/ti-linux-firmware.git
    $ export TI_LINUX_FW_DIR=$(pwd)/ti-linux-firmware
  4. Get the ARM Trusted Firmware (ATF/TF-A):

    $ git clone https://github.com/ARM-software/arm-trusted-firmware.git
    $ export TFA_DIR=$(pwd)/arm-trusted-firmware
  5. Get the OP-TEE image source code:

    $ git clone https://github.com/OP-TEE/optee_os.git
    $ export OPTEE_DIR=$(pwd)/optee_os
  6. Get the K3 Security development package:

    $ git clone https://git.ti.com/git/security-development-tools/core-secdev-k3.git -b master
    $ export CORE_SECDEV_K3_DIR=$(pwd)/core-secdev-k3

The next steps include commands which are intended to be run from the root of the U-Boot source tree unless otherwise specified. The root of the U-Boot tree is the top-level directory u-boot-toradex.

Build ARM Trusted Firmware (ATF/TF-A):​

ATF is used as the initial start code on ARMv8-A cores for all K3 platforms. To compile it, go to the directory where you cloned the ARM Trusted Firmware and compile it for the ARM64 architecture.

$ cd $TFA_DIR
$ export ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-
$ unset TFA_EXTRA_ARGS
$ make PLAT=k3 SPD=opteed $TFA_EXTRA_ARGS TARGET_BOARD=lite

Build OP-TEE Image:​

Quoting the TI documentation:

OP-TEE is a Trusted Execution Environment (TEE) designed as a companion to a non-secure Linux kernel running on Arm Cortex-A cores using the TrustZone technology.

To build the OP-TEE image, go to the directory where you clone it and perform the steps below:

$ cd $OPTEE_DIR
$ export OPTEE_EXTRA_ARGS="CFG_WITH_SOFTWARE_PRNG=y"
$ export ARCH=arm
$ export CROSS_COMPILE=arm-none-linux-gnueabihf-
$ export CROSS_COMPILE64=aarch64-none-linux-gnu-
$ make PLATFORM=k3-am62x CFG_ARM64_core=y $OPTEE_EXTRA_ARGS

Build U-Boot for R5​

  1. In the U-boot directory, compile the source code for the R5 core:

    $ cd $UBOOT_DIR
    $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- verdin-am62_r5_defconfig
    $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- BINMAN_INDIRS=$TI_LINUX_FW_DIR
  2. Go to the System Firmware directory and build it.

    $ cd $K3_DIR
    $ make SOC=am62x SOC_TYPE="hs-fs" TI_SECURE_DEV_PKG=$CORE_SECDEV_K3_DIR SBL=$UBOOT_DIR/spl/u-boot-spl.bin SYSFW_DIR=$TI_LINUX_FW_DIR/ti-sysfw
    $ cp tiboot3-am62x-hs-fs-evm.bin ../tiboot3-am62x-hs-fs-verdin.bin

Build U-Boot for A53​

In the U-boot directory, compile the source code for the A53 cores:

$ cd $UBOOT_DIR 
$ export ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-
$ make verdin-am62_a53_defconfig
$ make BINMAN_INDIRS=$TI_LINUX_FW_DIR \
BL31=$TFA_DIR/build/k3/lite/release/bl31.bin \
TEE=$OPTEE_DIR/out/arm-plat-k3/core/tee-raw.bin
$ cp tispl.bin ../
$ cp u-boot.img ../

Deploy the U-Boot binary to an Image​

Now that the adjustments were made, return to the Build U-Boot From Source Code article to deploy the U-Boot binary to an image.



Send Feedback!