|
@ -37,6 +37,17 @@ The TF-A image must be properly formatted with a STM32 header structure |
|
|
for ROM code is able to load this image. |
|
|
for ROM code is able to load this image. |
|
|
Tool stm32image can be used to prepend this header to the generated TF-A binary. |
|
|
Tool stm32image can be used to prepend this header to the generated TF-A binary. |
|
|
|
|
|
|
|
|
|
|
|
Boot with FIP |
|
|
|
|
|
~~~~~~~~~~~~~ |
|
|
|
|
|
The use of FIP is now the recommended way to boot STM32MP1 platform. |
|
|
|
|
|
Only BL2 (with STM32 header) is loaded by ROM code. The other binaries are |
|
|
|
|
|
inside the FIP binary: BL32 (SP_min or OP-TEE), U-Boot and their respective |
|
|
|
|
|
device tree blobs. |
|
|
|
|
|
|
|
|
|
|
|
STM32IMAGE bootchain |
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~ |
|
|
|
|
|
Although still supported, this way of booting is not recommended. |
|
|
|
|
|
Pease use FIP instead. |
|
|
At compilation step, BL2, BL32 and DTB file are linked together in a single |
|
|
At compilation step, BL2, BL32 and DTB file are linked together in a single |
|
|
binary. The stm32image tool is also generated and the header is added to TF-A |
|
|
binary. The stm32image tool is also generated and the header is added to TF-A |
|
|
binary. This binary file with header is named tf-a-stm32mp157c-ev1.stm32. |
|
|
binary. This binary file with header is named tf-a-stm32mp157c-ev1.stm32. |
|
@ -55,15 +66,17 @@ Memory mapping |
|
|
| ... | |
|
|
| ... | |
|
|
| | |
|
|
| | |
|
|
0x2FFC0000 +-----------------+ \ |
|
|
0x2FFC0000 +-----------------+ \ |
|
|
| | | |
|
|
| BL32 DTB | | |
|
|
|
|
|
0x2FFC5000 +-----------------+ | |
|
|
|
|
|
| BL32 | | |
|
|
|
|
|
0x2FFDF000 +-----------------+ | |
|
|
| ... | | |
|
|
| ... | | |
|
|
| | | |
|
|
0x2FFE3000 +-----------------+ | |
|
|
0x2FFD8000 +-----------------+ | |
|
|
| BL2 DTB | | Embedded SRAM |
|
|
| TF-A DTB | | Embedded SRAM |
|
|
0x2FFEA000 +-----------------+ | |
|
|
0x2FFDC000 +-----------------+ | |
|
|
|
|
|
| BL2 | | |
|
|
| BL2 | | |
|
|
0x2FFEF000 +-----------------+ | |
|
|
0x2FFFF000 +-----------------+ | |
|
|
| BL32 | | |
|
|
| SCMI mailbox | | |
|
|
0x30000000 +-----------------+ / |
|
|
0x30000000 +-----------------+ / |
|
|
| | |
|
|
| | |
|
|
| ... | |
|
|
| ... | |
|
@ -102,23 +115,110 @@ Available storage medias are: |
|
|
- ``STM32MP_SPI_NAND`` |
|
|
- ``STM32MP_SPI_NAND`` |
|
|
- ``STM32MP_SPI_NOR`` |
|
|
- ``STM32MP_SPI_NOR`` |
|
|
|
|
|
|
|
|
To build with SP_min and support for all bootable devices: |
|
|
Boot with FIP |
|
|
|
|
|
~~~~~~~~~~~~~ |
|
|
|
|
|
You need to build BL2, BL32 (SP_min or OP-TEE) and BL33 (U-Boot) before building FIP binary. |
|
|
|
|
|
|
|
|
|
|
|
U-Boot |
|
|
|
|
|
______ |
|
|
|
|
|
|
|
|
|
|
|
.. code:: bash |
|
|
|
|
|
|
|
|
|
|
|
cd <u-boot_directory> |
|
|
|
|
|
make stm32mp15_trusted_defconfig |
|
|
|
|
|
make DEVICE_TREE=stm32mp157c-ev1 all |
|
|
|
|
|
|
|
|
|
|
|
OP-TEE (optional) |
|
|
|
|
|
_________________ |
|
|
|
|
|
|
|
|
|
|
|
.. code:: bash |
|
|
|
|
|
|
|
|
|
|
|
cd <optee_directory> |
|
|
|
|
|
make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm PLATFORM=stm32mp1 \ |
|
|
|
|
|
CFG_EMBED_DTB_SOURCE_FILE=stm32mp157c-ev1.dts |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TF-A BL32 (SP_min) |
|
|
|
|
|
__________________ |
|
|
|
|
|
If you choose not to use OP-TEE, you can use TF-A SP_min. |
|
|
|
|
|
To build TF-A BL32, and its device tree file: |
|
|
|
|
|
|
|
|
|
|
|
.. code:: bash |
|
|
|
|
|
|
|
|
|
|
|
make CROSS_COMPILE=arm-none-eabi- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 \ |
|
|
|
|
|
AARCH32_SP=sp_min DTB_FILE_NAME=stm32mp157c-ev1.dtb bl32 dtbs |
|
|
|
|
|
|
|
|
|
|
|
TF-A BL2 |
|
|
|
|
|
________ |
|
|
|
|
|
To build TF-A BL2 with its STM32 header for SD-card boot: |
|
|
|
|
|
|
|
|
|
|
|
.. code:: bash |
|
|
|
|
|
|
|
|
|
|
|
make CROSS_COMPILE=arm-none-eabi- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 \ |
|
|
|
|
|
DTB_FILE_NAME=stm32mp157c-ev1.dtb STM32MP_SDMMC=1 |
|
|
|
|
|
|
|
|
|
|
|
For other boot devices, you have to replace STM32MP_SDMMC in the previous command |
|
|
|
|
|
with the desired device flag. |
|
|
|
|
|
|
|
|
|
|
|
This BL2 is independent of the BL32 used (SP_min or OP-TEE) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FIP |
|
|
|
|
|
___ |
|
|
|
|
|
With BL32 SP_min: |
|
|
|
|
|
|
|
|
.. code:: bash |
|
|
.. code:: bash |
|
|
|
|
|
|
|
|
make CROSS_COMPILE=arm-linux-gnueabihf- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 AARCH32_SP=sp_min STM32MP_SDMMC=1 STM32MP_EMMC=1 STM32MP_RAW_NAND=1 STM32MP_SPI_NAND=1 |
|
|
make CROSS_COMPILE=arm-none-eabi- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 \ |
|
|
STM32MP_SPI_NOR=1 DTB_FILE_NAME=stm32mp157c-ev1.dtb |
|
|
AARCH32_SP=sp_min \ |
|
|
|
|
|
DTB_FILE_NAME=stm32mp157c-ev1.dtb \ |
|
|
|
|
|
BL33=<u-boot_directory>/u-boot-nodtb.bin \ |
|
|
|
|
|
BL33_CFG=<u-boot_directory>/u-boot.dtb \ |
|
|
|
|
|
fip |
|
|
|
|
|
|
|
|
|
|
|
With OP-TEE: |
|
|
|
|
|
|
|
|
|
|
|
.. code:: bash |
|
|
|
|
|
|
|
|
|
|
|
make CROSS_COMPILE=arm-none-eabi- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 \ |
|
|
|
|
|
DTB_FILE_NAME=stm32mp157c-ev1.dtb \ |
|
|
|
|
|
BL33=<u-boot_directory>/u-boot-nodtb.bin \ |
|
|
|
|
|
BL33_CFG=<u-boot_directory>/u-boot.dtb \ |
|
|
|
|
|
BL32=<optee_directory>/tee-header_v2.bin \ |
|
|
|
|
|
BL32_EXTRA1=<optee_directory>/tee-pager_v2.bin |
|
|
|
|
|
BL32_EXTRA2=<optee_directory>/tee-pageable_v2.bin |
|
|
|
|
|
fip |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
STM32IMAGE bootchain |
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~ |
|
|
|
|
|
You need to add the following flag to the make command: |
|
|
|
|
|
``STM32MP_USE_STM32IMAGE=1`` |
|
|
|
|
|
|
|
|
|
|
|
To build with SP_min and support for SD-card boot: |
|
|
|
|
|
|
|
|
|
|
|
.. code:: bash |
|
|
|
|
|
|
|
|
|
|
|
make CROSS_COMPILE=arm-linux-gnueabihf- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 \ |
|
|
|
|
|
AARCH32_SP=sp_min STM32MP_SDMMC=1 DTB_FILE_NAME=stm32mp157c-ev1.dtb \ |
|
|
|
|
|
STM32MP_USE_STM32IMAGE=1 |
|
|
|
|
|
|
|
|
cd <u-boot_directory> |
|
|
cd <u-boot_directory> |
|
|
make stm32mp15_trusted_defconfig |
|
|
make stm32mp15_trusted_defconfig |
|
|
make DEVICE_TREE=stm32mp157c-ev1 all |
|
|
make DEVICE_TREE=stm32mp157c-ev1 all |
|
|
|
|
|
|
|
|
To build TF-A with OP-TEE support for all bootable devices: |
|
|
To build TF-A with OP-TEE support for SD-card boot: |
|
|
|
|
|
|
|
|
.. code:: bash |
|
|
.. code:: bash |
|
|
|
|
|
|
|
|
make CROSS_COMPILE=arm-linux-gnueabihf- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 AARCH32_SP=optee STM32MP_SDMMC=1 STM32MP_EMMC=1 STM32MP_RAW_NAND=1 STM32MP_SPI_NAND=1 STM32MP_SPI_NOR=1 DTB_FILE_NAME=stm32mp157c-ev1.dtb |
|
|
make CROSS_COMPILE=arm-linux-gnueabihf- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 \ |
|
|
|
|
|
AARCH32_SP=optee STM32MP_SDMMC=1 DTB_FILE_NAME=stm32mp157c-ev1.dtb \ |
|
|
|
|
|
STM32MP_USE_STM32IMAGE=1 |
|
|
|
|
|
|
|
|
cd <optee_directory> |
|
|
cd <optee_directory> |
|
|
make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm PLATFORM=stm32mp1 CFG_EMBED_DTB_SOURCE_FILE=stm32mp157c-ev1.dts |
|
|
make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm PLATFORM=stm32mp1 \ |
|
|
|
|
|
CFG_EMBED_DTB_SOURCE_FILE=stm32mp157c-ev1.dts |
|
|
|
|
|
|
|
|
cd <u-boot_directory> |
|
|
cd <u-boot_directory> |
|
|
make stm32mp15_trusted_defconfig |
|
|
make stm32mp15_trusted_defconfig |
|
|
make DEVICE_TREE=stm32mp157c-ev1 all |
|
|
make DEVICE_TREE=stm32mp157c-ev1 all |
|
@ -132,7 +232,19 @@ The following build options are supported: |
|
|
Populate SD-card |
|
|
Populate SD-card |
|
|
---------------- |
|
|
---------------- |
|
|
|
|
|
|
|
|
The SD-card has to be formated with GPT. |
|
|
Boot with FIP |
|
|
|
|
|
~~~~~~~~~~~~~ |
|
|
|
|
|
The SD-card has to be formatted with GPT. |
|
|
|
|
|
It should contain at least those partitions: |
|
|
|
|
|
|
|
|
|
|
|
- fsbl: to copy the tf-a-stm32mp157c-ev1.stm32 binary (BL2) |
|
|
|
|
|
- fip: which contains the FIP binary |
|
|
|
|
|
|
|
|
|
|
|
Usually, two copies of fsbl are used (fsbl1 and fsbl2) instead of one partition fsbl. |
|
|
|
|
|
|
|
|
|
|
|
STM32IMAGE bootchain |
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~ |
|
|
|
|
|
The SD-card has to be formatted with GPT. |
|
|
It should contain at least those partitions: |
|
|
It should contain at least those partitions: |
|
|
|
|
|
|
|
|
- fsbl: to copy the tf-a-stm32mp157c-ev1.stm32 binary |
|
|
- fsbl: to copy the tf-a-stm32mp157c-ev1.stm32 binary |
|
|