1ce7f8044SYann GautierSTM32MP1 2ce7f8044SYann Gautier======== 3ce7f8044SYann Gautier 4ce7f8044SYann GautierSTM32MP1 is a microprocessor designed by STMicroelectronics 5ce7f8044SYann Gautierbased on Arm Cortex-A7. 6ce7f8044SYann GautierIt is an Armv7-A platform, using dedicated code from TF-A. 7ce7f8044SYann GautierMore information can be found on `STM32MP1 Series`_ page. 8ce7f8044SYann Gautier 9ce7f8044SYann GautierFor TF-A common configuration of STM32 MPUs, please check 10ce7f8044SYann Gautier:ref:`STM32 MPUs` page. 11ce7f8044SYann Gautier 12ce7f8044SYann GautierSTM32MP1 Versions 13ce7f8044SYann Gautier----------------- 14ce7f8044SYann Gautier 15ce7f8044SYann GautierThere are 2 variants for STM32MP1: STM32MP13 and STM32MP15 16ce7f8044SYann Gautier 17ce7f8044SYann GautierSTM32MP13 Versions 18ce7f8044SYann Gautier~~~~~~~~~~~~~~~~~~ 19ce7f8044SYann GautierThe STM32MP13 series is available in 3 different lines which are pin-to-pin compatible: 20ce7f8044SYann Gautier 21ce7f8044SYann Gautier- STM32MP131: Single Cortex-A7 core 22ce7f8044SYann Gautier- STM32MP133: STM32MP131 + 2*CAN, ETH2(GMAC), ADC1 23ce7f8044SYann Gautier- STM32MP135: STM32MP133 + DCMIPP, LTDC 24ce7f8044SYann Gautier 25ce7f8044SYann GautierEach line comes with a security option (cryptography & secure boot) and a Cortex-A frequency option: 26ce7f8044SYann Gautier 27ce7f8044SYann Gautier- A Cortex-A7 @ 650 MHz 28ce7f8044SYann Gautier- C Secure Boot + HW Crypto + Cortex-A7 @ 650 MHz 29ce7f8044SYann Gautier- D Cortex-A7 @ 900 MHz 30ce7f8044SYann Gautier- F Secure Boot + HW Crypto + Cortex-A7 @ 900 MHz 31ce7f8044SYann Gautier 32ce7f8044SYann GautierSTM32MP15 Versions 33ce7f8044SYann Gautier~~~~~~~~~~~~~~~~~~ 34ce7f8044SYann GautierThe STM32MP15 series is available in 3 different lines which are pin-to-pin compatible: 35ce7f8044SYann Gautier 36ce7f8044SYann Gautier- STM32MP157: Dual Cortex-A7 cores, Cortex-M4 core @ 209 MHz, 3D GPU, DSI display interface and CAN FD 37ce7f8044SYann Gautier- STM32MP153: Dual Cortex-A7 cores, Cortex-M4 core @ 209 MHz and CAN FD 38ce7f8044SYann Gautier- STM32MP151: Single Cortex-A7 core, Cortex-M4 core @ 209 MHz 39ce7f8044SYann Gautier 40ce7f8044SYann GautierEach line comes with a security option (cryptography & secure boot) and a Cortex-A frequency option: 41ce7f8044SYann Gautier 42ce7f8044SYann Gautier- A Basic + Cortex-A7 @ 650 MHz 43ce7f8044SYann Gautier- C Secure Boot + HW Crypto + Cortex-A7 @ 650 MHz 44ce7f8044SYann Gautier- D Basic + Cortex-A7 @ 800 MHz 45ce7f8044SYann Gautier- F Secure Boot + HW Crypto + Cortex-A7 @ 800 MHz 46ce7f8044SYann Gautier 47ce7f8044SYann GautierThe `STM32MP1 part number codification`_ page gives more information about part numbers. 48ce7f8044SYann Gautier 49ce7f8044SYann GautierMemory mapping 50ce7f8044SYann Gautier-------------- 51ce7f8044SYann Gautier 52ce7f8044SYann Gautier:: 53ce7f8044SYann Gautier 54ce7f8044SYann Gautier 0x00000000 +-----------------+ 55ce7f8044SYann Gautier | | ROM 56ce7f8044SYann Gautier 0x00020000 +-----------------+ 57ce7f8044SYann Gautier | | 58ce7f8044SYann Gautier | ... | 59ce7f8044SYann Gautier | | 60ce7f8044SYann Gautier 0x2FFC0000 +-----------------+ \ 61ce7f8044SYann Gautier | BL32 DTB | | 62ce7f8044SYann Gautier 0x2FFC5000 +-----------------+ | 63ce7f8044SYann Gautier | BL32 | | 64ce7f8044SYann Gautier 0x2FFDF000 +-----------------+ | 65ce7f8044SYann Gautier | ... | | 66ce7f8044SYann Gautier 0x2FFE3000 +-----------------+ | 67ce7f8044SYann Gautier | BL2 DTB | | Embedded SRAM 68ce7f8044SYann Gautier 0x2FFEA000 +-----------------+ | 69ce7f8044SYann Gautier | BL2 | | 70ce7f8044SYann Gautier 0x2FFFF000 +-----------------+ | 71ce7f8044SYann Gautier | SCMI mailbox | | 72ce7f8044SYann Gautier 0x30000000 +-----------------+ / 73ce7f8044SYann Gautier | | 74ce7f8044SYann Gautier | ... | 75ce7f8044SYann Gautier | | 76ce7f8044SYann Gautier 0x40000000 +-----------------+ 77ce7f8044SYann Gautier | | 78ce7f8044SYann Gautier | | Devices 79ce7f8044SYann Gautier | | 80ce7f8044SYann Gautier 0xC0000000 +-----------------+ \ 81ce7f8044SYann Gautier | | | 82ce7f8044SYann Gautier 0xC0100000 +-----------------+ | 83ce7f8044SYann Gautier | BL33 | | Non-secure RAM (DDR) 84ce7f8044SYann Gautier | ... | | 85ce7f8044SYann Gautier | | | 86ce7f8044SYann Gautier 0xFFFFFFFF +-----------------+ / 87ce7f8044SYann Gautier 88ce7f8044SYann Gautier 89ce7f8044SYann GautierBuild Instructions 90ce7f8044SYann Gautier------------------ 91ce7f8044SYann Gautier 92ce7f8044SYann GautierSTM32MP1x specific flags 93ce7f8044SYann Gautier~~~~~~~~~~~~~~~~~~~~~~~~ 94ce7f8044SYann Gautier 95ce7f8044SYann GautierDedicated STM32MP1 flags: 96ce7f8044SYann Gautier 97ce7f8044SYann Gautier- | ``STM32_TF_VERSION``: to manage BL2 monotonic counter. 98ce7f8044SYann Gautier | Default: 0 99ce7f8044SYann Gautier- | ``STM32MP13``: to select STM32MP13 variant configuration. 100ce7f8044SYann Gautier | Default: 0 101ce7f8044SYann Gautier- | ``STM32MP15``: to select STM32MP15 variant configuration. 102ce7f8044SYann Gautier | Default: 1 103ce7f8044SYann Gautier 104ce7f8044SYann Gautier 105ce7f8044SYann GautierBoot with FIP 106ce7f8044SYann Gautier~~~~~~~~~~~~~ 107ce7f8044SYann GautierYou need to build BL2, BL32 (SP_min or OP-TEE) and BL33 (U-Boot) before building FIP binary. 108ce7f8044SYann Gautier 109ce7f8044SYann GautierU-Boot 110ce7f8044SYann Gautier______ 111ce7f8044SYann Gautier 112ce7f8044SYann Gautier.. code:: bash 113ce7f8044SYann Gautier 114ce7f8044SYann Gautier cd <u-boot_directory> 115ce7f8044SYann Gautier make stm32mp15_trusted_defconfig 116ce7f8044SYann Gautier make DEVICE_TREE=stm32mp157c-ev1 all 117ce7f8044SYann Gautier 118*f811a99eSYann GautierOP-TEE (recommended) 119*f811a99eSYann Gautier____________________ 120*f811a99eSYann GautierOP-TEE is the default BL32 supported for STMicroelectronics platforms. 121ce7f8044SYann Gautier 122ce7f8044SYann Gautier.. code:: bash 123ce7f8044SYann Gautier 124ce7f8044SYann Gautier cd <optee_directory> 125ce7f8044SYann Gautier make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm PLATFORM=stm32mp1 \ 126ce7f8044SYann Gautier CFG_EMBED_DTB_SOURCE_FILE=stm32mp157c-ev1.dts 127ce7f8044SYann Gautier 128ce7f8044SYann Gautier 129*f811a99eSYann GautierTF-A BL32 (SP_min) (not recommended) 130*f811a99eSYann Gautier____________________________________ 131ce7f8044SYann GautierIf you choose not to use OP-TEE, you can use TF-A SP_min. 132*f811a99eSYann GautierThis is not the recommended BL32 to use, and will have very limited support. 133ce7f8044SYann GautierTo build TF-A BL32, and its device tree file: 134ce7f8044SYann Gautier 135ce7f8044SYann Gautier.. code:: bash 136ce7f8044SYann Gautier 137ce7f8044SYann Gautier make CROSS_COMPILE=arm-none-eabi- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 \ 138ce7f8044SYann Gautier AARCH32_SP=sp_min DTB_FILE_NAME=stm32mp157c-ev1.dtb bl32 dtbs 139ce7f8044SYann Gautier 140ce7f8044SYann GautierTF-A BL2 141ce7f8044SYann Gautier________ 142ce7f8044SYann GautierTo build TF-A BL2 with its STM32 header for SD-card boot: 143ce7f8044SYann Gautier 144ce7f8044SYann Gautier.. code:: bash 145ce7f8044SYann Gautier 146ce7f8044SYann Gautier make CROSS_COMPILE=arm-none-eabi- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 \ 147ce7f8044SYann Gautier DTB_FILE_NAME=stm32mp157c-ev1.dtb STM32MP_SDMMC=1 148ce7f8044SYann Gautier 149ce7f8044SYann GautierFor other boot devices, you have to replace STM32MP_SDMMC in the previous command 150ce7f8044SYann Gautierwith the desired device flag. 151ce7f8044SYann Gautier 152ce7f8044SYann GautierThis BL2 is independent of the BL32 used (SP_min or OP-TEE) 153ce7f8044SYann Gautier 154ce7f8044SYann Gautier 155ce7f8044SYann GautierFIP 156ce7f8044SYann Gautier___ 157ce7f8044SYann GautierWith BL32 SP_min: 158ce7f8044SYann Gautier 159ce7f8044SYann Gautier.. code:: bash 160ce7f8044SYann Gautier 161ce7f8044SYann Gautier make CROSS_COMPILE=arm-none-eabi- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 \ 162ce7f8044SYann Gautier AARCH32_SP=sp_min \ 163ce7f8044SYann Gautier DTB_FILE_NAME=stm32mp157c-ev1.dtb \ 164ce7f8044SYann Gautier BL33=<u-boot_directory>/u-boot-nodtb.bin \ 165ce7f8044SYann Gautier BL33_CFG=<u-boot_directory>/u-boot.dtb \ 166ce7f8044SYann Gautier fip 167ce7f8044SYann Gautier 168ce7f8044SYann GautierWith OP-TEE: 169ce7f8044SYann Gautier 170ce7f8044SYann Gautier.. code:: bash 171ce7f8044SYann Gautier 172ce7f8044SYann Gautier make CROSS_COMPILE=arm-none-eabi- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 \ 173ce7f8044SYann Gautier AARCH32_SP=optee \ 174ce7f8044SYann Gautier DTB_FILE_NAME=stm32mp157c-ev1.dtb \ 175ce7f8044SYann Gautier BL33=<u-boot_directory>/u-boot-nodtb.bin \ 176ce7f8044SYann Gautier BL33_CFG=<u-boot_directory>/u-boot.dtb \ 177ce7f8044SYann Gautier BL32=<optee_directory>/tee-header_v2.bin \ 178ce7f8044SYann Gautier BL32_EXTRA1=<optee_directory>/tee-pager_v2.bin 179ce7f8044SYann Gautier BL32_EXTRA2=<optee_directory>/tee-pageable_v2.bin 180ce7f8044SYann Gautier fip 181ce7f8044SYann Gautier 182ce7f8044SYann GautierTrusted Boot Board 183ce7f8044SYann Gautier__________________ 184ce7f8044SYann Gautier 185ce7f8044SYann Gautier.. code:: shell 186ce7f8044SYann Gautier 187ce7f8044SYann Gautier tools/cert_create/cert_create -n --rot-key build/stm32mp1/release/rot_key.pem \ 188ce7f8044SYann Gautier --tfw-nvctr 0 \ 189ce7f8044SYann Gautier --ntfw-nvctr 0 \ 190ce7f8044SYann Gautier --key-alg ecdsa --hash-alg sha256 \ 191ce7f8044SYann Gautier --trusted-key-cert build/stm32mp1/release/trusted_key.crt \ 192ce7f8044SYann Gautier --tos-fw <optee_directory>/tee-header_v2.bin \ 193ce7f8044SYann Gautier --tos-fw-extra1 <optee_directory>/tee-pager_v2.bin \ 194ce7f8044SYann Gautier --tos-fw-extra2 <optee_directory>/tee-pageable_v2.bin \ 195ce7f8044SYann Gautier --tos-fw-cert build/stm32mp1/release/tos_fw_content.crt \ 196ce7f8044SYann Gautier --tos-fw-key-cert build/stm32mp1/release/tos_fw_key.crt \ 197ce7f8044SYann Gautier --nt-fw <u-boot_directory>/u-boot-nodtb.bin \ 198ce7f8044SYann Gautier --nt-fw-cert build/stm32mp1/release/nt_fw_content.crt \ 199ce7f8044SYann Gautier --nt-fw-key-cert build/stm32mp1/release/nt_fw_key.crt \ 200ce7f8044SYann Gautier --hw-config <u-boot_directory>/u-boot.dtb \ 201ce7f8044SYann Gautier --fw-config build/stm32mp1/release/fdts/fw-config.dtb \ 202ce7f8044SYann Gautier --stm32mp-cfg-cert build/stm32mp1/release/stm32mp_cfg_cert.crt 203ce7f8044SYann Gautier 204ce7f8044SYann Gautier tools/fiptool/fiptool create --tos-fw <optee_directory>/tee-header_v2.bin \ 205ce7f8044SYann Gautier --tos-fw-extra1 <optee_directory>/tee-pager_v2.bin \ 206ce7f8044SYann Gautier --tos-fw-extra2 <optee_directory>/tee-pageable_v2.bin \ 207ce7f8044SYann Gautier --nt-fw <u-boot_directory>/u-boot-nodtb.bin \ 208ce7f8044SYann Gautier --hw-config <u-boot_directory>/u-boot.dtb \ 209ce7f8044SYann Gautier --fw-config build/stm32mp1/release/fdts/fw-config.dtb \ 210d526d00aSLionel Debieve --trusted-key-cert build/stm32mp1/release/trusted_key.crt \ 211ce7f8044SYann Gautier --tos-fw-cert build/stm32mp1/release/tos_fw_content.crt \ 212ce7f8044SYann Gautier --tos-fw-key-cert build/stm32mp1/release/tos_fw_key.crt \ 213ce7f8044SYann Gautier --nt-fw-cert build/stm32mp1/release/nt_fw_content.crt \ 214ce7f8044SYann Gautier --nt-fw-key-cert build/stm32mp1/release/nt_fw_key.crt \ 215ce7f8044SYann Gautier --stm32mp-cfg-cert build/stm32mp1/release/stm32mp_cfg_cert.crt \ 216ce7f8044SYann Gautier build/stm32mp1/release/stm32mp1.fip 217ce7f8044SYann Gautier 218ce7f8044SYann Gautier 219ce7f8044SYann Gautier.. _STM32MP1 Series: https://www.st.com/en/microcontrollers-microprocessors/stm32mp1-series.html 220ce7f8044SYann Gautier.. _STM32MP1 part number codification: https://wiki.st.com/stm32mpu/wiki/STM32MP15_microprocessor#Part_number_codification 221ce7f8044SYann Gautier 222*f811a99eSYann Gautier*Copyright (c) 2023-2024, STMicroelectronics - All Rights Reserved* 223