3.9. ARM Trusted Firmware-AΒΆ

Overview

Trusted Firmware-A (TF-A) provides a reference implementation of secure world software for Armv7-A and Armv8-A, including a Secure Monitor executing at Exception Level 3 (EL3).

ATF is used as the initial start code on ARMv8-A cores for all K3 platforms. After setting up the initial core state and applying any needed errata fixes it sets up itself as the EL3 monitor handler. Following that, it installs the secure world software (OP-TEE) and passes execution on to either the Linux kernel or U-Boot in the non-secure world.


Getting the ATF Source Code

The pre-built TF-A binary should be packaged in TI Processor SDK: <path-to-processor-sdk>/board-support/prebuilt-images/<optional-build-machine-name>/bl31.bin. Use this binary since it has been tested with TI Processor SDK.

If it is not possible to use pre-build binary, use the following:

$ git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
$ git checkout <hash>

Where <hash> is the commit shown here: TF-A.


Setting up the toolchain paths

Refer to Yocto-built SDK Toolchains section to use the toolchain packaged in the Processor SDK (recommended).

Refer to ARM toolchains to download and setup ARM toolchains, if the Processor SDK is not used.

In either of the above setups, the build commands in the next section will assume the below variables are set appropriately.

  • CROSS_COMPILE_64

Building ATF

$ make CROSS_COMPILE="$CROSS_COMPILE_64" PLAT=k3 TARGET_BOARD=generic SPD=opteed

Default load locations

+---------------------------+------------+
| ATF image                 | 0x70000000 |
+---------------------------+------------+
| OP-TEE image              | 0x9e800000 |
+---------------------------+------------+
| U-Boot/Linux kernel image | 0x80080000 |
+---------------------------+------------+
| DTB                       | 0x82000000 |
+---------------------------+------------+