Hi Marek,

On 11/24/25 8:23 PM, Marek Vasut wrote:
On 11/24/25 4:05 PM, Quentin Schulz wrote:

Hello Quentin,

Example invocation:
"
$ mkimage -E -A arm -C none -e 0xc0008000 -a 0xc0008000 -f auto \
           -d arch/arm/boot/zImage \
           -b arch/arm/boot/dts/st/stm32mp135f-dhcor-dhsbc.dtb \
           -z ../optee_os/out/arm-plat-stm32mp1/core/tee-raw.bin \
      -Z 0xde000000 \
           /path/to/output/fitImage
"

...

Which formats are supported for the --tee-file parameter? OP-TEE OS itself has multiple versions for the binary header (v1 and v2?) and we can pass either a binary (tee.bin) or an ELF (tee.elf) in binman, c.f. tools/binman/etype/tee_os.py

The raw binary only, see the example invocation above.


Must be documented then please.

[...]

OK so... On Rockchip we have TF-A and OP-TEE OS split in multiple entries with different load addresses (see @atf-seq and @tee-seq in arch/arm/dts/rockchip-u-boot.dtsi). I guess this means we wouldn't be able to use this auto FIT?

Are those multiple "versions" of these binaries or are those really separate parts of a single binary ? The later seems a bit odd. Do you have an example of such configuration?


Same binary split.

Rk3399, PX30 and RK3588 (the three Rockchip SoCs we use on our product line) have this.

- For PX30:

Checkout trusted-firmware-a repo and build with

make CROSS_COMPILE=aarch64-linux-gnu- PLAT=px30 -j`nproc`

Compile U-Boot:

export BL31=/path/to/trusted-firmware-a/build/px30/release/bl31/bl31.elf

make CROSS_COMPILE=aarch64-linux-gnu- O=build/ringneck ringneck-px30_defconfig -j`nproc`

- For RK3399:

Checkout trusted-firmware-a repo and build with

make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 -j`nproc`

Compile U-Boot:

export BL31=/path/to/trusted-firmware-a/build/rk3399/release/bl31/bl31.elf

make CROSS_COMPILE=aarch64-linux-gnu- O=build/puma puma-rk3399_defconfig -j`nproc`

For PX30:

$ mkimage -l build/ringneck/u-boot.itb
FIT description: FIT image for U-Boot with bl31 (TF-A)
Created:         Tue Nov 25 10:52:42 2025
 Image 0 (u-boot)
  Description:  U-Boot
  Created:      Tue Nov 25 10:52:42 2025
  Type:         Standalone Program
  Compression:  uncompressed
  Data Size:    659944 Bytes = 644.48 KiB = 0.63 MiB
  Architecture: AArch64
  Load Address: 0x00200000
  Entry Point:  0x00200000
  Hash algo:    sha256
Hash value: 2f6a1658befcd8330843ed5d61ee5b539000f3dca5f2b35311be064596fc94f7
 Image 1 (atf-1)
  Description:  ARM Trusted Firmware
  Created:      Tue Nov 25 10:52:42 2025
  Type:         Firmware
  Compression:  uncompressed
  Data Size:    106496 Bytes = 104.00 KiB = 0.10 MiB
  Architecture: AArch64
  OS:           ARM Trusted Firmware
  Load Address: 0x00040000
  Hash algo:    sha256
Hash value: e6d48a0c4a47d8132d8185b58a1f5e44c025eed6eb9c4328a40feec85446281e
 Image 2 (atf-2)
  Description:  ARM Trusted Firmware
  Created:      Tue Nov 25 10:52:42 2025
  Type:         Firmware
  Compression:  uncompressed
  Data Size:    129 Bytes = 0.13 KiB = 0.00 MiB
  Architecture: AArch64
  OS:           ARM Trusted Firmware
  Load Address: 0x0005a000
  Hash algo:    sha256
Hash value: 3125317584ab4860216e817612321962a0a904f14c830fd64961eaf12c15215a
 Image 3 (atf-3)
  Description:  ARM Trusted Firmware
  Created:      Tue Nov 25 10:52:42 2025
  Type:         Firmware
  Compression:  uncompressed
  Data Size:    112 Bytes = 0.11 KiB = 0.00 MiB
  Architecture: AArch64
  OS:           ARM Trusted Firmware
  Load Address: 0xff020000
  Hash algo:    sha256
Hash value: d856721b954d3b7d74bca14ae49a3ce52b17acde932bb2218f927af73c422b9b
 Image 4 (fdt-1)
  Description:  fdt-rockchip/px30-ringneck-haikou
  Created:      Tue Nov 25 10:52:42 2025
  Type:         Flat Device Tree
  Compression:  uncompressed
  Data Size:    72912 Bytes = 71.20 KiB = 0.07 MiB
  Architecture: Unknown Architecture
  Hash algo:    sha256
Hash value: 0d8d2d650a311a7085ccb883409e680daec58df83a27b76724de60465342777e
 Default Configuration: 'config-1'
 Configuration 0 (config-1)
  Description:  rockchip/px30-ringneck-haikou.dtb
  Kernel:       unavailable
  Firmware:     atf-1
  FDT:          fdt-1
  Loadables:    u-boot
                atf-2
                atf-3

According to datasheet:

0x00040000 = DRAM
0x0005a000 = DRAM
0xff020000 = PMU_MEM (SRAM?)

$ mkimage -l build/puma/u-boot.itb
FIT description: FIT image for U-Boot with bl31 (TF-A)
Created:         Tue Nov 25 10:53:47 2025
 Image 0 (u-boot)
  Description:  U-Boot
  Created:      Tue Nov 25 10:53:47 2025
  Type:         Standalone Program
  Compression:  uncompressed
  Data Size:    897112 Bytes = 876.09 KiB = 0.86 MiB
  Architecture: AArch64
  Load Address: 0x00200000
  Entry Point:  0x00200000
  Hash algo:    sha256
Hash value: 5da93c500366e99d5fe3acb84b32b5757a90d8ef32fe73052bc20f6ca17f0b89
 Image 1 (atf-1)
  Description:  ARM Trusted Firmware
  Created:      Tue Nov 25 10:53:47 2025
  Type:         Firmware
  Compression:  uncompressed
  Data Size:    143360 Bytes = 140.00 KiB = 0.14 MiB
  Architecture: AArch64
  OS:           ARM Trusted Firmware
  Load Address: 0x00040000
  Hash algo:    sha256
Hash value: 30e187d1b9c029657b1a9e029e5f7ad34fbfd5f9ca4a44cb1cb48750a92cf09b
 Image 2 (atf-2)
  Description:  ARM Trusted Firmware
  Created:      Tue Nov 25 10:53:47 2025
  Type:         Firmware
  Compression:  uncompressed
  Data Size:    81 Bytes = 0.08 KiB = 0.00 MiB
  Architecture: AArch64
  OS:           ARM Trusted Firmware
  Load Address: 0x00063000
  Hash algo:    sha256
Hash value: 7380684a38dedb22d648d835934ef573c3e32a15e4b81cbc4ec158d17cb707ea
 Image 3 (atf-3)
  Description:  ARM Trusted Firmware
  Created:      Tue Nov 25 10:53:47 2025
  Type:         Firmware
  Compression:  uncompressed
  Data Size:    8024 Bytes = 7.84 KiB = 0.01 MiB
  Architecture: AArch64
  OS:           ARM Trusted Firmware
  Load Address: 0xff3b0000
  Hash algo:    sha256
Hash value: a887bbaec347403739e27430cc512922178b694ebe001e22c2cb4774254d67e6
 Image 4 (atf-4)
  Description:  ARM Trusted Firmware
  Created:      Tue Nov 25 10:53:47 2025
  Type:         Firmware
  Compression:  uncompressed
  Data Size:    8192 Bytes = 8.00 KiB = 0.01 MiB
  Architecture: AArch64
  OS:           ARM Trusted Firmware
  Load Address: 0xff8c0000
  Hash algo:    sha256
Hash value: 67bf4dd100c6c99dbbf76c0b19072e6e9756383925795d94ced000c2a7cf3b9e
 Image 5 (atf-5)
  Description:  ARM Trusted Firmware
  Created:      Tue Nov 25 10:53:47 2025
  Type:         Firmware
  Compression:  uncompressed
  Data Size:    0 Bytes = 0.00 KiB = 0.00 MiB
  Architecture: AArch64
  OS:           ARM Trusted Firmware
  Load Address: 0xff8c2000
  Hash algo:    sha256
Hash value: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
 Image 6 (fdt-1)
  Description:  fdt-rockchip/rk3399-puma-haikou
  Created:      Tue Nov 25 10:53:47 2025
  Type:         Flat Device Tree
  Compression:  uncompressed
  Data Size:    97832 Bytes = 95.54 KiB = 0.09 MiB
  Architecture: Unknown Architecture
  Hash algo:    sha256
Hash value: 5439f6f77ab01fa191a6a69a8691165669497fe74fc909f13a6d448b1004d629
 Default Configuration: 'config-1'
 Configuration 0 (config-1)
  Description:  rockchip/rk3399-puma-haikou.dtb
  Kernel:       unavailable
  Firmware:     atf-1
  FDT:          fdt-1
  Loadables:    u-boot
                atf-2
                atf-3
                atf-4
                atf-5

According to the datasheet:

0x00040000 = RAM
0x00063000 = RAM
0xff3b0000 = INTMEM1 (SRAM)
0xff8c0000 = INTMEM0 (SRAM)
0xff8c2000 = INTMEM0 (SRAM)

RK3399 is a special case because TF-A is running both on A and M cores.

Cheers,
Quentin

Reply via email to