DESK-RZ-L/Development/Building Trusted Firmware-A

From DAVE Developer's Wiki
Jump to: navigation, search
History
Issue Date Notes
2025/12/16 DESK-RZ-L-1.0.0 release


Building Trusted Firmware-A[edit | edit source]

Quick Reference[edit | edit source]

Repository Information
URL https://git.dave.eu/git/desk-rz-l/trusted-firmware-a.git
Stable branch desk-rz-l-1.x.x
Stable tag desk-rz-l-1.0.0
BL2 & FIP Images
Platform SOM ConfigID
EB23 with ZERO SOM 0x00000001

Instructions[edit | edit source]

To build the BL2 and FIP boot binaries, you must first build U-Boot. Refer to Building U-Boot with make.

Once the U-Boot binaries are available, copy the u-boot.bin file into the Trusted Firmware-A (TF-A) project directory.

The build process requires multiple steps; it is not a single command. A helper script is provided in the project to simplify the build: build.sh.

Example of building:

dvdk@vagrant:~/desk-rz-l/trusted-firmware-a$ source ~/desk-rz-l/desk-rz-l-1.0.0_env.sh 
dvdk@vagrant:~/desk-rz-l/trusted-firmware-a$ ./build.sh 
  REALCLEAN
  CC      bl2/aarch64/bl2_arch_setup.c
  CC      bl2/bl2_image_load_v2.c
  CC      bl2/bl2_main.c
  CC      common/desc_image_load.c
  CC      drivers/delay_timer/delay_timer.c
  CC      drivers/delay_timer/generic_delay_timer.c
  CC      drivers/io/io_fip.c
  CC      drivers/io/io_memmap.c
  CC      drivers/io/io_storage.c
  CC      lib/cpus/errata_report.c
  CC      plat/renesas/rz/common/bl2_plat_mem_params_desc.c
  CC      plat/renesas/rz/common/drivers/emmc/emmc_cmd.c
  CC      plat/renesas/rz/common/drivers/emmc/emmc_init.c
  CC      plat/renesas/rz/common/drivers/emmc/emmc_interrupt.c
  CC      plat/renesas/rz/common/drivers/emmc/emmc_mount.c
  CC      plat/renesas/rz/common/drivers/emmc/emmc_read.c
  CC      plat/renesas/rz/common/drivers/emmc/emmc_utility.c
  CC      plat/renesas/rz/common/drivers/io/io_emmcdrv.c
  CC      plat/renesas/rz/common/drivers/io/io_sddrv.c
  CC      plat/renesas/rz/common/drivers/sd/sd_cd.c
  CC      plat/renesas/rz/common/drivers/sd/sd_cmd.c
  CC      plat/renesas/rz/common/drivers/sd/sd_dev_low.c
  CC      plat/renesas/rz/common/drivers/sd/sd_init.c
  CC      plat/renesas/rz/common/drivers/sd/sd_int.c
  CC      plat/renesas/rz/common/drivers/sd/sd_mount.c
  CC      plat/renesas/rz/common/drivers/sd/sd_read.c
  CC      plat/renesas/rz/common/drivers/sd/sd_trns.c
  CC      plat/renesas/rz/common/drivers/sd/sd_util.c
  CC      plat/renesas/rz/common/drivers/sd/sd_write.c
  CC      plat/renesas/rz/common/drivers/xspi_puccini.c
  CC      plat/renesas/rz/common/plat_image_load.c
  CC      plat/renesas/rz/soc/t2h/bl2_plat_setup.c
  CC      plat/renesas/rz/soc/t2h/drivers/cpg.c
  CC      plat/renesas/rz/soc/t2h/drivers/ddr/ddr.c
  CC      plat/renesas/rz/soc/t2h/drivers/ddr/ddr_misc.c
  CC      plat/renesas/rz/soc/t2h/drivers/ddr/ddr_param_def_lpddr4.c
  CC      plat/renesas/rz/soc/t2h/drivers/ddr/ddr_setup_lpddr4.c
  CC      plat/renesas/rz/soc/t2h/drivers/pfc.c
  CC      common/bl_common.c
  CC      common/tf_log.c
  CC      drivers/console/multi_console.c
  CC      plat/common/plat_bl_common.c
  CC      plat/common/plat_log_common.c
  CC      plat/common/aarch64/plat_common.c
  CC      lib/compiler-rt/builtins/popcountdi2.c
  CC      lib/compiler-rt/builtins/popcountsi2.c
  CC      drivers/arm/tzc/tzc400.c
  CC      plat/renesas/rz/common/drivers/otp/puccini/otp_drv.c
  CC      lib/xlat_tables_v2/aarch64/xlat_tables_arch.c
  CC      lib/xlat_tables_v2/xlat_tables_context.c
  CC      lib/xlat_tables_v2/xlat_tables_core.c
  CC      lib/xlat_tables_v2/xlat_tables_utils.c
  CC      plat/renesas/rz/common/plat_rz_common.c
  CC      plat/renesas/rz/common/drivers/syc.c
  CC      plat/renesas/rz/soc/t2h/plat_security.c
  CC      plat/renesas/rz/soc/t2h/plat_storage.c
  CC      plat/renesas/rz/soc/t2h/drivers/sys.c
  AS      bl2/aarch64/bl2_el3_entrypoint.S
  AS      bl2/aarch64/bl2_el3_exceptions.S
  AS      bl2/aarch64/bl2_run_next_image.S
  AS      common/aarch64/early_exceptions.S
  AS      lib/cpus/aarch64/cpu_helpers.S
  AS      lib/cpus/aarch64/dsu_helpers.S
  AS      lib/locks/exclusive/aarch64/spinlock.S
  AS      plat/common/aarch64/platform_up_stack.S
  AS      common/aarch64/debug.S
  AS      lib/aarch64/cache_helpers.S
  AS      lib/aarch64/misc_helpers.S
  AS      plat/common/aarch64/platform_helpers.S
  AS      lib/cpus/aarch64/cortex_a55.S
  AS      lib/xlat_tables_v2/aarch64/enable_mmu.S
  AS      plat/renesas/rz/common/aarch64/plat_helpers.S
  AS      plat/renesas/rz/common/drivers/scifa_puccini.S
  PP      bl2/bl2_el3.ld.S
  CC      lib/libc/abort.c
  CC      lib/libc/assert.c
  CC      lib/libc/exit.c
  CC      lib/libc/memchr.c
  CC      lib/libc/memcmp.c
  CC      lib/libc/memcpy.c
  CC      lib/libc/memmove.c
  CC      lib/libc/memrchr.c
  CC      lib/libc/memset.c
  CC      lib/libc/printf.c
  CC      lib/libc/putchar.c
  CC      lib/libc/puts.c
  CC      lib/libc/snprintf.c
  CC      lib/libc/strchr.c
  CC      lib/libc/strcmp.c
  CC      lib/libc/strlcat.c
  CC      lib/libc/strlcpy.c
  CC      lib/libc/strlen.c
  CC      lib/libc/strncmp.c
  CC      lib/libc/strnlen.c
  CC      lib/libc/strrchr.c
  CC      lib/libc/strtok.c
  CC      lib/libc/strtoul.c
  CC      lib/libc/strtoll.c
  CC      lib/libc/strtoull.c
  CC      lib/libc/strtol.c
  AS      lib/libc/aarch64/setjmp.S
  AR      /home/dvdk/desk-rz-l/trusted-firmware-a/build/t2h/release/lib/libc.a
  LD      /home/dvdk/desk-rz-l/trusted-firmware-a/build/t2h/release/bl2/bl2.elf
  BIN     /home/dvdk/desk-rz-l/trusted-firmware-a/build/t2h/release/bl2.bin

Built /home/dvdk/desk-rz-l/trusted-firmware-a/build/t2h/release/bl2.bin successfully

  OD      /home/dvdk/desk-rz-l/trusted-firmware-a/build/t2h/release/bl2/bl2.dump
  CC      bl31/bl31_context_mgmt.c
  CC      bl31/bl31_main.c
  CC      bl31/interrupt_mgmt.c
  CC      common/runtime_svc.c
  CC      drivers/arm/gic/v3/arm_gicv3_common.c
  CC      drivers/arm/gic/v3/gic-x00.c
  CC      drivers/arm/gic/v3/gicdv3_helpers.c
  CC      drivers/arm/gic/v3/gicrv3_helpers.c
  CC      drivers/arm/gic/v3/gicv3_helpers.c
  CC      drivers/arm/gic/v3/gicv3_main.c
  CC      lib/cpus/errata_report.c
  CC      lib/el3_runtime/aarch64/context_mgmt.c
  CC      lib/el3_runtime/cpu_data_array.c
  CC      lib/extensions/spe/spe.c
  CC      lib/extensions/sve/sve.c
  CC      lib/locks/bakery/bakery_lock_normal.c
  CC      lib/psci/psci_common.c
  CC      lib/psci/psci_main.c
  CC      lib/psci/psci_mem_protect.c
  CC      lib/psci/psci_off.c
  CC      lib/psci/psci_on.c
  CC      lib/psci/psci_setup.c
  CC      lib/psci/psci_suspend.c
  CC      lib/psci/psci_system_off.c
  CC      plat/common/plat_gicv3.c
  CC      plat/common/plat_psci_common.c
  CC      plat/renesas/rz/common/plat_gic.c
  CC      plat/renesas/rz/common/plat_topology.c
  CC      plat/renesas/rz/common/rz_sip_svc.c
  CC      plat/renesas/rz/soc/t2h/bl31_plat_setup.c
  CC      plat/renesas/rz/soc/t2h/plat_pm.c
  CC      plat/renesas/rz/soc/t2h/rz_plat_sip_handler.c
  CC      services/arm_arch_svc/arm_arch_svc_setup.c
  CC      services/std_svc/std_svc_setup.c
  CC      common/bl_common.c
  CC      common/tf_log.c
  CC      drivers/console/multi_console.c
  CC      plat/common/plat_bl_common.c
  CC      plat/common/plat_log_common.c
  CC      plat/common/aarch64/plat_common.c
  CC      lib/compiler-rt/builtins/popcountdi2.c
  CC      lib/compiler-rt/builtins/popcountsi2.c
  CC      drivers/arm/tzc/tzc400.c
  CC      plat/renesas/rz/common/drivers/otp/puccini/otp_drv.c
  CC      lib/xlat_tables_v2/aarch64/xlat_tables_arch.c
  CC      lib/xlat_tables_v2/xlat_tables_context.c
  CC      lib/xlat_tables_v2/xlat_tables_core.c
  CC      lib/xlat_tables_v2/xlat_tables_utils.c
  CC      plat/renesas/rz/common/plat_rz_common.c
  CC      plat/renesas/rz/common/drivers/syc.c
  CC      plat/renesas/rz/soc/t2h/plat_security.c
  CC      plat/renesas/rz/soc/t2h/plat_storage.c
  CC      plat/renesas/rz/soc/t2h/drivers/sys.c
  AS      bl31/aarch64/bl31_entrypoint.S
  AS      bl31/aarch64/crash_reporting.S
  AS      bl31/aarch64/ea_delegate.S
  AS      bl31/aarch64/runtime_exceptions.S
  AS      lib/cpus/aarch64/cpu_helpers.S
  AS      lib/cpus/aarch64/dsu_helpers.S
  AS      lib/cpus/aarch64/wa_cve_2017_5715_bpiall.S
  AS      lib/cpus/aarch64/wa_cve_2017_5715_mmu.S
  AS      lib/el3_runtime/aarch64/context.S
  AS      lib/el3_runtime/aarch64/cpu_data.S
  AS      lib/locks/exclusive/aarch64/spinlock.S
  AS      lib/psci/aarch64/psci_helpers.S
  AS      plat/common/aarch64/platform_mp_stack.S
  AS      common/aarch64/debug.S
  AS      lib/aarch64/cache_helpers.S
  AS      lib/aarch64/misc_helpers.S
  AS      plat/common/aarch64/platform_helpers.S
  AS      lib/cpus/aarch64/cortex_a55.S
  AS      lib/xlat_tables_v2/aarch64/enable_mmu.S
  AS      plat/renesas/rz/common/aarch64/plat_helpers.S
  AS      plat/renesas/rz/common/drivers/scifa_puccini.S
  PP      bl31/bl31.ld.S
  LD      /home/dvdk/desk-rz-l/trusted-firmware-a/build/t2h/release/bl31/bl31.elf
  BIN     /home/dvdk/desk-rz-l/trusted-firmware-a/build/t2h/release/bl31.bin

Built /home/dvdk/desk-rz-l/trusted-firmware-a/build/t2h/release/bl31.bin successfully

  HOSTCC  fiptool.c
  HOSTCC  tbbr_config.c
  HOSTLD  fiptool

Built fiptool successfully

EL3 Runtime Firmware BL31: offset=0x90, size=0x6069, cmdline="--soc-fw"
Non-Trusted Firmware BL33: offset=0x6100, size=0xAACB8, cmdline="--nt-fw"

Built /home/dvdk/desk-rz-l/trusted-firmware-a/build/t2h/release/fip.bin successfully

#Get Bl2 filesize and align to 0x200 (512) bytes
bl2_filesize=`find "./build/t2h/release/bl2.bin" -printf "%s"` ; \
bl2_filesize=`expr $bl2_filesize + 511` ; \
bl2_filesize=`expr $bl2_filesize / 512` ; \
bl2_filesize=`expr $bl2_filesize \* 512` ; \
#Convert size to Hex \
bl2_filesize=`printf "0x%08x" $bl2_filesize` ; \
python3 ./tools/renesas/rzt2h_boot_param/parameter_block_generator.py --output=./build/t2h/release/bp_xspi0.bin --cache_flag=1 --loader_addr=0x40000200 --loader_size=$bl2_filesize --dest_addr=0x10001000 --pll0_ssc_ctr_v=0x00010000 --bootcpu_flg=1  --xspi_cssctl_v=0x07FFFFFF ; \
python3 ./tools/renesas/rzt2h_boot_param/parameter_block_generator.py --output=./build/t2h/release/bp_xspi1.bin --cache_flag=1 --loader_addr=0x50000200 --loader_size=$bl2_filesize --dest_addr=0x10001000 --pll0_ssc_ctr_v=0x00010000 --bootcpu_flg=1  --xspi_cssctl_v=0x07FFFFFF ; \
python3 ./tools/renesas/rzt2h_boot_param/parameter_block_generator.py --output=./build/t2h/release/bp_emmc.bin  --cache_flag=1 --loader_addr=0x00000400 --loader_size=$bl2_filesize --dest_addr=0x10001000 --pll0_ssc_ctr_v=0x00010000 --bootcpu_flg=1 ; \
python3 ./tools/renesas/rzt2h_boot_param/parameter_block_generator.py --output=./build/t2h/release/bp_esd.bin   --cache_flag=1 --loader_addr=0x00001000 --loader_size=$bl2_filesize --dest_addr=0x10001000 --pll0_ssc_ctr_v=0x00010000 --bootcpu_flg=1
Creation of ./build/t2h/release/bp_xspi0.bin is complete
Creation of ./build/t2h/release/bp_xspi1.bin is complete
Creation of ./build/t2h/release/bp_emmc.bin is complete
Creation of ./build/t2h/release/bp_esd.bin is complete
#BL2 with XSPI0 Boot parameters
cat ./build/t2h/release/bp_xspi0.bin ./build/t2h/release/bl2.bin > ./build/t2h/release/bl2_bp_xspi0.bin
objcopy -I binary -O srec --adjust-vma=0x10100000 --srec-forceS3 ./build/t2h/release/bl2_bp_xspi0.bin ./build/t2h/release/bl2_bp_xspi0.srec
#BL2 with XSPI1 Boot parameters
cat ./build/t2h/release/bp_xspi1.bin ./build/t2h/release/bl2.bin > ./build/t2h/release/bl2_bp_xspi1.bin
objcopy -I binary -O srec --adjust-vma=0x10100000 --srec-forceS3 ./build/t2h/release/bl2_bp_xspi1.bin ./build/t2h/release/bl2_bp_xspi1.srec
#BL2 with eMMC Boot parameters
cat ./build/t2h/release/bp_emmc.bin ./build/t2h/release/bl2.bin > ./build/t2h/release/bl2_bp_emmc.bin
objcopy -I binary -O srec --adjust-vma=0x10100000 --srec-forceS3 ./build/t2h/release/bl2_bp_emmc.bin ./build/t2h/release/bl2_bp_emmc.srec
#BL2 with seven copies of eSD Boot parameters
cat ./build/t2h/release/bp_esd.bin ./build/t2h/release/bp_esd.bin ./build/t2h/release/bp_esd.bin ./build/t2h/release/bp_esd.bin ./build/t2h/release/bp_esd.bin ./build/t2h/release/bp_esd.bin ./build/t2h/release/bp_esd.bin ./build/t2h/release/bl2.bin > ./build/t2h/release/bl2_bp_esd.bin
objcopy -I binary -O srec --adjust-vma=0x10100000 --srec-forceS3 ./build/t2h/release/bl2_bp_esd.bin ./build/t2h/release/bl2_bp_esd.srec
#Generate FIP S-Record if FIP binary is present
if [ -f build/t2h/release/fip.bin ]; then  objcopy -I binary -O srec --adjust-vma=0x10100000 --srec-forceS3 ./build/t2h/release/fip.bin ./build/t2h/release/fip.srec ; fi ;
dvdk@vagrant:~/desk-rz-l/trusted-firmware-a$ 

The generated binaries can be found in the build/t2h/release directory.

dvdk@vagrant:~/desk-rz-l/trusted-firmware-a$ ls -la build/t2h/release/
total 6292
drwxrwxr-x 8 dvdk dvdk    4096 Dec 17 10:08 .
drwxrwxr-x 3 dvdk dvdk    4096 Dec 17 10:08 ..
drwxrwxr-x 2 dvdk dvdk    4096 Dec 17 10:08 bl2
-rwxrwxr-x 1 dvdk dvdk  201453 Dec 17 10:08 bl2.bin
-rw-rw-r-- 1 dvdk dvdk  201965 Dec 17 10:08 bl2_bp_emmc.bin
-rw-rw-r-- 1 dvdk dvdk  605998 Dec 17 10:08 bl2_bp_emmc.srec
-rw-rw-r-- 1 dvdk dvdk  205037 Dec 17 10:08 bl2_bp_esd.bin
-rw-rw-r-- 1 dvdk dvdk  615212 Dec 17 10:08 bl2_bp_esd.srec
-rw-rw-r-- 1 dvdk dvdk  201965 Dec 17 10:08 bl2_bp_xspi0.bin
-rw-rw-r-- 1 dvdk dvdk  606000 Dec 17 10:08 bl2_bp_xspi0.srec
-rw-rw-r-- 1 dvdk dvdk  201965 Dec 17 10:08 bl2_bp_xspi1.bin
-rw-rw-r-- 1 dvdk dvdk  606000 Dec 17 10:08 bl2_bp_xspi1.srec
drwxrwxr-x 2 dvdk dvdk    4096 Dec 17 10:08 bl31
-rwxrwxr-x 1 dvdk dvdk   24681 Dec 17 10:08 bl31.bin
-rw-rw-r-- 1 dvdk dvdk     512 Dec 17 10:08 bp_emmc.bin
-rw-rw-r-- 1 dvdk dvdk     512 Dec 17 10:08 bp_esd.bin
-rw-rw-r-- 1 dvdk dvdk     512 Dec 17 10:08 bp_xspi0.bin
-rw-rw-r-- 1 dvdk dvdk     512 Dec 17 10:08 bp_xspi1.bin
-rw-rw-r-- 1 dvdk dvdk  724416 Dec 17 10:08 fip.bin
-rw-rw-r-- 1 dvdk dvdk 2173332 Dec 17 10:08 fip.srec
drwxrwxr-x 2 dvdk dvdk    4096 Dec 17 10:08 lib
drwxrwxr-x 2 dvdk dvdk    4096 Dec 17 10:08 libc
drwxrwxr-x 2 dvdk dvdk    4096 Dec 17 10:08 libwrapper
drwxrwxr-x 2 dvdk dvdk    4096 Dec 17 10:08 romlib