Last edited 9 months ago

STM32MP15 U-Boot

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Applicable for STM32MP15x lines

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

1 STM32MP15x lines More info.png support[edit source]

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

Code :

Configuration files:

Warning white.png Warning
The U-Boot defconfig to use for ecosystem release ≥ v4.0.0 change to stm32mp15_defconfig.

The two next defconfig are kept only for compatibility with upstream, don't use them:

2 Selecting targets : choose defconfig and device tree[edit source]

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

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

Board part number Device tree Description
STM32MP157A-EV1 Evaluation board Warning.png stm32mp157a-ev1 MB1262+MB1263
STM32MP157C-EV1 Evaluation board Warning.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 Warning.png stm32mp157a-dk1 MB1272
STM32MP157D-DK1 Discovery kit More info green.png stm32mp157d-dk1
STM32MP157C-DK2 Discovery kit Warning.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 source]

See U-Boot_overview#U-Boot_build with the defconfig file: stm32mp15_defconfig

  make stm32mp15_defconfig
  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

The output files u-boot.dtb and u-boot-nodtb.bin are integrated in FIP.

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

4 U-Boot integration in FIP[edit source]

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

  • BL33_CFG = u-boot.dtb
  • BL33 = u-boot-nodtb.bin

or updated with fiptools:

  • --hw-config u-boot.dtb
  • --nt-fw u-boot-nodtb.bin

Example for FIP update :

  fiptool --verbose update --nt-fw u-boot-nodtb.bin \
             --hw-config  u-boot.dtb \
             fip-<board>.bin
 
 DEBUG: Replacing nt-fw with.../u-boot-nodtb.bin
 DEBUG: Replacing hw-config with .../u-boot.dtb
 DEBUG: Metadata size: ... bytes
 DEBUG: Payload size: ... bytes

See How_to_configure_TF-A_FIP for details.

5 Examples[edit source]

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

  make stm32mp15_defconfig
  make DEVICE_TREE=stm32mp157f-ev1 all

An existing FIP file is updated with:

  fiptool --verbose update --nt-fw u-boot-nodtb.bin --hw-config u-boot.dtb \
              fip-stm32mp157f-ev1.bin

5.2 STM32MP157C-EV1 Evaluation board Warning.png[edit source]

  make stm32mp15_defconfig
  make DEVICE_TREE=stm32mp157c-ev1 all

An existing FIP file is updated with:

  fiptool --verbose update --nt-fw u-boot-nodtb.bin --hw-config u-boot.dtb \
              fip-stm32mp157c-ev1.bin

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

  make stm32mp15_defconfig
  make DEVICE_TREE=stm32mp157d-dk1 all

An existing FIP file is updated with:

  fiptool --verbose update --nt-fw u-boot-nodtb.bin --hw-config u-boot.dtb \
              fip-stm32mp157d-dk1.bin

5.4 STM32MP157C-DK2 Discovery kit Warning.png[edit source]

Using export to select the device tree

  export KBUILD_OUTPUT=../build/stm32mp15
  export DEVICE_TREE=stm32mp157c-dk2
  make stm32mp15_defconfig
  make all

An existing FIP file is updated with:

  fiptool --verbose update --nt-fw $KBUILD_OUTPUT/u-boot-nodtb.bin \
              --hw-config  $KBUILD_OUTPUT/u-boot.dtb \
              fip-stm32mp157c-dk2.bin

5.5 Custom board with external device tree[edit source]

  make stm32mp15_defconfig
  make EXT_DTB=stm32mp151a-myboard.dtb all

Then you can create or update the FIP