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