blob: 00f9b454421f765edbde625870c409c050fd960f [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 Delaunaya1d36ed2022-05-20 18:24:54 +020080STM32MP13x
81``````````
82
83The STM32MP13x is a single Cortex-A7 MPU aimed at various applications.
84
85Currently the following boards are supported:
86
87 + stm32mp135f-dk.dts
88
89
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +010090Boot Sequences
91--------------
92
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200932 boot configurations are supported with:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +010094
95+----------+------------------------+-------------------------+--------------+
96| **ROM** | **FSBL** | **SSBL** | **OS** |
97+ **code** +------------------------+-------------------------+--------------+
98| | First Stage Bootloader | Second Stage Bootloader | Linux Kernel |
99+ +------------------------+-------------------------+--------------+
100| | embedded RAM | DDR |
101+----------+------------------------+-------------------------+--------------+
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200102| TrustZone| secure monitor |
103+----------+------------------------+-------------------------+--------------+
104
105The trusted boot chain is recommended with:
106
107- FSBL = **TF-A BL2**
108- Secure monitor = **OP-TEE**
109- SSBL = **U-Boot**
110
111It is the only supported boot chain for STM32MP13x family.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100112
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200113The **Trusted** boot chain with TF-A_
114`````````````````````````````````````
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100115
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200116defconfig_file :
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200117 + **stm32mp15_defconfig** and **stm32mp13_defconfig** (for TF-A_ with FIP support)
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200118 + **stm32mp15_trusted_defconfig** (for TF-A_ without FIP support)
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100119
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200120 +-------------+--------------------------+------------+-------+
121 | ROM code | FSBL | SSBL | OS |
122 + +--------------------------+------------+-------+
123 | |Trusted Firmware-A (TF-A_)| U-Boot | Linux |
124 +-------------+--------------------------+------------+-------+
125 | TrustZone |secure monitor = SPMin or OP-TEE_ |
126 +-------------+--------------------------+------------+-------+
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100127
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200128TF-A_ and OP-TEE_ are 2 separate projects, with their git repository;
129they are compiled separately.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100130
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200131TF-A_ (BL2) initialize the DDR and loads the next stage binaries from a FIP file:
132 + BL32: a secure monitor BL32 = SPMin provided by TF-A_ or OP-TEE_ :
133 performs a full initialization of Secure peripherals and provides service
134 to normal world
135 + BL33: a non-trusted firmware = U-Boot, running in normal world and uses
136 the secure monitor to access to secure resources.
137 + HW_CONFIG: The hardware configuration file = the U-Boot device tree
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100138
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200139The **Basic** boot chain with SPL (for STM32MP15x)
140``````````````````````````````````````````````````
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100141
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200142defconfig_file :
143 + **stm32mp15_basic_defconfig**
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100144
145 +-------------+------------+------------+-------+
146 | ROM code | FSBL | SSBL | OS |
147 + +------------+------------+-------+
148 | |U-Boot SPL | U-Boot | Linux |
149 +-------------+------------+------------+-------+
150 | TrustZone | | PSCI from U-Boot |
151 +-------------+------------+------------+-------+
152
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200153SPL has limited security initialization.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100154
155U-Boot is running in secure mode and provide a secure monitor to the kernel
156with only PSCI support (Power State Coordination Interface defined by ARM).
157
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200158.. warning:: This alternate **basic** boot chain with SPL is not supported/promoted by STMicroelectronics to make product.
159
160Device Tree
161-----------
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100162
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200163All the STM32MP15x and STM32MP13x boards supported by U-Boot use the same generic board
164stm32mp1 which supports all the bootable devices.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100165
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200166Each STMicroelectronics board is only configured with the associated device tree.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100167
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200168STM32MP15x device Tree Selection
169````````````````````````````````
170The supported device trees for STM32MP15x (stm32mp15_trusted_defconfig and stm32mp15_basic_defconfig) are:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100171
172+ ev1: eval board with pmic stpmic1 (ev1 = mother board + daughter ed1)
173
174 + stm32mp157c-ev1
175
176+ ed1: daughter board with pmic stpmic1
177
178 + stm32mp157c-ed1
179
180+ dk1: Discovery board
181
182 + stm32mp157a-dk1
183
184+ dk2: Discovery board = dk1 with a BT/WiFI combo and a DSI panel
185
186 + stm32mp157c-dk2
187
Marek Vasut526c9512020-03-31 19:51:36 +0200188+ avenger96: Avenger96 board from Arrow Electronics based on DH Elec. DHCOR SoM
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100189
Marek Vasut526c9512020-03-31 19:51:36 +0200190 + stm32mp15xx-dhcor-avenger96
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100191
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200192STM32MP13x device Tree Selection
193````````````````````````````````
194The supported device trees for STM32MP13x (stm32mp13_defconfig) are:
195
196+ dk: Discovery board
197
198 + stm32mp135f-dk
199
200
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100201Build Procedure
202---------------
203
2041. Install the required tools for U-Boot
205
206 * install package needed in U-Boot makefile
207 (libssl-dev, swig, libpython-dev...)
208
209 * install ARMv7 toolchain for 32bit Cortex-A (from Linaro,
210 from SDK for STM32MP15x, or any crosstoolchains from your distribution)
211 (you can use any gcc cross compiler compatible with U-Boot)
212
2132. Set the cross compiler::
214
215 # export CROSS_COMPILE=/path/to/toolchain/arm-linux-gnueabi-
216
2173. Select the output directory (optional)::
218
219 # export KBUILD_OUTPUT=/path/to/output
220
221 for example: use one output directory for each configuration::
222
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200223 # export KBUILD_OUTPUT=stm32mp13
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200224 # export KBUILD_OUTPUT=stm32mp15
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100225 # export KBUILD_OUTPUT=stm32mp15_trusted
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100226 # export KBUILD_OUTPUT=stm32mp15_basic
227
228 you can build outside of code directory::
229
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200230 # export KBUILD_OUTPUT=../build/stm32mp15
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100231
2324. Configure U-Boot::
233
234 # make <defconfig_file>
235
236 with <defconfig_file>:
237
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200238 - For **trusted** boot mode :
239 - For STM32MP13x: **stm32mp13_defconfig**
240 - For STM32MP15x: **stm32mp15_defconfig** or stm32mp15_trusted_defconfig
241 - For STM32MP15x basic boot mode: stm32mp15_basic_defconfig
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100242
2435. Configure the device-tree and build the U-Boot image::
244
245 # make DEVICE_TREE=<name> all
246
247 Examples:
248
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200249 a) trusted boot with FIP on STM32MP15x ev1::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100250
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200251 # export KBUILD_OUTPUT=stm32mp15
252 # make stm32mp15_defconfig
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100253 # make DEVICE_TREE=stm32mp157c-ev1 all
254
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200255 b) trusted boot on STM32MP13x discovery board::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100256
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200257 # export KBUILD_OUTPUT=stm32mp13
258 # make stm32mp13_defconfig
259 # make DEVICE_TREE=stm32mp135f-dk all
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100260
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200261 DEVICE_TEE selection is optional as stm32mp135f-dk is the default board of the defconfig::
262
263 # make stm32mp13_defconfig
264 # make all
265
266 c) basic boot on STM32MP15x ev1::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100267
268 # export KBUILD_OUTPUT=stm32mp15_basic
269 # make stm32mp15_basic_defconfig
270 # make DEVICE_TREE=stm32mp157c-ev1 all
271
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200272 d) basic boot on STM32MP15x ed1::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100273
274 # export KBUILD_OUTPUT=stm32mp15_basic
275 # make stm32mp15_basic_defconfig
276 # make DEVICE_TREE=stm32mp157c-ed1 all
277
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200278 e) basic boot on STM32MP15x dk1::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100279
280 # export KBUILD_OUTPUT=stm32mp15_basic
281 # make stm32mp15_basic_defconfig
282 # make DEVICE_TREE=stm32mp157a-dk1 all
283
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200284 f) basic boot on STM32MP15x avenger96::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100285
286 # export KBUILD_OUTPUT=stm32mp15_basic
287 # make stm32mp15_basic_defconfig
Marek Vasut526c9512020-03-31 19:51:36 +0200288 # make DEVICE_TREE=stm32mp15xx-dhcor-avenger96 all
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100289
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +02002906. U-Boot Output files
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100291
292 So in the output directory (selected by KBUILD_OUTPUT),
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200293 you can found the needed U-Boot files:
294
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200295 - stm32mp13_defconfig = **u-boot-nodtb.bin** and **u-boot.dtb**
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200296 - stm32mp15_defconfig = **u-boot-nodtb.bin** and **u-boot.dtb**
297
298 - stm32mp15_trusted_defconfig = u-boot.stm32
299
300 - stm32mp15_basic_defconfig
301
302 - FSBL = spl/u-boot-spl.stm32
303
304 - SSBL = u-boot.img (without CONFIG_SPL_LOAD_FIT) or
305 u-boot.itb (with CONFIG_SPL_LOAD_FIT=y)
306
3077. TF-A_ compilation
308
309 This step is required only for **Trusted** boot (stm32mp15_defconfig and
310 stm32mp15_trusted_defconfig); see OP-TEE_ and TF-A_ documentation for build
311 commands.
312
313 - For TF-A_ with FIP support: **stm32mp15_defconfig**
314
315 - with OP-TEE_ support, compile the OP-TEE to generate the binary included
316 in FIP
317
318 - after TF-A compilation, the used files are:
319
320 - TF-A_ BL2 => FSBL = **tf-a.stm32**
321
322 - FIP => **fip.bin**
323
324 FIP file includes the 2 files given in arguments of TF-A_ compilation:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100325
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200326 - BL33=u-boot-nodtb.bin
327 - BL33_CFG=u-boot.dtb
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100328
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200329 You can also update a existing FIP after U-boot compilation with fiptool,
330 a tool provided by TF-A_::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100331
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200332 # fiptool update --nt-fw u-boot-nodtb.bin --hw-config u-boot.dtb fip-stm32mp157c-ev1.bin
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100333
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200334 - For TF-A_ without FIP support : **stm32mp15_trusted_defconfig**
335 SPMin is used and the used files are:
336
337 - FSBL = **tf-a.stm32** (provided by TF-A_ compilation, contening BL2 and
338 BL32 = SPMin)
339
340 - SSBL = **u-boot.stm32** used instead of fip.bin in next chapters
341
3428. The bootloaders files
343
344+ The **ROM code** expects FSBL binaries with STM32 image header =
345 tf-a.stm32 or u-boot-spl.stm32
346
347According the FSBL / the boot mode:
348
349+ **TF-A** expect a FIP binary = fip.bin, including the OS monitor (SPMin or
350 OP-TEE_) and the U-Boot binary + device tree
351
352 or, without FIP support, binaries with STM32 image header: U-Boot
353 = u-boot.stm32 and eventually OP-TEE files (tee-header.stm32, tee-pageable.stm32,
354 tee-pager.stm32)
355
356+ **SPL** expects SSBL = U-Boot with uImage header = u-boot.img
357 or FIT = u-boot.itb.
358
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100359
360Switch Setting for Boot Mode
361----------------------------
362
363You can select the boot mode, on the board with one switch, to select
364the boot pin values = BOOT0, BOOT1, BOOT2
365
366 +-------------+---------+---------+---------+
367 |*Boot Mode* | *BOOT2* | *BOOT1* | *BOOT0* |
368 +=============+=========+=========+=========+
369 | Recovery | 0 | 0 | 0 |
370 +-------------+---------+---------+---------+
371 | NOR | 0 | 0 | 1 |
372 +-------------+---------+---------+---------+
373 | eMMC | 0 | 1 | 0 |
374 +-------------+---------+---------+---------+
375 | NAND | 0 | 1 | 1 |
376 +-------------+---------+---------+---------+
377 | Reserved | 1 | 0 | 0 |
378 +-------------+---------+---------+---------+
379 | SD-Card | 1 | 0 | 1 |
380 +-------------+---------+---------+---------+
381 | Recovery | 1 | 1 | 0 |
382 +-------------+---------+---------+---------+
383 | SPI-NAND | 1 | 1 | 1 |
384 +-------------+---------+---------+---------+
385
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200386- on the STM32MP15x **daughter board ed1 = MB1263** with the switch SW1
387- on STM32MP15x **Avenger96** with switch S3 (NOR and SPI-NAND are not applicable)
388- on board STM32MP15x **DK1/DK2** with the switch SW1 = BOOT0, BOOT2
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100389 with only 2 pins available (BOOT1 is forced to 0 and NOR not supported),
390 the possible value becomes:
391
392 +-------------+---------+---------+
393 |*Boot Mode* | *BOOT2* | *BOOT0* |
394 +=============+=========+=========+
395 | Recovery | 0 | 0 |
396 +-------------+---------+---------+
397 | NOR (NA)| 0 | 1 |
398 +-------------+---------+---------+
399 | Reserved | 1 | 0 |
400 +-------------+---------+---------+
401 | SD-Card | 1 | 1 |
402 +-------------+---------+---------+
403
404Recovery is a boot from serial link (UART/USB) and it is used with
405STM32CubeProgrammer tool to load executable in RAM and to update the flash
406devices available on the board (NOR/NAND/eMMC/SD card).
407
408The communication between HOST and board is based on
409
410 - for UARTs : the uart protocol used with all MCU STM32
411 - for USB : based on USB DFU 1.1 (without the ST extensions used on MCU STM32)
412
413Prepare an SD card
414------------------
415
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200416The minimal requirements for STMP32MP15x and STM32MP13x boot up to U-Boot are:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100417
418- GPT partitioning (with gdisk or with sgdisk)
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200419- 2 fsbl partitions, named "fsbl1" and "fsbl2", size at least 256KiB
420- one partition named "fip" for FIP or U-Boot (TF-A_ search the "fip"
421 partition and SPL search the 3th partition, because
422 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=3)
423
424The 2 fsbl partitions have the same content and are present to guarantee a
425fail-safe update of FSBL; fsbl2 can be omitted if this ROM code feature is
426not required.
427
428Without FIP support in TF-A_, the 3rd partition "fip" for u-boot.stm32 must
429be named "ssbl".
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100430
431Then the minimal GPT partition is:
432
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200433For TF-A_ with FIP support:
434
435 +-------+--------+---------+------------------------+
436 | *Num* | *Name* | *Size* | *Content* |
437 +=======+========+=========+========================+
438 | 1 | fsbl1 | 256 KiB | TF-A_ BL2 (tf-a.stm32) |
439 +-------+--------+---------+------------------------+
440 | 2 | fsbl2 | 256 KiB | TF-A_ BL2 (tf-a.stm32) |
441 +-------+--------+---------+------------------------+
442 | 3 | fip | 4MB | fip.bin |
443 +-------+--------+---------+------------------------+
444 | 4 | <any> | <any> | Rootfs |
445 +-------+--------+---------+------------------------+
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100446
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200447or:
448
449 +-------+--------+---------+------------------------+------------------------+
450 | *Num* | *Name* | *Size* | *Trusted boot content* | *Basic boot content* |
451 +=======+========+=========+========================+========================+
452 | 1 | fsbl1 | 256 KiB | TF-A_ BL2 (tf-a.stm32) | SPL (u-boot-spl.stm32) |
453 +-------+--------+---------+------------------------+------------------------+
454 | 2 | fsbl2 | 256 KiB | TF-A_ BL2 (tf-a.stm32) | SPL (u-boot-spl.stm32) |
455 +-------+--------+---------+------------------------+------------------------+
456 | 3 | ssbl | 2MB | U-Boot (u-boot.stm32) | U-Boot (u-boot.img) |
457 +-------+--------+---------+------------------------+------------------------+
458 | 4 | <any> | <any> | Rootfs |
459 +-------+--------+---------+------------------------+------------------------+
460
461And the 4th partition (Rootfs) is marked bootable with a file extlinux.conf
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100462following the Generic Distribution feature (doc/README.distro for use).
463
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200464The size of fip or ssbl partition must be enough for the associated binary file,
4654MB and 2MB are default values.
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100466
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200467According the used card reader select the correct block device
468(for example /dev/sdx or /dev/mmcblk0), in the next example, it is /dev/mmcblk0
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100469
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200470For example:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100471
472a) remove previous formatting::
473
474 # sgdisk -o /dev/<SD card dev>
475
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200476b) create minimal image for FIP
477
478 For FIP support in TF-A_::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100479
480 # sgdisk --resize-table=128 -a 1 \
481 -n 1:34:545 -c 1:fsbl1 \
482 -n 2:546:1057 -c 2:fsbl2 \
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200483 -n 3:1058:9249 -c 3:fip \
484 -n 4:9250: -c 4:rootfs -A 4:set:2 \
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100485 -p /dev/<SD card dev>
486
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200487 With gpt table with 128 entries an the partition 4 marked bootable (bit 2).
488
489 For basic boot mode or without FIP support in TF-A_::
490
491 # sgdisk --resize-table=128 -a 1 \
492 -n 1:34:545 -c 1:fsbl1 \
493 -n 2:546:1057 -c 2:fsbl2 \
494 -n 3:1058:5153 -c 3:ssbl \
495 -n 4:5154: -c 4:rootfs -A 4:set:2 \
496 -p /dev/<SD card dev>
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100497
498c) copy the FSBL (2 times) and SSBL file on the correct partition.
499 in this example in partition 1 to 3
500
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200501 for trusted boot: ::
502
503 # dd if=tf-a.stm32 of=/dev/mmcblk0p1
504 # dd if=tf-a.stm32 of=/dev/mmcblk0p2
505 # dd if=fip.bin of=/dev/mmcblk0p3
506 OR
507 dd if=u-boot.stm32 of=/dev/mmcblk0p3 # Without FIT support
508
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100509 for basic boot mode : <SD card dev> = /dev/mmcblk0::
510
511 # dd if=u-boot-spl.stm32 of=/dev/mmcblk0p1
512 # dd if=u-boot-spl.stm32 of=/dev/mmcblk0p2
Marek Vasutdb4374f2021-03-06 21:44:17 +0100513 # dd if=u-boot.img of=/dev/mmcblk0p3 # Without CONFIG_SPL_LOAD_FIT
514 OR
515 dd if=u-boot.itb of=/dev/mmcblk0p3 # With CONFIG_SPL_LOAD_FIT=y
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100516
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100517To boot from SD card, select BootPinMode = 1 0 1 and reset.
518
519Prepare eMMC
520------------
521
522You can use U-Boot to copy binary in eMMC.
523
524In the next example, you need to boot from SD card and the images
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200525(tf-a.stm32, fip.bin / u-boot-spl.stm32, u-boot.img for systems without
526CONFIG_SPL_LOAD_FIT or u-boot.itb for systems with CONFIG_SPL_LOAD_FIT=y) are
527presents on SD card (mmc 0) in ext4 partition 4 (bootfs)
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100528
529To boot from SD card, select BootPinMode = 1 0 1 and reset.
530
531Then you update the eMMC with the next U-Boot command :
532
533a) prepare GPT on eMMC,
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200534 example with 3 partitions, fip, bootfs and roots::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100535
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200536 # 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 +0100537 # gpt write mmc 1 ${emmc_part}
538
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200539b) copy FSBL, TF-A_ or SPL, on first eMMC boot partition
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100540 (SPL max size is 256kB, with LBA 512, 0x200)::
541
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200542 # ext4load mmc 0:4 0xC0000000 tf-a.stm32
543 or
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100544 # ext4load mmc 0:4 0xC0000000 u-boot-spl.stm32
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200545
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100546 # mmc dev 1
547 # mmc partconf 1 1 1 1
548 # mmc write ${fileaddr} 0 200
549 # mmc partconf 1 1 1 0
550
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200551c) copy SSBL, FIP or U-Boot binary, in first GPT partition of eMMC::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100552
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200553 # ext4load mmc 0:4 0xC0000000 fip.bin
554 or
Marek Vasutdb4374f2021-03-06 21:44:17 +0100555 # ext4load mmc 0:4 0xC0000000 u-boot.img # Without CONFIG_SPL_LOAD_FIT
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200556 or
557 # ext4load mmc 0:4 0xC0000000 u-boot.itb # With CONFIG_SPL_LOAD_FIT=y
558
559
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100560 # mmc dev 1
561 # part start mmc 1 1 partstart
562 # mmc write ${fileaddr} ${partstart} ${filesize}
563
564To boot from eMMC, select BootPinMode = 0 1 0 and reset.
565
566MAC Address
567-----------
568
569Please read doc/README.enetaddr for the implementation guidelines for mac id
570usage. Basically, environment has precedence over board specific storage.
571
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200572For STMicroelectronics board, it is retrieved in:
573
574 - STM32MP15x OTP:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100575
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200576 - OTP_57[31:0] = MAC_ADDR[31:0]
577 - OTP_58[15:0] = MAC_ADDR[47:32]
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100578
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200579 - STM32MP13x OTP:
580
581 - OTP_57[31:0] = MAC_ADDR0[31:0]
582 - OTP_58[15:0] = MAC_ADDR0[47:32]
583 - OTP_58[31:16] = MAC_ADDR1[15:0]
584 - OTP_59[31:0] = MAC_ADDR1[47:16]
585
586To program a MAC address on virgin STM32MP15x OTP words above, you can use the fuse command
Patrick Delaunayb10cddf2020-02-12 19:37:38 +0100587on bank 0 to access to internal OTP and lock them:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100588
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200589In the next example we are using the 2 OTPs used on STM32MP15x.
590
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100591Prerequisite: check if a MAC address isn't yet programmed in OTP
592
Patrick Delaunayb10cddf2020-02-12 19:37:38 +01005931) check OTP: their value must be equal to 0::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100594
Patrick Delaunayb10cddf2020-02-12 19:37:38 +0100595 STM32MP> fuse sense 0 57 2
596 Sensing bank 0:
597 Word 0x00000039: 00000000 00000000
598
5992) check environment variable::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100600
Patrick Delaunayb10cddf2020-02-12 19:37:38 +0100601 STM32MP> env print ethaddr
602 ## Error: "ethaddr" not defined
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100603
Patrick Delaunayb10cddf2020-02-12 19:37:38 +01006043) check lock status of fuse 57 & 58 (at 0x39, 0=unlocked, 1=locked)::
605
606 STM32MP> fuse sense 0 0x10000039 2
607 Sensing bank 0:
608 Word 0x10000039: 00000000 00000000
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100609
610Example to set mac address "12:34:56:78:9a:bc"
611
6121) Write OTP::
613
614 STM32MP> fuse prog -y 0 57 0x78563412 0x0000bc9a
615
6162) Read OTP::
617
618 STM32MP> fuse sense 0 57 2
619 Sensing bank 0:
620 Word 0x00000039: 78563412 0000bc9a
621
Patrick Delaunayb10cddf2020-02-12 19:37:38 +01006223) Lock OTP::
623
624 STM32MP> fuse prog 0 0x10000039 1 1
625
626 STM32MP> fuse sense 0 0x10000039 2
627 Sensing bank 0:
628 Word 0x10000039: 00000001 00000001
629
6304) next REBOOT, in the trace::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100631
632 ### Setting environment from OTP MAC address = "12:34:56:78:9a:bc"
633
Patrick Delaunayb10cddf2020-02-12 19:37:38 +01006345) check env update::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100635
636 STM32MP> env print ethaddr
637 ethaddr=12:34:56:78:9a:bc
638
639.. warning:: This command can't be executed twice on the same board as
640 OTP are protected. It is already done for the board
641 provided by STMicroelectronics.
642
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200643Coprocessor firmware on STM32MP15x
644----------------------------------
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100645
646U-Boot can boot the coprocessor before the kernel (coprocessor early boot).
647
648a) Manuallly by using rproc commands (update the bootcmd)
649
650 Configurations::
651
652 # env set name_copro "rproc-m4-fw.elf"
653 # env set dev_copro 0
654 # env set loadaddr_copro 0xC1000000
655
656 Load binary from bootfs partition (number 4) on SD card (mmc 0)::
657
658 # ext4load mmc 0:4 ${loadaddr_copro} ${name_copro}
659
660 => ${filesize} variable is updated with the size of the loaded file.
661
662 Start M4 firmware with remote proc command::
663
664 # rproc init
665 # rproc load ${dev_copro} ${loadaddr_copro} ${filesize}
666 # rproc start ${dev_copro}"00270033
667
668b) Automatically by using FIT feature and generic DISTRO bootcmd
669
670 see examples in the board stm32mp1 directory: fit_copro_kernel_dtb.its
671
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200672 Generate FIT including kernel + device tree + M4 firmware with cfg with M4
673 boot::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100674
675 $> mkimage -f fit_copro_kernel_dtb.its fit_copro_kernel_dtb.itb
676
677 Then using DISTRO configuration file: see extlinux.conf to select the correct
678 configuration:
679
680 - stm32mp157c-ev1-m4
681 - stm32mp157c-dk2-m4
682
683DFU support
684-----------
685
686The DFU is supported on ST board.
687
688The env variable dfu_alt_info is automatically build, and all
689the memory present on the ST boards are exported.
690
691The dfu mode is started by the command::
692
693 STM32MP> dfu 0
694
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200695On EV1 board, booting from SD card, without OP-TEE_::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100696
697 STM32MP> dfu 0 list
698 DFU alt settings list:
699 dev: RAM alt: 0 name: uImage layout: RAM_ADDR
700 dev: RAM alt: 1 name: devicetree.dtb layout: RAM_ADDR
701 dev: RAM alt: 2 name: uramdisk.image.gz layout: RAM_ADDR
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100702 dev: eMMC alt: 3 name: mmc0_fsbl1 layout: RAW_ADDR
703 dev: eMMC alt: 4 name: mmc0_fsbl2 layout: RAW_ADDR
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200704 dev: eMMC alt: 5 name: mmc0_fip layout: RAW_ADDR
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100705 dev: eMMC alt: 6 name: mmc0_bootfs layout: RAW_ADDR
706 dev: eMMC alt: 7 name: mmc0_vendorfs layout: RAW_ADDR
707 dev: eMMC alt: 8 name: mmc0_rootfs layout: RAW_ADDR
708 dev: eMMC alt: 9 name: mmc0_userfs layout: RAW_ADDR
709 dev: eMMC alt: 10 name: mmc1_boot1 layout: RAW_ADDR
710 dev: eMMC alt: 11 name: mmc1_boot2 layout: RAW_ADDR
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200711 dev: eMMC alt: 12 name: mmc1_fip layout: RAW_ADDR
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100712 dev: eMMC alt: 13 name: mmc1_bootfs layout: RAW_ADDR
713 dev: eMMC alt: 14 name: mmc1_vendorfs layout: RAW_ADDR
714 dev: eMMC alt: 15 name: mmc1_rootfs layout: RAW_ADDR
715 dev: eMMC alt: 16 name: mmc1_userfs layout: RAW_ADDR
716 dev: MTD alt: 17 name: nor0 layout: RAW_ADDR
Patrick Delaunayb82c97e2021-11-25 11:54:53 +0100717 dev: MTD alt: 18 name: nor1 layout: RAW_ADDR
718 dev: MTD alt: 19 name: nand0 layout: RAW_ADDR
719 dev: VIRT alt: 20 name: OTP layout: RAW_ADDR
720 dev: VIRT alt: 21 name: PMIC layout: RAW_ADDR
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100721
722All the supported device are exported for dfu-util tool::
723
724 $> dfu-util -l
Patrick Delaunayb82c97e2021-11-25 11:54:53 +0100725 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=21, name="PMIC", serial="002700333338511934383330"
726 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=20, name="OTP", serial="002700333338511934383330"
727 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=19, name="nand0", serial="002700333338511934383330"
728 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 +0100729 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=17, name="nor0", serial="002700333338511934383330"
730 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=16, name="mmc1_userfs", serial="002700333338511934383330"
731 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=15, name="mmc1_rootfs", serial="002700333338511934383330"
732 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=14, name="mmc1_vendorfs", serial="002700333338511934383330"
733 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 +0200734 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 +0100735 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=11, name="mmc1_boot2", serial="002700333338511934383330"
736 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=10, name="mmc1_boot1", serial="002700333338511934383330"
737 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=9, name="mmc0_userfs", serial="002700333338511934383330"
738 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=8, name="mmc0_rootfs", serial="002700333338511934383330"
739 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=7, name="mmc0_vendorfs", serial="002700333338511934383330"
740 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 +0200741 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 +0100742 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=4, name="mmc0_fsbl2", serial="002700333338511934383330"
743 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=3, name="mmc0_fsbl1", serial="002700333338511934383330"
744 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=2, name="uramdisk.image.gz", serial="002700333338511934383330"
745 Found DFU: [0483:df11] ver=9999, devnum=99, cfg=1, intf=0, alt=1, name="devicetree.dtb", serial="002700333338511934383330"
746 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 +0100747
748You can update the boot device:
749
Patrick Delaunaya1d36ed2022-05-20 18:24:54 +0200750- SD card (mmc0)::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100751
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200752 $> dfu-util -d 0483:5720 -a 3 -D tf-a-stm32mp157c-ev1.stm32
753 $> dfu-util -d 0483:5720 -a 4 -D tf-a-stm32mp157c-ev1.stm32
754 $> dfu-util -d 0483:5720 -a 5 -D fip-stm32mp157c-ev1.bin
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100755 $> dfu-util -d 0483:5720 -a 6 -D st-image-bootfs-openstlinux-weston-stm32mp1.ext4
756 $> dfu-util -d 0483:5720 -a 7 -D st-image-vendorfs-openstlinux-weston-stm32mp1.ext4
757 $> dfu-util -d 0483:5720 -a 8 -D st-image-weston-openstlinux-weston-stm32mp1.ext4
758 $> dfu-util -d 0483:5720 -a 9 -D st-image-userfs-openstlinux-weston-stm32mp1.ext4
759
760- EMMC (mmc1)::
761
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200762 $> dfu-util -d 0483:5720 -a 10 -D tf-a-stm32mp157c-ev1.stm32
763 $> dfu-util -d 0483:5720 -a 11 -D tf-a-stm32mp157c-ev1.stm32
764 $> dfu-util -d 0483:5720 -a 12 -D fip-stm32mp157c-ev1.bin
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100765 $> dfu-util -d 0483:5720 -a 13 -D st-image-bootfs-openstlinux-weston-stm32mp1.ext4
766 $> dfu-util -d 0483:5720 -a 14 -D st-image-vendorfs-openstlinux-weston-stm32mp1.ext4
767 $> dfu-util -d 0483:5720 -a 15 -D st-image-weston-openstlinux-weston-stm32mp1.ext4
768 $> dfu-util -d 0483:5720 -a 16 -D st-image-userfs-openstlinux-weston-stm32mp1.ext4
769
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100770- you can also dump the OTP and the PMIC NVM with::
771
772 $> dfu-util -d 0483:5720 -a 19 -U otp.bin
773 $> dfu-util -d 0483:5720 -a 20 -U pmic.bin
774
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100775
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100776When the board is booting for nor0 or nand0,
777only the MTD partition on the boot devices are available, for example:
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100778
Patrick Delaunayb82c97e2021-11-25 11:54:53 +0100779- NOR (nor0 = alt 20, nor1 = alt 26) & NAND (nand0 = alt 27) :
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100780
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200781 $> dfu-util -d 0483:5720 -a 21 -D tf-a-stm32mp157c-ev1.stm32
782 $> dfu-util -d 0483:5720 -a 22 -D tf-a-stm32mp157c-ev1.stm32
783 $> dfu-util -d 0483:5720 -a 23 -D fip-stm32mp157c-ev1.bin
Patrick Delaunayb82c97e2021-11-25 11:54:53 +0100784 $> 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 +0100785
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100786- NAND (nand0 = alt 21)::
Patrick Delaunay5f6fdcc2020-02-25 19:04:14 +0100787
Patrick Delaunay3e70d3c2021-07-26 11:21:37 +0200788 $> dfu-util -d 0483:5720 -a 22 -D tf-a-stm32mp157c-ev1.stm32
789 $> dfu-util -d 0483:5720 -a 23 -D fip-stm32mp157c-ev1.bin
790 $> dfu-util -d 0483:5720 -a 24 -D fip-stm32mp157c-ev1.bin
Patrick Delaunayccf64ef2020-03-18 09:22:54 +0100791 $> 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 +0200792
793References
794----------
795
796.. _WIKI:
797
798STM32 Arm® Cortex®-based MPUs user guide
799
800 + https://wiki.st.com/
801 + https://wiki.st.com/stm32mpu/wiki/Main_Page
802
803.. _TF-A:
804
805TF-A = The Trusted Firmware-A project provides a reference implementation of
806secure world software for Armv7-A and Armv8-A class processors
807
808 + https://www.trustedfirmware.org/projects/tf-a/
809 + https://trustedfirmware-a.readthedocs.io/en/latest/
810 + https://trustedfirmware-a.readthedocs.io/en/latest/plat/stm32mp1.html
811 + https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/
812
813.. _OP-TEE:
814
815OP-TEE = an open source Trusted Execution Environment (TEE) implementing the
816Arm TrustZone technology
817
818 + https://www.op-tee.org/
819 + https://optee.readthedocs.io/en/latest/
820 + https://optee.readthedocs.io/en/latest/building/devices/stm32mp1.html
821 + https://github.com/OP-TEE/optee_os