xref: /rk3399_ARM-atf/docs/plat/st/stm32mp1.rst (revision ce7f8044c7a545bb5f78d7b62085c0f220ea1b8d)
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