Last edited 7 months ago

STM32MP25 U-Boot

Applicable for STM32MP25x lines

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

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

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

Code:

Configuration files:

Warning white.png Warning
The U-Boot defconfig for cut1.0 stm32mp25_revA_defconfig is only kept for compatibility with old revision of board.

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

The U-Boot configuration with defconfig is stm32mp25_defconfig.

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

Board part number Device tree Description
STM32MP257F-DK Discovery kit Warning.png stm32mp257f-dk MB1605
STM32MP257F-EV1 Evaluation board More info green.png stm32mp257f-ev1 MB1936

STMicroelectronics internal boards with Cut1.0 (old revision of board):

The U-Boot configuration with defconfig is stm32mp25_revA_defconfig.

Board part number Device tree Description
STM32MP257F-DK Discovery kit Warning.png (revA) stm32mp257f-dk-revA MB1605
STM32MP257F-EV1 Evaluation board More info green.png (revB) stm32mp257f-ev1-revB MB1936


3. Compilation[edit source]

see U-Boot_overview#U-Boot_build, with installed aarch64 cross-compiler.

For STM32MP257F-EV1 Evaluation board More info green.png, the device tree is already selected in defconfig stm32mp25_defconfig

  make stm32mp25_defconfig
  make all

For other boards, you need to select the correct device tree

  make stm32mp25_defconfig
  make DEVICE_TREE=<Device tree> all

The supported variables are:

  • DEVICE_TREE: select in arch/arm/dts or in EXT_DTS the device tree that is used.
  • KBUILD_OUTPUT: change the destination directory for the build
  • EXT_DTB: select external device tree.
  • EXT_DTS: select PATH of external device tree source, by default the sub-directory "arch/arm/dts/external-dt" is used to allow sub-module.

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

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

3.1. External device tree[edit source]

OpenSTLinux provides some additional device trees in a separate Git: https://github.com/STMicroelectronics/dt-stm32mp.

You can select with DEVICE_TREE any files presnet in the u-boot directory of this Git by

  • using submodule in "arch/arm/dts/external-dt"
    git submodule add https://github.com/STMicroelectronics/dt-stm32mp arch/arm/dts/external-dt
  • cloning this Git in any location <DTS_PATH> and using EXT_DTS=<DTS_PATH> in make command
    git clone https://github.com/STMicroelectronics/dt-stm32mp <DTS_PATH>

See example for STM32MP257F-EV1 Evaluation board More info green.png with OSTL device tree.

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 of STM32MP257F-DK Discovery kit Warning.png:

  fiptool --verbose update --nt-fw u-boot-nodtb.bin \
             --hw-config  u-boot.dtb \
             fip-stm32mp257f-dk.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

5. Examples[edit source]

5.1. Cut1.0 board[edit source]

 make stm32mp25_revA_defconfig
 make DEVICE_TREE=stm32mp257f-dk-revA all

or

 make stm32mp25_revA_defconfig
 make DEVICE_TREE=stm32mp257f-ev1-revB all

5.2. STM32MP257F-DK Discovery kit Warning.png[edit source]

  make stm32mp25_defconfig
  make DEVICE_TREE=stm32mp257f-dk all

and

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

5.3. STM32MP257F-EV1 Evaluation board More info green.png with export[edit source]

  export KBUILD_OUTPUT=../build/stm32mp25
  export DEVICE_TREE=stm32mp257f-ev1
  make stm32mp25_defconfig
  make  all

and

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

5.4. STM32MP257F-EV1 Evaluation board More info green.png with OSTL device tree[edit source]

For compilation of OSTL device tree in the external Git, u-boot/stm32mp257f-ev1-ostl.dts, you can use the git submodule command:

  git submodule add https://github.com/STMicroelectronics/dt-stm32mp arch/arm/dts/external-dt
  make stm32mp25_defconfig
  make DEVICE_TREE=stm32mp257f-ev1-ostl all

or git clone command with EXT_DTS:

  git clone https://github.com/STMicroelectronics/dt-stm32mp ../dt-stm32mp
  make stm32mp25_defconfig
  make EXT_DTS=$PATH/dt-stm32mp DEVICE_TREE=stm32mp257f-ev1-ostl all

and

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

5.5. Custom board with external device tree[edit source]

  make stm32mp25_defconfig
  make EXT_DTB=stm32mp257f-myboard.dtb all
  fiptool --verbose update --nt-fw u-boot-nodtb.bin \
             --hw-config  u-boot.dtb \
             fip-stm32mp257f-myboard.bin