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