Difference between revisions of "STM32MP15 U-Boot"

[checked revision] [quality revision]
(Compilation)
m

1 STM32MP15 in U-Boot[edit]

For detailed information, please read the file in the delivered U-Boot code = board/st/stm32mp1/README

Also available in official U-Boot Git: board/st/stm32mp1/README

1.1 STM32MP15 support[edit]

Code :

  • arch/arm/mach-stm32mp : arch specific code for all STM32 ArmTemplate:Sup CortexTemplate:Sup ® Cortex® MPUs
  • board/st/stm32mp1: generic STMicroelectronics board for STMP32MP1
  • drivers/*/*stm32* : drivers

Configuration Files:

  • defconfig file
    • configs/stm32mp15_basic_defconfig
    • configs/stm32mp15_optee_defconfig
    • configs/stm32mp15_trusted_defconfig
  • config files
    • include/configs/stm32mp1.h
  • Device tree
    • arch/arm/dts/stm32mp157*-<board>.dts : same as kernel
    • arch/arm/dts/stm32mp157*-<board>-u-boot.dtsi : addition for u-boot ( <<device tree>>-u-boot.dtsi automatically included in build process)

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

Each boot chain is supported by one U-Boot configuration with defconfig

Boot chain defconfig FSBL SSBL TEE support
Trusted Boot stm32mp15_trusted_defconfig TF-A U-Boot
u-boot.stm32
-
Trusted Boot with OP-TEE stm32mp15_optee_defconfig TF-A U-Boot
u-boot.stm32
yes
Basic Boot stm32mp15_basic_defconfig SPL
u-boot-spl.stm32
U-Boot
u-boot.img
-
Warning white.png Warning
The basic boot chain is not supported/promoted by STMicroelectronics to make product (see Boot chains overview for details).

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

Board part number Description Device tree
STM32MP157C-EV1 Evaluation board
PMIC = MB1262+MB1263
stm32mp157c-ev1
STM32MP157C-ED1 Evaluation daughter board
PMIC = MB1263
stm32mp157c-ed1
STM32MP157A-DK1 Discovery kit
MB1272
stm32mp157a-dk1
STM32MP157C-DK2 Discovery kit
MB1272 + DSI screen
stm32mp157c-dk2

1.3 Compilation[edit]

see U-Boot_overview#U-Boot_build

With <mode> = 'basic', 'trusted' or 'optee'

 $> make stm32mp15_<mode>_defconfig
 $> make DEVICE_TREE=<device tree name> all
  • 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

2 Examples[edit]

2.1 EV1 trusted boot[edit]

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

2.2 DK2 trusted boot[edit]

Using export to select the device tree

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

2.3 ED1 basic boot[edit]

 $> export KBUILD_OUTPUT=../build/basic
 $> make stm32mp15_basic_defconfig
 $> make DEVICE_TREE=stm32mp157c-ed1 all

2.4 Trusted boot chain with external device tree[edit]

 $> make stm32mp15_trusted_defconfig
 $> make EXT_DTB=boot/stm32mp157c-myboard.dtb all


== STM32MP15 in U-Boot ==
For detailed information, please read the file in the delivered U-Boot code = '''board/st/stm32mp1/README'''

Also available in official U-Boot Git: {{CodeSource | U-Boot | board/st/stm32mp1/README}}

=== STM32MP15 support ===

Code :
* arch/arm/mach-stm32mp : arch specific code for all STM32 Arm{{<sup>|&reg;}}</sup> Cortex{{<sup>|&reg;}}</sup> MPUs
* board/st/stm32mp1: generic STMicroelectronics board for STMP32MP1
* drivers/*/*stm32* : drivers

Configuration Files:
* defconfig file
** configs/stm32mp15_basic_defconfig
** configs/stm32mp15_optee_defconfig
** configs/stm32mp15_trusted_defconfig
* config files
** include/configs/stm32mp1.h
* Device tree 
** arch/arm/dts/stm32mp157*-<board>.dts : same as kernel
** arch/arm/dts/stm32mp157*-<board>-u-boot.dtsi : addition for u-boot ( <<device tree>>-u-boot.dtsi automatically included in build process)

=== Selecting targets : choose defconfig and Device Tree ===

Each [[Boot_chains_overview|boot chain]] is supported by one [[U-Boot_overview#Kbuild|U-Boot configuration with defconfig]]

{| class="wikitable"
|-
! Boot chain  !! defconfig !! FSBL !! SSBL !! TEE support
|-
| [[Boot_chains_overview#STM32MP boot chains|''' Trusted Boot''']] || stm32mp15_trusted_defconfig || TF-A  || '''U-Boot'''<br>u-boot.stm32 || -
|-
| [[Boot_chains_overview#STM32MP boot chains|''' Trusted Boot''']] with [[OP-TEE_overview|'''OP-TEE''']] || stm32mp15_optee_defconfig || TF-A  || '''U-Boot'''<br>u-boot.stm32 || yes
|-
| [[Boot_chains_overview#STM32MP boot chains|'''Basic Boot''']] || stm32mp15_basic_defconfig || SPL<br>u-boot-spl.stm32 || '''U-Boot'''<br>u-boot.img || -
|}

{{Warning | The basic boot chain is not supported/promoted by STMicroelectronics to make product (see [[Boot_chains_overview#Boot_chains_features_set|Boot chains overview]] for details).}} 

Several [[STM32MP15_boards|targets/ boards]] are supported with the associated device-tree (same name as kernel):

{| class="wikitable"
|-
! Board part number  !! Description !! Device tree
|-
| '''STM32MP157C-EV1''' || '''Evaluation board'''<br/>PMIC = MB1262+MB1263 || '''stm32mp157c-ev1'''
|-
| '''STM32MP157C-ED1''' || Evaluation daughter board<br/>PMIC = MB1263 || stm32mp157c-ed1
|-
| '''STM32MP157A-DK1''' || '''Discovery kit'''<br/>MB1272 || '''stm32mp157a-dk1'''
|-
| '''STM32MP157C-DK2''' || '''Discovery kit'''<br/>MB1272 + DSI screen || '''stm32mp157c-dk2'''
|}

=== Compilation ===
see [[U-Boot_overview#U-Boot_build]]

With <mode> = 'basic', 'trusted' or 'optee'

  $> make stm32mp15_<mode>_defconfig
  $> make DEVICE_TREE=<device tree name> all

*'''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

== Examples ==

===EV1 trusted boot ===
  $> make stm32mp15_trusted_defconfig
  $> make DEVICE_TREE=stm32mp157c-ev1 all

=== DK2 trusted boot ===
Using export to select the device tree
  $> export KBUILD_OUTPUT=../build/trusted
  $> export DEVICE_TREE=stm32mp157c-dk2
  $> make stm32mp15_trusted_defconfig
  $> make all

=== ED1 basic boot ===
  $> export KBUILD_OUTPUT=../build/basic
  $> make stm32mp15_basic_defconfig
  $> make DEVICE_TREE=stm32mp157c-ed1 all

=== Trusted boot chain with external device tree ===
  $> make stm32mp15_trusted_defconfig
  $> make EXT_DTB=boot/stm32mp157c-myboard.dtb all
<noinclude>

[[Category:U-Boot]]
{{PublicationRequestId | 12895 | 2019-08-01}}</noinclude>
Line 7: Line 7:
   
 
Code :
 
Code :
* arch/arm/mach-stm32mp : arch specific code for all STM32 Arm{{sup|&reg;}} Cortex{{sup|&reg;}} MPUs
+
* arch/arm/mach-stm32mp : arch specific code for all STM32 Arm<sup>&reg;</sup> Cortex<sup>&reg;</sup> MPUs
 
* board/st/stm32mp1: generic STMicroelectronics board for STMP32MP1
 
* board/st/stm32mp1: generic STMicroelectronics board for STMP32MP1
 
* drivers/*/*stm32* : drivers
 
* drivers/*/*stm32* : drivers