blob: 8cf7129923360d1ed98970ea6ecd49997bd9756a [file] [log] [blame]
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +01001.. SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
Patrice Chotard90e82782021-01-04 17:00:56 +01002.. sectionauthor:: Patrick Delaunay <patrick.delaunay@foss.st.com>
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +01003
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +02004STM32MP1xx boards
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +01005=================
6
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +02007This is a quick instruction for setup STMicroelectronics STM32MP1xx boards.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +01008
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +02009Further information can be found in STMicroelectronics STM32 WIKI_.
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +020010
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +010011Supported devices
12-----------------
13
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +020014U-Boot supports all the STMicroelectronics MPU with the associated boards
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +010015
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +020016 - STMP32MP15x SoCs:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +010017
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +020018 - STM32MP157
19 - STM32MP153
20 - STM32MP151
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +010021
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +020022 - STMP32MP13x SoCs:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +010023
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +020024 - STM32MP135
25 - STM32MP133
26 - STM32MP131
Patrick Delaunaydb33b0e2020-02-26 11:26:43 +010027
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +020028Everything is supported in Linux but U-Boot is limited to the boot device:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +010029
30 1. UART
31 2. SD card/MMC controller (SDMMC)
32 3. NAND controller (FMC)
33 4. NOR controller (QSPI)
34 5. USB controller (OTG DWC2)
35 6. Ethernet controller
36
37And the necessary drivers
38
39 1. I2C
40 2. STPMIC1 (PMIC and regulator)
41 3. Clock, Reset, Sysreset
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +020042 4. Fuse (BSEC)
43 5. OP-TEE
44 6. ETH
45 7. USB host
46 8. WATCHDOG
47 9. RNG
48 10. RTC
49
50STM32MP15x
51``````````
52
53The STM32MP15x is a Cortex-A7 MPU aimed at various applications.
54
55It features:
56
57 - Dual core Cortex-A7 application core (Single on STM32MP151)
58 - 2D/3D image composition with GPU (only on STM32MP157)
59 - Standard memories interface support
60 - Standard connectivity, widely inherited from the STM32 MCU family
61 - Comprehensive security support
62 - Cortex M4 coprocessor
63
64Each line comes with a security option (cryptography & secure boot) and
65a Cortex-A frequency option:
66
67 - A : Cortex-A7 @ 650 MHz
68 - C : Secure Boot + HW Crypto + Cortex-A7 @ 650 MHz
69 - D : Cortex-A7 @ 800 MHz
70 - F : Secure Boot + HW Crypto + Cortex-A7 @ 800 MHz
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +010071
72Currently the following boards are supported:
73
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +010074 + stm32mp157a-dk1.dts
75 + stm32mp157c-dk2.dts
76 + stm32mp157c-ed1.dts
77 + stm32mp157c-ev1.dts
Marek Vasut526c9512020-03-31 19:51:36 +020078 + stm32mp15xx-dhcor-avenger96.dts
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +010079
Patrick Delaunayddba40a2022-07-05 16:55:57 +020080The SCMI variant of each board is supported by a specific "scmi" device tree:
81 + stm32mp157a-dk1-scmi.dts
82 + stm32mp157c-dk2-scmi.dts
83 + stm32mp157c-ed1-scmi.dts
84 + stm32mp157c-ev1-scmi.dts
85
86SCMI variant is used only with stm32mp15_defconfig, when the resources are
87secured with RCC_TZCR.TZEN=1 in OP-TEE. The access to these reset and clock
88resources are provided by OP-TEE and the associated SCMI services.
89
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +020090STM32MP13x
91``````````
92
93The STM32MP13x is a single Cortex-A7 MPU aimed at various applications.
94
95Currently the following boards are supported:
96
97 + stm32mp135f-dk.dts
98
99
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100100Boot Sequences
101--------------
102
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +02001032 boot configurations are supported with:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100104
105+----------+------------------------+-------------------------+--------------+
106| **ROM** | **FSBL** | **SSBL** | **OS** |
107+ **code** +------------------------+-------------------------+--------------+
108| | First Stage Bootloader | Second Stage Bootloader | Linux Kernel |
109+ +------------------------+-------------------------+--------------+
110| | embedded RAM | DDR |
111+----------+------------------------+-------------------------+--------------+
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200112| TrustZone| secure monitor |
113+----------+------------------------+-------------------------+--------------+
114
115The trusted boot chain is recommended with:
116
117- FSBL = **TF-A BL2**
118- Secure monitor = **OP-TEE**
119- SSBL = **U-Boot**
120
121It is the only supported boot chain for STM32MP13x family.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100122
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200123The **Trusted** boot chain with TF-A_
124`````````````````````````````````````
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100125
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200126defconfig_file :
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200127 + **stm32mp15_defconfig** and **stm32mp13_defconfig** (for TF-A_ with FIP support)
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200128 + **stm32mp15_trusted_defconfig** (for TF-A_ without FIP support)
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100129
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200130 +-------------+--------------------------+------------+-------+
131 | ROM code | FSBL | SSBL | OS |
132 + +--------------------------+------------+-------+
133 | |Trusted Firmware-A (TF-A_)| U-Boot | Linux |
134 +-------------+--------------------------+------------+-------+
135 | TrustZone |secure monitor = SPMin or OP-TEE_ |
136 +-------------+--------------------------+------------+-------+
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100137
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200138TF-A_ and OP-TEE_ are 2 separate projects, with their git repository;
139they are compiled separately.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100140
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200141TF-A_ (BL2) initialize the DDR and loads the next stage binaries from a FIP file:
142 + BL32: a secure monitor BL32 = SPMin provided by TF-A_ or OP-TEE_ :
143 performs a full initialization of Secure peripherals and provides service
144 to normal world
145 + BL33: a non-trusted firmware = U-Boot, running in normal world and uses
146 the secure monitor to access to secure resources.
147 + HW_CONFIG: The hardware configuration file = the U-Boot device tree
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100148
Patrick Delaunayddba40a2022-07-05 16:55:57 +0200149The scmi variant of each device tree is only support with OP-TEE as secure
150monitor, with stm32mp15_defconfig.
151
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200152The **Basic** boot chain with SPL (for STM32MP15x)
153``````````````````````````````````````````````````
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100154
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200155defconfig_file :
156 + **stm32mp15_basic_defconfig**
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100157
158 +-------------+------------+------------+-------+
159 | ROM code | FSBL | SSBL | OS |
160 + +------------+------------+-------+
161 | |U-Boot SPL | U-Boot | Linux |
162 +-------------+------------+------------+-------+
163 | TrustZone | | PSCI from U-Boot |
164 +-------------+------------+------------+-------+
165
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200166SPL has limited security initialization.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100167
168U-Boot is running in secure mode and provide a secure monitor to the kernel
169with only PSCI support (Power State Coordination Interface defined by ARM).
170
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200171.. warning:: This alternate **basic** boot chain with SPL is not supported/promoted by STMicroelectronics to make product.
172
173Device Tree
174-----------
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100175
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200176All the STM32MP15x and STM32MP13x boards supported by U-Boot use the same generic board
177stm32mp1 which supports all the bootable devices.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100178
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200179Each STMicroelectronics board is only configured with the associated device tree.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100180
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200181STM32MP15x device Tree Selection
182````````````````````````````````
Patrick Delaunaya60ef162024-10-11 17:31:50 +0200183The supported device trees for STM32MP15x (**stm32mp15_defconfig** for TF-A_
184with FIP support) are:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100185
186+ ev1: eval board with pmic stpmic1 (ev1 = mother board + daughter ed1)
187
Patrick Delaunaya60ef162024-10-11 17:31:50 +0200188 + **stm32mp157c-ev1-scmi**
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100189 + stm32mp157c-ev1
190
191+ ed1: daughter board with pmic stpmic1
192
Patrick Delaunaya60ef162024-10-11 17:31:50 +0200193 + **stm32mp157c-ed1-scmi**
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100194 + stm32mp157c-ed1
195
196+ dk1: Discovery board
197
Patrick Delaunaya60ef162024-10-11 17:31:50 +0200198 + **stm32mp157a-dk1-scmi**
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100199 + stm32mp157a-dk1
200
201+ dk2: Discovery board = dk1 with a BT/WiFI combo and a DSI panel
202
Patrick Delaunaya60ef162024-10-11 17:31:50 +0200203 + **stm32mp157c-dk2-scmi**
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100204 + stm32mp157c-dk2
205
Patrick Delaunaya60ef162024-10-11 17:31:50 +0200206The scmi variant of each device tree is only supported with OP-TEE as secure
207monitor and it is the configuration **recommended** by STMicroelectronics for
208product, with secured system resources (RCC_TZCR.TZEN=1).
209
210The supported device trees for STM32MP15x (stm32mp15_trusted_defconfig
211TF-A without FIP support and stm32mp15_basic_defconfig with SPL) are:
212
213+ the same STMicroelectronics boards with the no scmi device tree files:
214
215 + stm32mp157c-ev1
216 + stm32mp157c-ed1
217 + stm32mp157a-dk1
218 + stm32mp157c-dk2
219
Marek Vasut526c9512020-03-31 19:51:36 +0200220+ avenger96: Avenger96 board from Arrow Electronics based on DH Elec. DHCOR SoM
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100221
Marek Vasut526c9512020-03-31 19:51:36 +0200222 + stm32mp15xx-dhcor-avenger96
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100223
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200224STM32MP13x device Tree Selection
225````````````````````````````````
Patrick Delaunaya60ef162024-10-11 17:31:50 +0200226The supported device trees for STM32MP13x (**stm32mp13_defconfig**) are:
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200227
228+ dk: Discovery board
229
Patrick Delaunaya60ef162024-10-11 17:31:50 +0200230 + **stm32mp135f-dk**
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200231
232
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100233Build Procedure
234---------------
235
2361. Install the required tools for U-Boot
237
238 * install package needed in U-Boot makefile
239 (libssl-dev, swig, libpython-dev...)
240
241 * install ARMv7 toolchain for 32bit Cortex-A (from Linaro,
242 from SDK for STM32MP15x, or any crosstoolchains from your distribution)
243 (you can use any gcc cross compiler compatible with U-Boot)
244
2452. Set the cross compiler::
246
247 # export CROSS_COMPILE=/path/to/toolchain/arm-linux-gnueabi-
248
2493. Select the output directory (optional)::
250
251 # export KBUILD_OUTPUT=/path/to/output
252
253 for example: use one output directory for each configuration::
254
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200255 # export KBUILD_OUTPUT=stm32mp13
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200256 # export KBUILD_OUTPUT=stm32mp15
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100257 # export KBUILD_OUTPUT=stm32mp15_trusted
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100258 # export KBUILD_OUTPUT=stm32mp15_basic
259
260 you can build outside of code directory::
261
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200262 # export KBUILD_OUTPUT=../build/stm32mp15
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100263
2644. Configure U-Boot::
265
266 # make <defconfig_file>
267
268 with <defconfig_file>:
269
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200270 - For **trusted** boot mode :
271 - For STM32MP13x: **stm32mp13_defconfig**
272 - For STM32MP15x: **stm32mp15_defconfig** or stm32mp15_trusted_defconfig
273 - For STM32MP15x basic boot mode: stm32mp15_basic_defconfig
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100274
2755. Configure the device-tree and build the U-Boot image::
276
277 # make DEVICE_TREE=<name> all
278
279 Examples:
280
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200281 a) trusted boot with FIP on STM32MP15x ev1::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100282
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200283 # export KBUILD_OUTPUT=stm32mp15
284 # make stm32mp15_defconfig
Patrick Delaunayddba40a2022-07-05 16:55:57 +0200285 # make DEVICE_TREE=stm32mp157c-ev1-scmi all
286
287 or without SCMI support
288
289 # export KBUILD_OUTPUT=stm32mp15
290 # make stm32mp15_defconfig
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100291 # make DEVICE_TREE=stm32mp157c-ev1 all
292
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200293 b) trusted boot on STM32MP13x discovery board::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100294
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200295 # export KBUILD_OUTPUT=stm32mp13
296 # make stm32mp13_defconfig
297 # make DEVICE_TREE=stm32mp135f-dk all
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100298
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200299 DEVICE_TEE selection is optional as stm32mp135f-dk is the default board of the defconfig::
300
301 # make stm32mp13_defconfig
302 # make all
303
304 c) basic boot on STM32MP15x ev1::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100305
306 # export KBUILD_OUTPUT=stm32mp15_basic
307 # make stm32mp15_basic_defconfig
308 # make DEVICE_TREE=stm32mp157c-ev1 all
309
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200310 d) basic boot on STM32MP15x ed1::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100311
312 # export KBUILD_OUTPUT=stm32mp15_basic
313 # make stm32mp15_basic_defconfig
314 # make DEVICE_TREE=stm32mp157c-ed1 all
315
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200316 e) basic boot on STM32MP15x dk1::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100317
318 # export KBUILD_OUTPUT=stm32mp15_basic
319 # make stm32mp15_basic_defconfig
320 # make DEVICE_TREE=stm32mp157a-dk1 all
321
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200322 f) basic boot on STM32MP15x avenger96::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100323
324 # export KBUILD_OUTPUT=stm32mp15_basic
325 # make stm32mp15_basic_defconfig
Marek Vasut526c9512020-03-31 19:51:36 +0200326 # make DEVICE_TREE=stm32mp15xx-dhcor-avenger96 all
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100327
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +02003286. U-Boot Output files
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100329
330 So in the output directory (selected by KBUILD_OUTPUT),
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200331 you can found the needed U-Boot files:
332
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200333 - stm32mp13_defconfig = **u-boot-nodtb.bin** and **u-boot.dtb**
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200334 - stm32mp15_defconfig = **u-boot-nodtb.bin** and **u-boot.dtb**
335
336 - stm32mp15_trusted_defconfig = u-boot.stm32
337
338 - stm32mp15_basic_defconfig
339
340 - FSBL = spl/u-boot-spl.stm32
341
342 - SSBL = u-boot.img (without CONFIG_SPL_LOAD_FIT) or
343 u-boot.itb (with CONFIG_SPL_LOAD_FIT=y)
344
3457. TF-A_ compilation
346
347 This step is required only for **Trusted** boot (stm32mp15_defconfig and
348 stm32mp15_trusted_defconfig); see OP-TEE_ and TF-A_ documentation for build
349 commands.
350
351 - For TF-A_ with FIP support: **stm32mp15_defconfig**
352
353 - with OP-TEE_ support, compile the OP-TEE to generate the binary included
354 in FIP
355
356 - after TF-A compilation, the used files are:
357
358 - TF-A_ BL2 => FSBL = **tf-a.stm32**
359
360 - FIP => **fip.bin**
361
362 FIP file includes the 2 files given in arguments of TF-A_ compilation:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100363
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200364 - BL33=u-boot-nodtb.bin
365 - BL33_CFG=u-boot.dtb
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100366
Michal Simek50fa1182023-05-17 09:17:16 +0200367 You can also update a existing FIP after U-Boot compilation with fiptool,
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200368 a tool provided by TF-A_::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100369
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200370 # fiptool update --nt-fw u-boot-nodtb.bin --hw-config u-boot.dtb fip-stm32mp157c-ev1.bin
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100371
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200372 - For TF-A_ without FIP support : **stm32mp15_trusted_defconfig**
373 SPMin is used and the used files are:
374
375 - FSBL = **tf-a.stm32** (provided by TF-A_ compilation, contening BL2 and
376 BL32 = SPMin)
377
378 - SSBL = **u-boot.stm32** used instead of fip.bin in next chapters
379
3808. The bootloaders files
381
382+ The **ROM code** expects FSBL binaries with STM32 image header =
383 tf-a.stm32 or u-boot-spl.stm32
384
385According the FSBL / the boot mode:
386
387+ **TF-A** expect a FIP binary = fip.bin, including the OS monitor (SPMin or
388 OP-TEE_) and the U-Boot binary + device tree
389
390 or, without FIP support, binaries with STM32 image header: U-Boot
391 = u-boot.stm32 and eventually OP-TEE files (tee-header.stm32, tee-pageable.stm32,
392 tee-pager.stm32)
393
394+ **SPL** expects SSBL = U-Boot with uImage header = u-boot.img
395 or FIT = u-boot.itb.
396
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100397
398Switch Setting for Boot Mode
399----------------------------
400
401You can select the boot mode, on the board with one switch, to select
402the boot pin values = BOOT0, BOOT1, BOOT2
403
404 +-------------+---------+---------+---------+
405 |*Boot Mode* | *BOOT2* | *BOOT1* | *BOOT0* |
406 +=============+=========+=========+=========+
407 | Recovery | 0 | 0 | 0 |
408 +-------------+---------+---------+---------+
409 | NOR | 0 | 0 | 1 |
410 +-------------+---------+---------+---------+
411 | eMMC | 0 | 1 | 0 |
412 +-------------+---------+---------+---------+
413 | NAND | 0 | 1 | 1 |
414 +-------------+---------+---------+---------+
415 | Reserved | 1 | 0 | 0 |
416 +-------------+---------+---------+---------+
417 | SD-Card | 1 | 0 | 1 |
418 +-------------+---------+---------+---------+
419 | Recovery | 1 | 1 | 0 |
420 +-------------+---------+---------+---------+
421 | SPI-NAND | 1 | 1 | 1 |
422 +-------------+---------+---------+---------+
423
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200424- on the STM32MP15x **daughter board ed1 = MB1263** with the switch SW1
425- on STM32MP15x **Avenger96** with switch S3 (NOR and SPI-NAND are not applicable)
426- on board STM32MP15x **DK1/DK2** with the switch SW1 = BOOT0, BOOT2
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100427 with only 2 pins available (BOOT1 is forced to 0 and NOR not supported),
428 the possible value becomes:
429
430 +-------------+---------+---------+
431 |*Boot Mode* | *BOOT2* | *BOOT0* |
432 +=============+=========+=========+
433 | Recovery | 0 | 0 |
434 +-------------+---------+---------+
435 | NOR (NA)| 0 | 1 |
436 +-------------+---------+---------+
437 | Reserved | 1 | 0 |
438 +-------------+---------+---------+
439 | SD-Card | 1 | 1 |
440 +-------------+---------+---------+
441
442Recovery is a boot from serial link (UART/USB) and it is used with
443STM32CubeProgrammer tool to load executable in RAM and to update the flash
444devices available on the board (NOR/NAND/eMMC/SD card).
445
446The communication between HOST and board is based on
447
448 - for UARTs : the uart protocol used with all MCU STM32
449 - for USB : based on USB DFU 1.1 (without the ST extensions used on MCU STM32)
450
451Prepare an SD card
452------------------
453
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200454The minimal requirements for STMP32MP15x and STM32MP13x boot up to U-Boot are:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100455
456- GPT partitioning (with gdisk or with sgdisk)
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200457- 2 fsbl partitions, named "fsbl1" and "fsbl2", size at least 256KiB
458- one partition named "fip" for FIP or U-Boot (TF-A_ search the "fip"
459 partition and SPL search the 3th partition, because
460 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=3)
461
462The 2 fsbl partitions have the same content and are present to guarantee a
463fail-safe update of FSBL; fsbl2 can be omitted if this ROM code feature is
464not required.
465
466Without FIP support in TF-A_, the 3rd partition "fip" for u-boot.stm32 must
467be named "ssbl".
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100468
469Then the minimal GPT partition is:
470
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200471For TF-A_ with FIP support:
472
473 +-------+--------+---------+------------------------+
474 | *Num* | *Name* | *Size* | *Content* |
475 +=======+========+=========+========================+
476 | 1 | fsbl1 | 256 KiB | TF-A_ BL2 (tf-a.stm32) |
477 +-------+--------+---------+------------------------+
478 | 2 | fsbl2 | 256 KiB | TF-A_ BL2 (tf-a.stm32) |
479 +-------+--------+---------+------------------------+
480 | 3 | fip | 4MB | fip.bin |
481 +-------+--------+---------+------------------------+
482 | 4 | <any> | <any> | Rootfs |
483 +-------+--------+---------+------------------------+
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100484
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200485or:
486
487 +-------+--------+---------+------------------------+------------------------+
488 | *Num* | *Name* | *Size* | *Trusted boot content* | *Basic boot content* |
489 +=======+========+=========+========================+========================+
490 | 1 | fsbl1 | 256 KiB | TF-A_ BL2 (tf-a.stm32) | SPL (u-boot-spl.stm32) |
491 +-------+--------+---------+------------------------+------------------------+
492 | 2 | fsbl2 | 256 KiB | TF-A_ BL2 (tf-a.stm32) | SPL (u-boot-spl.stm32) |
493 +-------+--------+---------+------------------------+------------------------+
494 | 3 | ssbl | 2MB | U-Boot (u-boot.stm32) | U-Boot (u-boot.img) |
495 +-------+--------+---------+------------------------+------------------------+
496 | 4 | <any> | <any> | Rootfs |
497 +-------+--------+---------+------------------------+------------------------+
498
499And the 4th partition (Rootfs) is marked bootable with a file extlinux.conf
Patrick Delaunay3281cb62023-01-24 10:16:02 +0100500following the Generic Distribution feature (see :doc:`../../develop/distro` for
501use).
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100502
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200503The size of fip or ssbl partition must be enough for the associated binary file,
5044MB and 2MB are default values.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100505
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200506According the used card reader select the correct block device
507(for example /dev/sdx or /dev/mmcblk0), in the next example, it is /dev/mmcblk0
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100508
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200509For example:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100510
511a) remove previous formatting::
512
513 # sgdisk -o /dev/<SD card dev>
514
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200515b) create minimal image for FIP
516
517 For FIP support in TF-A_::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100518
519 # sgdisk --resize-table=128 -a 1 \
520 -n 1:34:545 -c 1:fsbl1 \
521 -n 2:546:1057 -c 2:fsbl2 \
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200522 -n 3:1058:9249 -c 3:fip \
523 -n 4:9250: -c 4:rootfs -A 4:set:2 \
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100524 -p /dev/<SD card dev>
525
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200526 With gpt table with 128 entries an the partition 4 marked bootable (bit 2).
527
528 For basic boot mode or without FIP support in TF-A_::
529
530 # sgdisk --resize-table=128 -a 1 \
531 -n 1:34:545 -c 1:fsbl1 \
532 -n 2:546:1057 -c 2:fsbl2 \
533 -n 3:1058:5153 -c 3:ssbl \
534 -n 4:5154: -c 4:rootfs -A 4:set:2 \
535 -p /dev/<SD card dev>
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100536
537c) copy the FSBL (2 times) and SSBL file on the correct partition.
538 in this example in partition 1 to 3
539
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200540 for trusted boot: ::
541
542 # dd if=tf-a.stm32 of=/dev/mmcblk0p1
543 # dd if=tf-a.stm32 of=/dev/mmcblk0p2
544 # dd if=fip.bin of=/dev/mmcblk0p3
545 OR
546 dd if=u-boot.stm32 of=/dev/mmcblk0p3 # Without FIT support
547
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100548 for basic boot mode : <SD card dev> = /dev/mmcblk0::
549
550 # dd if=u-boot-spl.stm32 of=/dev/mmcblk0p1
551 # dd if=u-boot-spl.stm32 of=/dev/mmcblk0p2
Marek Vasutdb4374f2021-03-06 21:44:17 +0100552 # dd if=u-boot.img of=/dev/mmcblk0p3 # Without CONFIG_SPL_LOAD_FIT
553 OR
554 dd if=u-boot.itb of=/dev/mmcblk0p3 # With CONFIG_SPL_LOAD_FIT=y
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100555
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100556To boot from SD card, select BootPinMode = 1 0 1 and reset.
557
558Prepare eMMC
559------------
560
561You can use U-Boot to copy binary in eMMC.
562
563In the next example, you need to boot from SD card and the images
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200564(tf-a.stm32, fip.bin / u-boot-spl.stm32, u-boot.img for systems without
565CONFIG_SPL_LOAD_FIT or u-boot.itb for systems with CONFIG_SPL_LOAD_FIT=y) are
566presents on SD card (mmc 0) in ext4 partition 4 (bootfs)
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100567
568To boot from SD card, select BootPinMode = 1 0 1 and reset.
569
570Then you update the eMMC with the next U-Boot command :
571
572a) prepare GPT on eMMC,
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200573 example with 3 partitions, fip, bootfs and roots::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100574
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200575 # setenv emmc_part "name=fip,size=4MiB;name=bootfs,type=linux,bootable,size=64MiB;name=rootfs,type=linux,size=512"
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100576 # gpt write mmc 1 ${emmc_part}
577
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200578b) copy FSBL, TF-A_ or SPL, on first eMMC boot partition
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100579 (SPL max size is 256kB, with LBA 512, 0x200)::
580
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200581 # ext4load mmc 0:4 0xC0000000 tf-a.stm32
582 or
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100583 # ext4load mmc 0:4 0xC0000000 u-boot-spl.stm32
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200584
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100585 # mmc dev 1
586 # mmc partconf 1 1 1 1
587 # mmc write ${fileaddr} 0 200
588 # mmc partconf 1 1 1 0
589
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200590c) copy SSBL, FIP or U-Boot binary, in first GPT partition of eMMC::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100591
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200592 # ext4load mmc 0:4 0xC0000000 fip.bin
593 or
Marek Vasutdb4374f2021-03-06 21:44:17 +0100594 # ext4load mmc 0:4 0xC0000000 u-boot.img # Without CONFIG_SPL_LOAD_FIT
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200595 or
596 # ext4load mmc 0:4 0xC0000000 u-boot.itb # With CONFIG_SPL_LOAD_FIT=y
597
598
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100599 # mmc dev 1
600 # part start mmc 1 1 partstart
601 # mmc write ${fileaddr} ${partstart} ${filesize}
602
603To boot from eMMC, select BootPinMode = 0 1 0 and reset.
604
605MAC Address
606-----------
607
608Please read doc/README.enetaddr for the implementation guidelines for mac id
609usage. Basically, environment has precedence over board specific storage.
610
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200611For STMicroelectronics board, it is retrieved in:
612
613 - STM32MP15x OTP:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100614
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200615 - OTP_57[31:0] = MAC_ADDR[31:0]
616 - OTP_58[15:0] = MAC_ADDR[47:32]
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100617
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200618 - STM32MP13x OTP:
619
620 - OTP_57[31:0] = MAC_ADDR0[31:0]
621 - OTP_58[15:0] = MAC_ADDR0[47:32]
622 - OTP_58[31:16] = MAC_ADDR1[15:0]
623 - OTP_59[31:0] = MAC_ADDR1[47:16]
624
625To program a MAC address on virgin STM32MP15x OTP words above, you can use the fuse command
Patrick Delaunayb10cddf2020-02-12 19:37:38 +0100626on bank 0 to access to internal OTP and lock them:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100627
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200628In the next example we are using the 2 OTPs used on STM32MP15x.
629
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100630Prerequisite: check if a MAC address isn't yet programmed in OTP
631
Patrick Delaunayb10cddf2020-02-12 19:37:38 +01006321) check OTP: their value must be equal to 0::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100633
Patrick Delaunayb10cddf2020-02-12 19:37:38 +0100634 STM32MP> fuse sense 0 57 2
635 Sensing bank 0:
636 Word 0x00000039: 00000000 00000000
637
6382) check environment variable::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100639
Patrick Delaunayb10cddf2020-02-12 19:37:38 +0100640 STM32MP> env print ethaddr
641 ## Error: "ethaddr" not defined
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100642
Patrick Delaunayd5388292023-01-06 13:20:15 +01006433) check lock status of fuse 57 & 58 (at 0x39, 0=unlocked, 0x40000000=locked)::
Patrick Delaunayb10cddf2020-02-12 19:37:38 +0100644
645 STM32MP> fuse sense 0 0x10000039 2
646 Sensing bank 0:
647 Word 0x10000039: 00000000 00000000
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100648
649Example to set mac address "12:34:56:78:9a:bc"
650
6511) Write OTP::
652
653 STM32MP> fuse prog -y 0 57 0x78563412 0x0000bc9a
654
6552) Read OTP::
656
657 STM32MP> fuse sense 0 57 2
658 Sensing bank 0:
659 Word 0x00000039: 78563412 0000bc9a
660
Patrick Delaunayb10cddf2020-02-12 19:37:38 +01006613) Lock OTP::
662
Patrick Delaunayd5388292023-01-06 13:20:15 +0100663 STM32MP> fuse prog 0 0x10000039 0x40000000 0x40000000
Patrick Delaunayb10cddf2020-02-12 19:37:38 +0100664
665 STM32MP> fuse sense 0 0x10000039 2
666 Sensing bank 0:
Patrick Delaunayd5388292023-01-06 13:20:15 +0100667 Word 0x10000039: 40000000 40000000
Patrick Delaunayb10cddf2020-02-12 19:37:38 +0100668
6694) next REBOOT, in the trace::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100670
671 ### Setting environment from OTP MAC address = "12:34:56:78:9a:bc"
672
Patrick Delaunayb10cddf2020-02-12 19:37:38 +01006735) check env update::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100674
675 STM32MP> env print ethaddr
676 ethaddr=12:34:56:78:9a:bc
677
678.. warning:: This command can't be executed twice on the same board as
679 OTP are protected. It is already done for the board
680 provided by STMicroelectronics.
681
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200682Coprocessor firmware on STM32MP15x
683----------------------------------
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100684
685U-Boot can boot the coprocessor before the kernel (coprocessor early boot).
686
687a) Manuallly by using rproc commands (update the bootcmd)
688
689 Configurations::
690
691 # env set name_copro "rproc-m4-fw.elf"
692 # env set dev_copro 0
693 # env set loadaddr_copro 0xC1000000
694
695 Load binary from bootfs partition (number 4) on SD card (mmc 0)::
696
697 # ext4load mmc 0:4 ${loadaddr_copro} ${name_copro}
698
699 => ${filesize} variable is updated with the size of the loaded file.
700
701 Start M4 firmware with remote proc command::
702
703 # rproc init
704 # rproc load ${dev_copro} ${loadaddr_copro} ${filesize}
705 # rproc start ${dev_copro}"00270033
706
707b) Automatically by using FIT feature and generic DISTRO bootcmd
708
709 see examples in the board stm32mp1 directory: fit_copro_kernel_dtb.its
710
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200711 Generate FIT including kernel + device tree + M4 firmware with cfg with M4
712 boot::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100713
714 $> mkimage -f fit_copro_kernel_dtb.its fit_copro_kernel_dtb.itb
715
716 Then using DISTRO configuration file: see extlinux.conf to select the correct
717 configuration:
718
719 - stm32mp157c-ev1-m4
720 - stm32mp157c-dk2-m4
721
722DFU support
723-----------
724
725The DFU is supported on ST board.
726
727The env variable dfu_alt_info is automatically build, and all
728the memory present on the ST boards are exported.
729
730The dfu mode is started by the command::
731
732 STM32MP> dfu 0
733
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200734On EV1 board, booting from SD card, without OP-TEE_::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100735
736 STM32MP> dfu 0 list
737 DFU alt settings list:
738 dev: RAM alt: 0 name: uImage layout: RAM_ADDR
739 dev: RAM alt: 1 name: devicetree.dtb layout: RAM_ADDR
740 dev: RAM alt: 2 name: uramdisk.image.gz layout: RAM_ADDR
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100741 dev: eMMC alt: 3 name: mmc0_fsbl1 layout: RAW_ADDR
742 dev: eMMC alt: 4 name: mmc0_fsbl2 layout: RAW_ADDR
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200743 dev: eMMC alt: 5 name: mmc0_fip layout: RAW_ADDR
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100744 dev: eMMC alt: 6 name: mmc0_bootfs layout: RAW_ADDR
745 dev: eMMC alt: 7 name: mmc0_vendorfs layout: RAW_ADDR
746 dev: eMMC alt: 8 name: mmc0_rootfs layout: RAW_ADDR
747 dev: eMMC alt: 9 name: mmc0_userfs layout: RAW_ADDR
748 dev: eMMC alt: 10 name: mmc1_boot1 layout: RAW_ADDR
749 dev: eMMC alt: 11 name: mmc1_boot2 layout: RAW_ADDR
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200750 dev: eMMC alt: 12 name: mmc1_fip layout: RAW_ADDR
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100751 dev: eMMC alt: 13 name: mmc1_bootfs layout: RAW_ADDR
752 dev: eMMC alt: 14 name: mmc1_vendorfs layout: RAW_ADDR
753 dev: eMMC alt: 15 name: mmc1_rootfs layout: RAW_ADDR
754 dev: eMMC alt: 16 name: mmc1_userfs layout: RAW_ADDR
755 dev: MTD alt: 17 name: nor0 layout: RAW_ADDR
Patrick Delaunayb82c97e2021-11-25 11:54:53 +0100756 dev: MTD alt: 18 name: nor1 layout: RAW_ADDR
757 dev: MTD alt: 19 name: nand0 layout: RAW_ADDR
758 dev: VIRT alt: 20 name: OTP layout: RAW_ADDR
759 dev: VIRT alt: 21 name: PMIC layout: RAW_ADDR
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100760
761All the supported device are exported for dfu-util tool::
762
763 $> dfu-util -l
Patrick Delaunayb82c97e2021-11-25 11:54:53 +0100764 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=21, name="PMIC", serial="002700333338511934383330"
765 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=20, name="OTP", serial="002700333338511934383330"
766 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=19, name="nand0", serial="002700333338511934383330"
767 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=18, name="nor1", serial="002700333338511934383330"
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100768 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=17, name="nor0", serial="002700333338511934383330"
769 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=16, name="mmc1_userfs", serial="002700333338511934383330"
770 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=15, name="mmc1_rootfs", serial="002700333338511934383330"
771 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=14, name="mmc1_vendorfs", serial="002700333338511934383330"
772 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=13, name="mmc1_bootfs", serial="002700333338511934383330"
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200773 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=12, name="mmc1_fip", serial="002700333338511934383330"
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100774 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=11, name="mmc1_boot2", serial="002700333338511934383330"
775 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=10, name="mmc1_boot1", serial="002700333338511934383330"
776 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=9, name="mmc0_userfs", serial="002700333338511934383330"
777 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=8, name="mmc0_rootfs", serial="002700333338511934383330"
778 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=7, name="mmc0_vendorfs", serial="002700333338511934383330"
779 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=6, name="mmc0_bootfs", serial="002700333338511934383330"
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200780 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=5, name="mmc0_fip", serial="002700333338511934383330"
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100781 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=4, name="mmc0_fsbl2", serial="002700333338511934383330"
782 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=3, name="mmc0_fsbl1", serial="002700333338511934383330"
783 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=2, name="uramdisk.image.gz", serial="002700333338511934383330"
784 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=1, name="devicetree.dtb", serial="002700333338511934383330"
785 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=0, name="uImage", serial="002700333338511934383330"
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100786
787You can update the boot device:
788
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200789- SD card (mmc0)::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100790
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200791 $> dfu-util -d 0483:5720 -a 3 -D tf-a-stm32mp157c-ev1.stm32
792 $> dfu-util -d 0483:5720 -a 4 -D tf-a-stm32mp157c-ev1.stm32
793 $> dfu-util -d 0483:5720 -a 5 -D fip-stm32mp157c-ev1.bin
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100794 $> dfu-util -d 0483:5720 -a 6 -D st-image-bootfs-openstlinux-weston-stm32mp1.ext4
795 $> dfu-util -d 0483:5720 -a 7 -D st-image-vendorfs-openstlinux-weston-stm32mp1.ext4
796 $> dfu-util -d 0483:5720 -a 8 -D st-image-weston-openstlinux-weston-stm32mp1.ext4
797 $> dfu-util -d 0483:5720 -a 9 -D st-image-userfs-openstlinux-weston-stm32mp1.ext4
798
799- EMMC (mmc1)::
800
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200801 $> dfu-util -d 0483:5720 -a 10 -D tf-a-stm32mp157c-ev1.stm32
802 $> dfu-util -d 0483:5720 -a 11 -D tf-a-stm32mp157c-ev1.stm32
803 $> dfu-util -d 0483:5720 -a 12 -D fip-stm32mp157c-ev1.bin
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100804 $> dfu-util -d 0483:5720 -a 13 -D st-image-bootfs-openstlinux-weston-stm32mp1.ext4
805 $> dfu-util -d 0483:5720 -a 14 -D st-image-vendorfs-openstlinux-weston-stm32mp1.ext4
806 $> dfu-util -d 0483:5720 -a 15 -D st-image-weston-openstlinux-weston-stm32mp1.ext4
807 $> dfu-util -d 0483:5720 -a 16 -D st-image-userfs-openstlinux-weston-stm32mp1.ext4
808
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100809- you can also dump the OTP and the PMIC NVM with::
810
811 $> dfu-util -d 0483:5720 -a 19 -U otp.bin
812 $> dfu-util -d 0483:5720 -a 20 -U pmic.bin
813
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100814
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100815When the board is booting for nor0 or nand0,
816only the MTD partition on the boot devices are available, for example:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100817
Patrick Delaunayb82c97e2021-11-25 11:54:53 +0100818- NOR (nor0 = alt 20, nor1 = alt 26) & NAND (nand0 = alt 27) :
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100819
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200820 $> dfu-util -d 0483:5720 -a 21 -D tf-a-stm32mp157c-ev1.stm32
821 $> dfu-util -d 0483:5720 -a 22 -D tf-a-stm32mp157c-ev1.stm32
822 $> dfu-util -d 0483:5720 -a 23 -D fip-stm32mp157c-ev1.bin
Patrick Delaunayb82c97e2021-11-25 11:54:53 +0100823 $> dfu-util -d 0483:5720 -a 28 -D st-image-weston-openstlinux-weston-stm32mp1_nand_4_256_multivolume.ubi
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100824
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100825- NAND (nand0 = alt 21)::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100826
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200827 $> dfu-util -d 0483:5720 -a 22 -D tf-a-stm32mp157c-ev1.stm32
828 $> dfu-util -d 0483:5720 -a 23 -D fip-stm32mp157c-ev1.bin
829 $> dfu-util -d 0483:5720 -a 24 -D fip-stm32mp157c-ev1.bin
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100830 $> dfu-util -d 0483:5720 -a 25 -D st-image-weston-openstlinux-weston-stm32mp1_nand_4_256_multivolume.ubi
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200831
832References
833----------
834
835.. _WIKI:
836
837STM32 Arm® Cortex®-based MPUs user guide
838
839 + https://wiki.st.com/
840 + https://wiki.st.com/stm32mpu/wiki/Main_Page
841
842.. _TF-A:
843
844TF-A = The Trusted Firmware-A project provides a reference implementation of
845secure world software for Armv7-A and Armv8-A class processors
846
847 + https://www.trustedfirmware.org/projects/tf-a/
848 + https://trustedfirmware-a.readthedocs.io/en/latest/
849 + https://trustedfirmware-a.readthedocs.io/en/latest/plat/stm32mp1.html
850 + https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/
851
852.. _OP-TEE:
853
854OP-TEE = an open source Trusted Execution Environment (TEE) implementing the
855Arm TrustZone technology
856
857 + https://www.op-tee.org/
858 + https://optee.readthedocs.io/en/latest/
859 + https://optee.readthedocs.io/en/latest/building/devices/stm32mp1.html
860 + https://github.com/OP-TEE/optee_os