cancel
Showing results for 
Search instead for 
Did you mean: 

How do I build and boot ATF and OP-TEE?

JGuy1
Associate II

Hi! It's my understanding that ST are moving a lot of work for power management and clocking out of ATF and to OP-TEE. In preparation for this shift my co-developer and I have started out trying to build and run the following software on the STM32MP157F-DK2:

  • linux v5.15-stm32mp-r1
  • u-boot v2021.10-stm32mp-r1
  • arm-trusted-firmware v2.6-stm32mp-r1
  • optee_os 3.16.0-stm32mp-r1

Unfortunately the only serial output we get is:

NOTICE:  CPU: STM32MP157FAC Rev.Z
NOTICE:  Model: STMicroelectronics STM32MP157F-DK2 Discovery Board
NOTICE:  Board: MB1272 Var4.0 Rev.C-02
NOTICE:  BL2: v2.6-stm32mp1-r1.0(release):v2.6-stm32mp-r1
NOTICE:  BL2: Built : 19:38:48, Jun 23 2022
NOTICE:  BL2: Booting BL32

Build commands are:

build optee:
 
make ARCH=arm CROSS_COMPILE=/opt/armv7-eabihf--glibc--bleeding-edge-2021.11-1/bin/arm-linux- CFG_EMBED_DTB_SOURCE_FILE=stm32mp157f-dk2.dts PLATFORM=stm32mp1 -j16
 
build ATF:
 
make CROSS_COMPILE=/opt/armv7-eabihf--glibc--bleeding-edge-2021.11-1/bin/arm-linux- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 DTB_FILE_NAME=stm32mp157f-dk2.dtb STM32MP_SDMMC=1 -j16
 
build fip:
 
make CROSS_COMPILE=/opt/armv7-eabihf--glibc--bleeding-edge-2021.11-1/bin/arm-linux- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 AARCH32_SP=optee DTB_FILE_NAME=stm32mp157f-dk2.dtb BL33=../u-boot/u-boot-nodtb.bin BL33_CFG=../u-boot/u-boot.dtb BL32=../optee_os/out/arm-plat-stm32mp1/core/tee-header_v2.bin BL32_EXTRA1=../optee_os/out/arm-plat-stm32mp1/core/tee-pager_v2.bin BL32_EXTRA2=../optee_os/out/arm-plat-stm32mp1/core/tee-pageable_v2.bin fip -j16

This is using the latest Bootlin toolchain.

Trying with ATF v2.4 produces an error about hashing:

NOTICE:  CPU: STM32MP157FAC Rev.Z
NOTICE:  Model: STMicroelectronics STM32MP157F-DK2 Discovery Board
NOTICE:  Board: MB1272 Var4.0 Rev.C-02
NOTICE:  BL2: v2.4-r2.0(release):v2.4-stm32mp-r2
NOTICE:  BL2: Built : 19:45:55, Jun 23 2022
NOTICE:  BL2: Booting BL32
E/TC:0 0 init_runtime:476 Hash failed for page 3 at 0x29803000: res 0xffff000f
E/TC:0 0 Panic

ATF v2.6 with an older OP-TEE v3.12 produces a different hashing error:

NOTICE:  CPU: STM32MP157FAC Rev.Z
NOTICE:  Model: STMicroelectronics STM32MP157F-DK2 Discovery Board
NOTICE:  Board: MB1272 Var4.0 Rev.C-02
NOTICE:  BL2: v2.6-stm32mp1-r1.0(release):v2.6-stm32mp-r1
NOTICE:  BL2: Built : 19:29:05, Jun 23 2022
NOTICE:  BL2: Booting BL32
I/TC: Early console on UART#4
I/TC: 
I/TC: Pager is enabled. Hashes: 2080 bytes
E/TC:0 0 init_runtime:464 Hash failed for page 0 at 0x29600000: res 0xffff000f
E/TC:0 0 Panic

Finally, building with both older versions ATF v2.4 and OP-TEE v2.13 gives this:

NOTICE:  CPU: STM32MP157FAC Rev.Z
NOTICE:  Model: STMicroelectronics STM32MP157F-DK2 Discovery Board
NOTICE:  Board: MB1272 Var4.0 Rev.C-02
NOTICE:  BL2: v2.4-r2.0(release):v2.4-stm32mp-r2
NOTICE:  BL2: Built : 19:04:12, Jun 23 2022
NOTICE:  BL2: Booting BL32
I/TC: Early console on UART#4
I/TC: 
I/TC: Pager is enabled. Hashes: 2080 bytes
I/TC: Pager pool size: 100kB
I/TC: Non-secure external DT found
I/TC: Embedded DTB found
I/TC: OP-TEE version: 3.12.0-stm32mp-r2 (gcc version 11.2.0 (Buildroot toolchains.bootlin.com-2021.11-1)) #1 Thu Jun 23 17:00:17 UTC 2022 arm
I/TC: Primary CPU initializing
I/TC: Platform stm32mp1: flavor PLATFORM_FLAVOR - DT stm32mp157f-dk2.dts
I/TC: DT clock tree configurations were ignored
I/TC: DTB enables console (non-secure)
I/TC: Primary CPU switching to normal world boot
E/LD:  init_elf:437 sys_open_ta_bin(a8cfe406-d4f5-4a2e-9f8d-a25dc754c099)
E/TC:? 0 ldelf_init_with_ldelf:126 ldelf failed with res: 0xffff0009
E/LD:  init_elf:437 sys_open_ta_bin(a8cfe406-d4f5-4a2e-9f8d-a25dc754c099)
E/TC:? 0 ldelf_init_with_ldelf:126 ldelf failed with res: 0xffff0009
E/LD:  init_elf:437 sys_open_ta_bin(a8cfe406-d4f5-4a2e-9f8d-a25dc754c099)
E/TC:? 0 ldelf_init_with_ldelf:126 ldelf failed with res: 0xffff000c

The ldelf errors seem to be expected- but U-Boot serial output isn't shown either even though it seems to be trying to communicate via SCMI.

These same results are produced when building using buildroot and bumping package versions.

1 ACCEPTED SOLUTION

Accepted Solutions
JGuy1
Associate II

I'm just going to bump in after about a month of this: The problem was unrelated to the secure side, but with u-boot: We were using stm32mp15_trusted_defconfig and didn't update to stm32mp15_defconfig during the migration, assuming the secure side was the problem.

View solution in original post

3 REPLIES 3
Olivier GALLIEN
ST Employee

Hi @JGuy​ ,

Thanks for your interest in OpenSTLinux next step, but you get component of a release which is not yet officially release.

Please be patient. In few days this will be announced and provided with associated documentation in our Wiki guide. stm32mpu

Olivier

Olivier GALLIEN
In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
Olivier GALLIEN
ST Employee

Hi @JGuy​ ,

DV4.0 is available !

https://community.st.com/s/question/0D53W00001dwKXQSA2/stm32mpu-ecosystem-release-v400-release-is-online-

Enjoy 😊

Olivier

Olivier GALLIEN
In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
JGuy1
Associate II

I'm just going to bump in after about a month of this: The problem was unrelated to the secure side, but with u-boot: We were using stm32mp15_trusted_defconfig and didn't update to stm32mp15_defconfig during the migration, assuming the secure side was the problem.