STM32MP15 U-Boot

This article briefly describes the STM32MP15x lines More info.png support in U-Boot.

1 STM32MP15x lines More info.png support[edit]

For detailed information, please read the file in the delivered U-Boot code = doc/board/st/stm32mp1.rst or the stm32mp1 documentation generated by make htlmdocs[1].

Also available in official U-Boot Git.

Code :

Configuration Files:

2 Selecting targets : choose defconfig and Device Tree[edit]

The STM32 MPU boot chain is supported by one U-Boot configuration with defconfig = stm32mp15_trusted_defconfig

Several boards are supported with the associated device-tree (same name as kernel):

Board part number Device tree Description
STM32MP157A-EV1 Evaluation board More info green.png stm32mp157a-ev1 MB1262+MB1263
STM32MP157C-EV1 Evaluation board More info green.png stm32mp157c-ev1
STM32MP157D-EV1 Evaluation board More info green.png stm32mp157d-ev1
STM32MP157F-EV1 Evaluation board More info green.png stm32mp157f-ev1
STM32MP157A-DK1 Discovery kit More info green.png stm32mp157a-dk1 MB1272
STM32MP157D-DK1 Discovery kit More info green.png stm32mp157d-dk1
STM32MP157C-DK2 Discovery kit More info green.png stm32mp157c-dk2 MB1272+MB1407
STM32MP157F-DK2 Discovery kit More info green.png stm32mp157f-dk2

For information the 'Evaluation' daughter-board only (MB1263 without MB1262) is also supported by stm32mp15*-ed1.dts device tree files.

3 Compilation[edit]

see U-Boot_overview#U-Boot_build

With the defconfig file: stm32mp15_trusted_defconfig

 PC $> make stm32mp15_trusted_defconfig
 PC $> make DEVICE_TREE=<Device tree> all

The supported variables are:

  • DEVICE_TREE: select in arch/arm/dts the device tree that is used
  • KBUILD_OUTPUT: change the destination directory for the build
  • EXT_DTB: select external device tree

Nota: All the compiled device tree are available in $KBUILD_OUTPUT/arch/arm/dts/*.dtb.
You can select them instead of u-boot.dtb without U-Boot recompilation.

The ouput file is u-boot.stm32 for ecosystem release ≤ v2.1.0 or if you activate CONFIG_STM32MP15x_STM32IMAGE in your defconfig for ecosystem release v3.0.0 More info.png (this temporary option is only introduced to facilitate the FIP migration but it will be removed in the next EcosystemRelease).

4 U-Boot integration in FIP[edit]

U-Boot binary and its associated device tree are part of the FIP binary, created or updated with TF-A Makefile or with fiptools:

  • BL33_CFG or --hw-config = u-boot.dtb
  • BL33 or --nt-fw = u-boot-nodtb.bin

5 SPL compilation[edit]

The alternate boot chain with SPL is also supported by "stm32mp15_basic_defconfig" but only for U-Boot_SPL:_DDR_interactive_mode

With the defconfig file: stm32mp15_basic_defconfig

 PC $> make stm32mp15_basic_defconfig
 PC $> make DEVICE_TREE=<Device tree> all

The resulting U-Boot files are located in your build directory:

  • u-boot-spl.stm32 : FSBL = SPL binary with STM32 image header, loaded by ROM code
  • u-boot.img : SSBL = U-Boot binary with U-Boot image header (uImage), loaded by SPL
Warning.png This alternate boot chain with SPL is not supported/promoted by STMicroelectronics to make product.

6 Examples[edit]

6.1 STM32MP157F-EV1 Evaluation board More info green.png[edit]

 PC $> make stm32mp15_trusted_defconfig
 PC $> make DEVICE_TREE=stm32mp157f-ev1 all

6.2 STM32MP157C-EV1 Evaluation board More info green.png[edit]

 PC $> make stm32mp15_trusted_defconfig
 PC $> make DEVICE_TREE=stm32mp157c-ev1 all

6.3 STM32MP157D-DK1 Discovery kit More info green.png[edit]

 PC $> make stm32mp15_trusted_defconfig
 PC $> make DEVICE_TREE=stm32mp157d-dk1 all

6.4 STM32MP157C-DK2 Discovery kit More info green.png[edit]

Using export to select the device tree

 PC $> export KBUILD_OUTPUT=../build/stm32mp15_trusted
 PC $> export DEVICE_TREE=stm32mp157c-dk2
 PC $> make stm32mp15_trusted_defconfig
 PC $> make all

6.5 Custom board with external device tree[edit]

 PC $> make stm32mp15_trusted_defconfig
 PC $> make EXT_DTB=stm32mp151a-myboard.dtb all

6.6 SPL for STM32MP157F-EV1 Evaluation board More info green.png[edit]

 PC $> make stm32mp15_basic_defconfig
 PC $> make DEVICE_TREE=stm32mp157f-ev1 all