1*91f16700SchasingluluSTM32MP2 2*91f16700Schasinglulu======== 3*91f16700Schasinglulu 4*91f16700SchasingluluSTM32MP2 is a microprocessor designed by STMicroelectronics 5*91f16700Schasinglulubased on Arm Cortex-A35. 6*91f16700Schasinglulu 7*91f16700SchasingluluFor TF-A common configuration of STM32 MPUs, please check 8*91f16700Schasinglulu:ref:`STM32 MPUs` page. 9*91f16700Schasinglulu 10*91f16700SchasingluluSTM32MP2 Versions 11*91f16700Schasinglulu----------------- 12*91f16700Schasinglulu 13*91f16700SchasingluluThe STM32MP25 series is available in 4 different lines which are pin-to-pin compatible: 14*91f16700Schasinglulu 15*91f16700Schasinglulu- STM32MP257: Dual Cortex-A35 cores, Cortex-M33 core - 3x Ethernet (2+1 switch) - 3x CAN FD – H264 - 3D GPU – AI / NN - LVDS 16*91f16700Schasinglulu- STM32MP255: Dual Cortex-A35 cores, Cortex-M33 core - 2x Ethernet – 3x CAN FD - H264 - 3D GPU – AI / NN - LVDS 17*91f16700Schasinglulu- STM32MP253: Dual Cortex-A35 cores, Cortex-M33 core - 2x Ethernet – 3x CAN FD - LVDS 18*91f16700Schasinglulu- STM32MP251: Single Cortex-A35 core, Cortex-M33 core - 1x Ethernet 19*91f16700Schasinglulu 20*91f16700SchasingluluEach line comes with a security option (cryptography & secure boot) and a Cortex-A frequency option: 21*91f16700Schasinglulu 22*91f16700Schasinglulu- A Basic + Cortex-A35 @ 1GHz 23*91f16700Schasinglulu- C Secure Boot + HW Crypto + Cortex-A35 @ 1GHz 24*91f16700Schasinglulu- D Basic + Cortex-A35 @ 1.5GHz 25*91f16700Schasinglulu- F Secure Boot + HW Crypto + Cortex-A35 @ 1.5GHz 26*91f16700Schasinglulu 27*91f16700SchasingluluMemory mapping 28*91f16700Schasinglulu-------------- 29*91f16700Schasinglulu 30*91f16700Schasinglulu:: 31*91f16700Schasinglulu 32*91f16700Schasinglulu 0x00000000 +-----------------+ 33*91f16700Schasinglulu | | 34*91f16700Schasinglulu | ... | 35*91f16700Schasinglulu | | 36*91f16700Schasinglulu 0x0E000000 +-----------------+ \ 37*91f16700Schasinglulu | BL31 | | 38*91f16700Schasinglulu +-----------------+ | 39*91f16700Schasinglulu | ... | | 40*91f16700Schasinglulu 0x0E012000 +-----------------+ | 41*91f16700Schasinglulu | BL2 DTB | | Embedded SRAM 42*91f16700Schasinglulu 0x0E016000 +-----------------+ | 43*91f16700Schasinglulu | BL2 | | 44*91f16700Schasinglulu 0x0E040000 +-----------------+ / 45*91f16700Schasinglulu | | 46*91f16700Schasinglulu | ... | 47*91f16700Schasinglulu | | 48*91f16700Schasinglulu 0x40000000 +-----------------+ 49*91f16700Schasinglulu | | 50*91f16700Schasinglulu | | Devices 51*91f16700Schasinglulu | | 52*91f16700Schasinglulu 0x80000000 +-----------------+ \ 53*91f16700Schasinglulu | | | 54*91f16700Schasinglulu | | | Non-secure RAM (DDR) 55*91f16700Schasinglulu | | | 56*91f16700Schasinglulu 0xFFFFFFFF +-----------------+ / 57*91f16700Schasinglulu 58*91f16700Schasinglulu 59*91f16700SchasingluluBuild Instructions 60*91f16700Schasinglulu------------------ 61*91f16700Schasinglulu 62*91f16700SchasingluluSTM32MP2x specific flags 63*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~ 64*91f16700Schasinglulu 65*91f16700SchasingluluDedicated STM32MP2 build flags: 66*91f16700Schasinglulu 67*91f16700Schasinglulu- | ``STM32MP_DDR_FIP_IO_STORAGE``: to store DDR firmware in FIP. 68*91f16700Schasinglulu | Default: 1 69*91f16700Schasinglulu- | ``STM32MP25``: to select STM32MP25 variant configuration. 70*91f16700Schasinglulu | Default: 1 71*91f16700Schasinglulu 72*91f16700SchasingluluTo compile the correct DDR driver, one flag must be set among: 73*91f16700Schasinglulu 74*91f16700Schasinglulu- | ``STM32MP_DDR3_TYPE``: to compile DDR3 driver and DT. 75*91f16700Schasinglulu | Default: 0 76*91f16700Schasinglulu- | ``STM32MP_DDR4_TYPE``: to compile DDR4 driver and DT. 77*91f16700Schasinglulu | Default: 0 78*91f16700Schasinglulu- | ``STM32MP_LPDDR4_TYPE``: to compile LpDDR4 driver and DT. 79*91f16700Schasinglulu | Default: 0 80*91f16700Schasinglulu 81*91f16700Schasinglulu 82*91f16700SchasingluluBoot with FIP 83*91f16700Schasinglulu~~~~~~~~~~~~~ 84*91f16700SchasingluluYou need to build BL2, BL31, BL32 (OP-TEE) and BL33 (U-Boot) before building FIP binary. 85*91f16700Schasinglulu 86*91f16700SchasingluluU-Boot 87*91f16700Schasinglulu______ 88*91f16700Schasinglulu 89*91f16700Schasinglulu.. code:: bash 90*91f16700Schasinglulu 91*91f16700Schasinglulu cd <u-boot_directory> 92*91f16700Schasinglulu make stm32mp25_defconfig 93*91f16700Schasinglulu make DEVICE_TREE=stm32mp257f-ev1 all 94*91f16700Schasinglulu 95*91f16700SchasingluluOP-TEE 96*91f16700Schasinglulu______ 97*91f16700Schasinglulu 98*91f16700Schasinglulu.. code:: bash 99*91f16700Schasinglulu 100*91f16700Schasinglulu cd <optee_directory> 101*91f16700Schasinglulu make CROSS_COMPILE64=aarch64-none-elf- CROSS_COMPILE32=arm-none-eabi- 102*91f16700Schasinglulu ARCH=arm PLATFORM=stm32mp2 \ 103*91f16700Schasinglulu CFG_EMBED_DTB_SOURCE_FILE=stm32mp257f-ev1.dts 104*91f16700Schasinglulu 105*91f16700SchasingluluTF-A BL2 & BL31 106*91f16700Schasinglulu_______________ 107*91f16700SchasingluluTo build TF-A BL2 with its STM32 header and BL31 for SD-card boot: 108*91f16700Schasinglulu 109*91f16700Schasinglulu.. code:: bash 110*91f16700Schasinglulu 111*91f16700Schasinglulu make CROSS_COMPILE=aarch64-none-elf- PLAT=stm32mp2 \ 112*91f16700Schasinglulu STM32MP_DDR4_TYPE=1 SPD=opteed \ 113*91f16700Schasinglulu DTB_FILE_NAME=stm32mp257f-ev1.dtb STM32MP_SDMMC=1 114*91f16700Schasinglulu 115*91f16700SchasingluluFor other boot devices, you have to replace STM32MP_SDMMC in the previous command 116*91f16700Schasingluluwith the desired device flag. 117*91f16700Schasinglulu 118*91f16700Schasinglulu 119*91f16700SchasingluluFIP 120*91f16700Schasinglulu___ 121*91f16700Schasinglulu 122*91f16700Schasinglulu.. code:: bash 123*91f16700Schasinglulu 124*91f16700Schasinglulu make CROSS_COMPILE=aarch64-none-elf- PLAT=stm32mp2 \ 125*91f16700Schasinglulu STM32MP_DDR4_TYPE=1 SPD=opteed \ 126*91f16700Schasinglulu DTB_FILE_NAME=stm32mp257f-ev1.dtb \ 127*91f16700Schasinglulu BL33=<u-boot_directory>/u-boot-nodtb.bin \ 128*91f16700Schasinglulu BL33_CFG=<u-boot_directory>/u-boot.dtb \ 129*91f16700Schasinglulu BL32=<optee_directory>/tee-header_v2.bin \ 130*91f16700Schasinglulu BL32_EXTRA1=<optee_directory>/tee-pager_v2.bin 131*91f16700Schasinglulu fip 132*91f16700Schasinglulu 133*91f16700Schasinglulu*Copyright (c) 2023, STMicroelectronics - All Rights Reserved* 134