4. Performing an Initial Build¶
Before building TF-A, the environment variable
CROSS_COMPILEmust point to the Linaro cross compiler.
It is possible to build TF-A using Clang or Arm Compiler 6. To do so
CCneeds to point to the clang or armclang binary, which will also select the clang or armclang assembler. Be aware that for Arm Compiler, the GNU linker is used by default. However for Clang LLVM linker (LLD) is used by default. In case of being needed the linker can be overridden using the
LDvariable. LLVM linker (LLD) version 9 is known to work with TF-A.
In both cases
CROSS_COMPILEshould be set as described above.
Arm Compiler 6 will be selected when the base name of the path assigned to
CCmatches the string ‘armclang’.
For AArch64 using Arm Compiler 6:
export CROSS_COMPILE=<path-to-aarch64-gcc>/bin/aarch64-none-elf- make CC=<path-to-armclang>/bin/armclang PLAT=<platform> all
Clang will be selected when the base name of the path assigned to
CCcontains the string ‘clang’. This is to allow both clang and clang-X.Y to work.
For AArch64 using clang:
export CROSS_COMPILE=<path-to-aarch64-gcc>/bin/aarch64-none-elf- make CC=<path-to-clang>/bin/clang PLAT=<platform> all
Change to the root directory of the TF-A source tree and build.
make PLAT=<platform> all
make PLAT=<platform> ARCH=aarch32 AARCH32_SP=sp_min all
PLATis not specified,
fvpis assumed by default. See the Build Options document for more information on available build options.
(AArch32 only) Currently only
AARCH32_SPis the AArch32 EL3 Runtime Software and it corresponds to the BL32 image. A minimal
AARCH32_SP, sp_min, is provided by TF-A to demonstrate how PSCI Library can be integrated with an AArch32 EL3 Runtime Software. Some AArch32 EL3 Runtime Software may include other runtime services, for example Trusted OS services. A guide to integrate PSCI library with AArch32 EL3 Runtime Software can be found at PSCI Library Integration guide for Armv8-A AArch32 systems.
(AArch64 only) The TSP (Test Secure Payload), corresponding to the BL32 image, is not compiled in by default. Refer to the Test Secure Payload (TSP) and Dispatcher (TSPD) document for details on building the TSP.
By default this produces a release version of the build. To produce a debug version instead, refer to the “Debugging options” section below.
The build process creates products in a
builddirectory tree, building the objects and binaries for each boot loader stage in separate sub-directories. The following boot loader binary files are created from the corresponding ELF files:
build/<platform>/<build-type>/bl32.bin(mandatory for AArch32)
<platform>is the name of the chosen platform and
release. The actual number of images might differ depending on the platform.
Build products for a specific build variant can be removed using:
make DEBUG=<D> PLAT=<platform> clean
1, as specified when building.
The build tree can be removed completely using:
Copyright (c) 2020, Arm Limited. All rights reserved.