Difference between revisions of "STM32MP15 U-Boot"
[quality revision] | [quality revision] |
m (→Examples)
|
m
|
Applicable for | STM32MP15x lines |
This article briefly describes the STM32MP15x lines support in U-Boot.
Contents
1 STM32MP15x lines
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
: board/st/stm32mp1.html.
Also available in official U-Boot Git.
Code :
-
arch/arm/mach-stm32mp : arch specific code for STM32 Arm® Cortex® MPUs
-
arch/arm/mach-stm32mp/Kconfig : generic configuration for STM32 Arm® Cortex® MPUs
-
arch/arm/mach-stm32mp/Kconfig.15x : specific configuration for STM32MP15x lines
-
arch/arm/mach-stm32mp/Kconfig : generic configuration for STM32 Arm® Cortex® MPUs
- board/st/common : STMicroelectronics common code
- board/st/stm32mp1 : STMicroelectronics boards support for STM32MP1 Series
- drivers/*/*stm32* : drivers
Configuration Filesfiles:
- defconfig file
- configs/stm32mp15_defconfig when FIP is used in OpenSTLinux
- config files
-
include/configs/stm32mp15_common.h : generic for STM32MP15x lines
-
include/configs/stm32mp15_st_common.h : STMicroelectronics board for STM32MP15x lines
-
STM32_MPU_device_tree in arch/arm/dts : stm32mp15*.dts*
- <Device tree>.dts : same as kernel
- <Device tree>-u-boot.dtsi : addition for u-boot automatically included in build process
![]() |
The U-Boot defconfig to use for ecosystem release ≥ v4.0.0 ![]() |
The two next defconfig are kept only for compatibility with upstream, don't use them:
- configs/stm32mp15_trusted_defconfig with stm32 image header support (CONFIG_STM32MP15x_STM32IMAGE)
- configs/stm32mp15_basic_defconfig when SPL is used
2 Selecting targets : choose defconfig and Device Treedevice tree[edit]
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 ![]() |
stm32mp157a-ev1 | MB1262+MB1263 |
STM32MP157C-EV1 Evaluation board ![]() |
stm32mp157c-ev1 | |
STM32MP157D-EV1 Evaluation board ![]() |
stm32mp157d-ev1 | |
STM32MP157F-EV1 Evaluation board ![]() |
stm32mp157f-ev1 | |
STM32MP157A-DK1 Discovery kit ![]() |
stm32mp157a-dk1 | MB1272 |
STM32MP157D-DK1 Discovery kit ![]() |
stm32mp157d-dk1 | |
STM32MP157C-DK2 Discovery kit ![]() |
stm32mp157c-dk2 | MB1272+MB1407 |
STM32MP157F-DK2 Discovery kit ![]() |
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_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.
NotaNote: All the compiled device tree trees 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 u-boot.stm32' is only generated for stm32mp15_trusted_defconfig with CONFIG_STM32MP15x_STM32IMAGE; it is not more used for ecosystem release ≥ v4.0.0 .
4 U-Boot integration in FIP[edit]
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]
5.1 STM32MP157F-EV1 Evaluation board
[edit]
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
[edit]
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
[edit]
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
[edit]
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]
make stm32mp15_defconfig make EXT_DTB=stm32mp151a-myboard.dtb all
Then you can create or update the FIP
<noinclude>{{ApplicableFor |MPUs list=STM32MP15x |MPUs checklist=STM32MP13x, STM32MP15x }}</noinclude> This article briefly describes the {{MicroprocessorDevice | device=15}} support in [[U-Boot_overview|U-Boot]]. == {{MicroprocessorDevice | device=15}} support == For detailed information, please read the file in the delivered U-Boot code = {{CodeSource | U-Boot | doc/board/st/stm32mp1.rst}} or the stm32mp1 documentation generated by <code>make htlmdocs</code>: {{DocSource | domain=U-Boot | path=board/st/stm32mp1.html}}. Also available in official U-Boot Git. Code : * {{CodeSource | U-Boot | arch/arm/mach-stm32mp}}: arch specific code for {{MicroprocessorDevice | device=Class}} ** {{CodeSource | U-Boot | arch/arm/mach-stm32mp/Kconfig}}: generic configuration for {{MicroprocessorDevice | device=Class}} ** {{CodeSource | U-Boot | arch/arm/mach-stm32mp/Kconfig.15x}}: specific configuration for {{MicroprocessorDevice | device=15}} * {{CodeSource | U-Boot | board/st/common}}: STMicroelectronics common code * {{CodeSource | U-Boot | board/st/stm32mp1}}: STMicroelectronics boards support for {{MicroprocessorDevice | device=1}} * drivers/*/*stm32* : drivers Configuration Filesfiles: * defconfig file ** '''{{CodeSource | U-Boot | configs/stm32mp15_defconfig}}''' when FIP is used in OpenSTLinux * config files * {{CodeSource | U-Boot | include/configs/stm32mp15_common.h}}: generic for {{MicroprocessorDevice | device=15}} * {{CodeSource | U-Boot | include/configs/stm32mp15_st_common.h}}: STMicroelectronics board for {{MicroprocessorDevice | device=15}} * [[STM32_MPU_device_tree]] in {{CodeSource | U-Boot | arch/arm/dts }} : stm32mp15*.dts* ** {{HighlightParam|<Device tree>}}.dts : same as kernel ** {{HighlightParam|<Device tree>}}-u-boot.dtsi : addition for u-boot automatically included in build process {{Warning | The U-Boot defconfig to use for {{EcosystemRelease | revision=4.0.0 | | range=and after}} change to '''stm32mp15_defconfig'''.}} The two next defconfig are kept only for compatibility with upstream, don't use them: * {{CodeSource | U-Boot | configs/stm32mp15_trusted_defconfig}} with stm32 image header support (CONFIG_STM32MP15x_STM32IMAGE) * {{CodeSource | U-Boot | configs/stm32mp15_basic_defconfig}} when SPL is used == Selecting targets : choose defconfig and Device Treedevice tree == The [[Boot_chain_overview|STM32 MPU boot chain]] is supported by one [[U-Boot_overview#Kbuild|U-Boot configuration with defconfig]] = {{HighlightParam|stm32mp15_defconfig}} Several [[STM32MP15_boards|boards]] are supported with the associated device-tree (same name as kernel): {| class="st-table" |- ! Board part number !! {{HighlightParam|Device tree}} !! Description |- | '''{{Board | type=157A-EV1}}''' || {{CodeSource | U-Boot | arch/arm/dts/stm32mp157a-ev1.dts|stm32mp157a-ev1}} || rowspan="4" | [[MB1262]]+[[MB1263]] |- | '''{{Board | type=157C-EV1}}''' || {{CodeSource | U-Boot | arch/arm/dts/stm32mp157c-ev1.dts|stm32mp157c-ev1}} |- | '''{{Board | type=157D-EV1}}''' || {{CodeSource | U-Boot | arch/arm/dts/stm32mp157d-ev1.dts|stm32mp157d-ev1}} |- | '''{{Board | type=157F-EV1}}''' || {{CodeSource | U-Boot | arch/arm/dts/stm32mp157f-ev1.dts|stm32mp157f-ev1}} |- | '''{{Board | type=157A-DK1}}''' || {{CodeSource | U-Boot | arch/arm/dts/stm32mp157a-dk1.dts|stm32mp157a-dk1}} || rowspan="2" | [[MB1272]] |- | '''{{Board | type=157D-DK1}}''' || {{CodeSource | U-Boot | arch/arm/dts/stm32mp157d-dk1.dts|stm32mp157d-dk1}} |- | '''{{Board | type=157C-DK2}}''' || {{CodeSource | U-Boot | arch/arm/dts/stm32mp157c-dk2.dts|stm32mp157c-dk2}} || rowspan="2" | [[MB1272]]+[[MB1407]] |- | '''{{Board | type=157F-DK2}}''' || {{CodeSource | U-Boot | arch/arm/dts/stm32mp157f-dk2.dts|stm32mp157f-dk2}} |} For information the 'Evaluation' daughter-board only ([[MB1263]] without [[MB1262]]) is also supported by stm32mp15*-ed1.dts device tree files. == Compilation == See [[U-Boot_overview#U-Boot_build]] with the defconfig file: {{HighlightParam|stm32mp15_defconfig}} {{PC$}} make {{HighlightParam|stm32mp15_defconfig}} {{PC$}} make DEVICE_TREE={{HighlightParam|<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 {{Highlight|'''u-boot.dtb'''}} and {{Highlight|'''u-boot-nodtb.bin'''}} are integrated in [[#U-Boot integration in FIP|FIP]]. NotaNote: All the compiled device treetrees are available in $KBUILD_OUTPUT/arch/arm/dts/*.dtb.<br/>You can select them instead of {{Highlight|u-boot.dtb}} without U-Boot recompilation. The ouput file ''u-boot.stm32''' is only generated for {{HighlightParam|stm32mp15_trusted_defconfig}} with {{HighlightParam|CONFIG_STM32MP15x_STM32IMAGE}}; it is not more used for {{EcosystemRelease | revision=4.0.0 | | range=and after}}. == U-Boot integration in FIP == U-Boot binary and its associated device tree are part of the FIP binary, [[How to configure TF-A FIP#FIP_binary_creation|created]] with TF-A Makefile option : * {{HighlightParam|BL33_CFG}} = {{Highlight|'''u-boot.dtb'''}} * {{HighlightParam|BL33}} = {{Highlight|'''u-boot-nodtb.bin'''}} or [[How to configure TF-A FIP#Updating_U-Boot|updated]] with <code>fiptools</code>: * {{HighlightParam|--hw-config}} {{Highlight|'''u-boot.dtb'''}} * {{HighlightParam|--nt-fw}} {{Highlight|'''u-boot-nodtb.bin'''}} Example for FIP update : {{PC$}} fiptool {{HighlightParam|--verbose}} {{Highlight|update}} {{HighlightParam|--nt-fw}} {{Highlight|u-boot-nodtb.bin}} \ {{HighlightParam|--hw-config}} {{Highlight|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. == Examples == === {{Board | type=157F-EV1}} === {{PC$}} make {{HighlightParam|stm32mp15_defconfig}} {{PC$}} make DEVICE_TREE={{HighlightParam|stm32mp157f-ev1}} all An existing FIP file is updated with: {{PC$}} fiptool --verbose update --nt-fw {{Highlight|u-boot-nodtb.bin}} --hw-config {{Highlight|u-boot.dtb}} \ fip-{{HighlightParam|stm32mp157f-ev1}}.bin === {{Board | type=157C-EV1}} === {{PC$}} make {{HighlightParam|stm32mp15_defconfig}} {{PC$}} make DEVICE_TREE={{HighlightParam|stm32mp157c-ev1}} all An existing FIP file is updated with: {{PC$}} fiptool --verbose update --nt-fw {{Highlight|u-boot-nodtb.bin}} --hw-config {{Highlight|u-boot.dtb}} \ fip-{{HighlightParam|stm32mp157c-ev1}}.bin === {{Board | type=157D-DK1}} === {{PC$}} make {{HighlightParam|stm32mp15_defconfig}} {{PC$}} make DEVICE_TREE={{HighlightParam|stm32mp157d-dk1}} all An existing FIP file is updated with: {{PC$}} fiptool --verbose update --nt-fw {{Highlight|u-boot-nodtb.bin}} --hw-config {{Highlight|u-boot.dtb}} \ fip-{{HighlightParam|stm32mp157d-dk1}}.bin === {{Board | type=157C-DK2}} === Using export to select the device tree {{PC$}} export KBUILD_OUTPUT=../build/stm32mp15 {{PC$}} export DEVICE_TREE={{HighlightParam|stm32mp157c-dk2}} {{PC$}} make {{HighlightParam|stm32mp15_defconfig}} {{PC$}} make all An existing FIP file is updated with: {{PC$}} fiptool --verbose update --nt-fw {{Highlight|$KBUILD_OUTPUT/u-boot-nodtb.bin}} \ --hw-config {{Highlight|$KBUILD_OUTPUT/u-boot.dtb}} \ fip-{{HighlightParam|stm32mp157c-dk2}}.bin === Custom board with external device tree === {{PC$}} make {{HighlightParam|stm32mp15_defconfig}} {{PC$}} make EXT_DTB={{HighlightParam|stm32mp151a-myboard.dtb}} all Then you can create or update the FIP <noinclude> [[Category:U-Boot|U-Boot - 3 STM32MP15]] {{PublicationRequestId | 12895 | 2019-08-01}}</noinclude>
Line 7: | Line 7: | ||
== {{MicroprocessorDevice | device=15}} support == |
== {{MicroprocessorDevice | device=15}} support == |
||
− | For detailed information, |
+ | For detailed information, read the file in the delivered U-Boot code = {{CodeSource | U-Boot | doc/board/st/stm32mp1.rst}} or the documentation generated by <code>make htlmdocs</code>: {{DocSource | domain=U-Boot | path=board/st/stm32mp1.html}}. |
− | |||
− | |||
Code : |
Code : |
||
Line 19: | Line 17: | ||
* drivers/*/*stm32* : drivers |
* drivers/*/*stm32* : drivers |
||
− | Configuration |
+ | Configuration files: |
* defconfig file |
* defconfig file |
||
** '''{{CodeSource | U-Boot | configs/stm32mp15_defconfig}}''' when FIP is used in OpenSTLinux |
** '''{{CodeSource | U-Boot | configs/stm32mp15_defconfig}}''' when FIP is used in OpenSTLinux |
||
Line 35: | Line 33: | ||
* {{CodeSource | U-Boot | configs/stm32mp15_basic_defconfig}} when SPL is used |
* {{CodeSource | U-Boot | configs/stm32mp15_basic_defconfig}} when SPL is used |
||
− | == Selecting targets : choose defconfig and |
+ | == Selecting targets : choose defconfig and device tree == |
The [[Boot_chain_overview|STM32 MPU boot chain]] is supported by one [[U-Boot_overview#Kbuild|U-Boot configuration with defconfig]] = {{HighlightParam|stm32mp15_defconfig}} |
The [[Boot_chain_overview|STM32 MPU boot chain]] is supported by one [[U-Boot_overview#Kbuild|U-Boot configuration with defconfig]] = {{HighlightParam|stm32mp15_defconfig}} |
||
Line 77: | Line 75: | ||
The output files {{Highlight|'''u-boot.dtb'''}} and {{Highlight|'''u-boot-nodtb.bin'''}} are integrated in [[#U-Boot integration in FIP|FIP]]. |
The output files {{Highlight|'''u-boot.dtb'''}} and {{Highlight|'''u-boot-nodtb.bin'''}} are integrated in [[#U-Boot integration in FIP|FIP]]. |
||
− | + |
Note: All the compiled device trees are available in $KBUILD_OUTPUT/arch/arm/dts/*.dtb.<br/>You can select them instead of {{Highlight|u-boot.dtb}} without U-Boot recompilation. |
|
The ouput file ''u-boot.stm32''' is only generated for {{HighlightParam|stm32mp15_trusted_defconfig}} with {{HighlightParam|CONFIG_STM32MP15x_STM32IMAGE}}; it is not more used for {{EcosystemRelease | revision=4.0.0 | | range=and after}}. |
The ouput file ''u-boot.stm32''' is only generated for {{HighlightParam|stm32mp15_trusted_defconfig}} with {{HighlightParam|CONFIG_STM32MP15x_STM32IMAGE}}; it is not more used for {{EcosystemRelease | revision=4.0.0 | | range=and after}}. |