blob: f2069bcefaf144f0c0fbde2c19a7bd1350311aab [file] [log] [blame]
Tom Rini8b0c8a12018-05-06 18:27:01 -04001SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +01002#
3# Copyright (C) 2018 STMicroelectronics - All Rights Reserved
4#
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +01005
6U-Boot on STMicroelectronics STM32MP1
7======================================
8
91. Summary
10==========
11This is a quick instruction for setup stm32mp1 boards.
12
132. Supported devices
14====================
15U-Boot supports one STMP32MP1 SoCs: STM32MP157
16
17The STM32MP157 is a Cortex-A MPU aimed at various applications.
18It features:
19- Dual core Cortex-A7 application core
20- 2D/3D image composition with GPU
21- Standard memories interface support
22- Standard connectivity, widely inherited from the STM32 MCU family
23- Comprehensive security support
24
25Everything is supported in Linux but U-Boot is limited to:
261. UART
272. SDCard/MMC controller (SDMMC)
Patrick Delaunay72e80f52019-07-05 17:20:18 +0200283. NAND controller (FMC)
294. NOR controller (QSPI)
305. USB controller (OTG DWC2)
316. Ethernet controller
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +010032
33And the necessary drivers
341. I2C
Patrick Delaunayd79218f2019-02-04 11:26:17 +0100352. STPMIC1 (PMIC and regulator)
Patrick Delaunaye7f435d2018-07-09 15:17:22 +0200363. Clock, Reset, Sysreset
374. Fuse
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +010038
39Currently the following boards are supported:
Patrick Delaunaye7f435d2018-07-09 15:17:22 +020040+ stm32mp157c-ev1
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +010041+ stm32mp157c-ed1
Patrice Chotardfe5b5392019-02-12 16:50:39 +010042+ stm32mp157a-dk1
43+ stm32mp157c-dk2
Manivannan Sadhasivamd1564072019-05-02 13:26:44 +053044+ stm32mp157a-avenger96
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +010045
463. Boot Sequences
47=================
48
49BootRom => FSBL in SYSRAM => SSBL in DDR => OS (Linux Kernel)
50
51with FSBL = First Stage Bootloader
52 SSBL = Second Stage Bootloader
53
Patrick Delaunayff215a42019-07-02 13:26:06 +0200543 boot configurations are supported:
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +010055
Patrick Delaunay5d061412019-02-12 11:44:39 +0100561) The "Trusted" boot chain (defconfig_file : stm32mp15_trusted_defconfig)
57 BootRom => FSBL = Trusted Firmware-A (TF-A) => SSBL = U-Boot
58 TF-A performs a full initialization of Secure peripherals and installs a
59 secure monitor.
60 U-Boot is running in normal world and uses TF-A monitor
Patrick Delaunay72e80f52019-07-05 17:20:18 +020061 to access to secure resources.
Patrick Delaunay5d061412019-02-12 11:44:39 +010062
Patrick Delaunayff215a42019-07-02 13:26:06 +0200632) The "Trusted" boot chain with OP-TEE
64 (defconfig_file : stm32mp15_optee_defconfig)
65 BootRom => FSBL = Trusted Firmware-A (TF-A) => SSBL = U-Boot
66 TF-A performs a full initialization of Secure peripherals and installs OP-TEE
67 from specific partitions (teeh, teed, teex).
68 U-Boot is running in normal world and uses OP-TEE monitor to access
69 to secure resources.
70
713) The "Basic" boot chain (defconfig_file : stm32mp15_basic_defconfig)
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +010072 BootRom => FSBL = U-Boot SPL => SSBL = U-Boot
73 SPL has limited security initialisation
74 U-Boot is running in secure mode and provide a secure monitor to the kernel
Patrick Delaunay72e80f52019-07-05 17:20:18 +020075 with only PSCI support (Power State Coordination Interface defined by ARM).
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +010076
Patrick Delaunay5d061412019-02-12 11:44:39 +010077All the STM32MP1 boards supported by U-Boot use the same generic board
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +010078stm32mp1 which support all the bootable devices.
79
80Each board is configurated only with the associated device tree.
81
824. Device Tree Selection
83========================
84
85You need to select the appropriate device tree for your board,
86the supported device trees for stm32mp157 are:
87
Patrick Delaunayd79218f2019-02-04 11:26:17 +010088+ ev1: eval board with pmic stpmic1 (ev1 = mother board + daughter ed1)
Patrick Delaunaye7f435d2018-07-09 15:17:22 +020089 dts: stm32mp157c-ev1
90
Patrick Delaunayd79218f2019-02-04 11:26:17 +010091+ ed1: daughter board with pmic stpmic1
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +010092 dts: stm32mp157c-ed1
93
Patrice Chotardfe5b5392019-02-12 16:50:39 +010094+ dk1: Discovery board
95 dts: stm32mp157a-dk1
96
97+ dk2: Discovery board = dk1 with a BT/WiFI combo and a DSI panel
98 dts: stm32mp157c-dk2
99
Manivannan Sadhasivamd1564072019-05-02 13:26:44 +0530100+ avenger96: Avenger96 board from Arrow Electronics
101 dts: stm32mp157a-avenger96
102
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +01001035. Build Procedure
104==================
105
1061. Install required tools for U-Boot
107
108 + install package needed in U-Boot makefile
109 (libssl-dev, swig, libpython-dev...)
110 + install ARMv7 toolchain for 32bit Cortex-A (from Linaro,
111 from SDK for STM32MP1, or any crosstoolchains from your distribution)
112
1132. Set the cross compiler:
114
115 # export CROSS_COMPILE=/path/to/toolchain/arm-linux-gnueabi-
116 (you can use any gcc cross compiler compatible with U-Boot)
117
1183. Select the output directory (optional)
119
120 # export KBUILD_OUTPUT=/path/to/output
121
122 for example: use one output directory for each configuration
Patrick Delaunay5d061412019-02-12 11:44:39 +0100123 # export KBUILD_OUTPUT=stm32mp15_trusted
Patrick Delaunayff215a42019-07-02 13:26:06 +0200124 # export KBUILD_OUTPUT=stm32mp15_optee
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100125 # export KBUILD_OUTPUT=stm32mp15_basic
126
Patrick Delaunay72e80f52019-07-05 17:20:18 +0200127 you can build outside of code directory:
128 # export KBUILD_OUTPUT=../build/stm32mp15_trusted
129
Patrick Delaunay5d061412019-02-12 11:44:39 +01001304. Configure U-Boot:
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100131
132 # make <defconfig_file>
133
Patrick Delaunay5d061412019-02-12 11:44:39 +0100134 - For trusted boot mode : "stm32mp15_trusted_defconfig"
Patrick Delaunayff215a42019-07-02 13:26:06 +0200135 - For trusted with OP-TEE boot mode : "stm32mp15_optee_defconfig"
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100136 - For basic boot mode: "stm32mp15_basic_defconfig"
137
1385. Configure the device-tree and build the U-Boot image:
139
140 # make DEVICE_TREE=<name> all
141
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100142 example:
Patrick Delaunay5d061412019-02-12 11:44:39 +0100143 a) trusted boot on ev1
144 # export KBUILD_OUTPUT=stm32mp15_trusted
145 # make stm32mp15_trusted_defconfig
146 # make DEVICE_TREE=stm32mp157c-ev1 all
147
Patrick Delaunayff215a42019-07-02 13:26:06 +0200148 b) trusted with OP-TEE boot on dk2
149 # export KBUILD_OUTPUT=stm32mp15_optee
150 # make stm32mp15_optee_defconfig
151 # make DEVICE_TREE=stm32mp157c-dk2 all
152
153 c) basic boot on ev1
Patrick Delaunaye7f435d2018-07-09 15:17:22 +0200154 # export KBUILD_OUTPUT=stm32mp15_basic
155 # make stm32mp15_basic_defconfig
156 # make DEVICE_TREE=stm32mp157c-ev1 all
157
Patrick Delaunayff215a42019-07-02 13:26:06 +0200158 d) basic boot on ed1
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100159 # export KBUILD_OUTPUT=stm32mp15_basic
160 # make stm32mp15_basic_defconfig
161 # make DEVICE_TREE=stm32mp157c-ed1 all
162
Patrick Delaunayff215a42019-07-02 13:26:06 +0200163 e) basic boot on dk1
Patrice Chotardfe5b5392019-02-12 16:50:39 +0100164 # export KBUILD_OUTPUT=stm32mp15_basic
165 # make stm32mp15_basic_defconfig
Patrick Delaunayff215a42019-07-02 13:26:06 +0200166 # make DEVICE_TREE=stm32mp157a-dk1 all
Patrice Chotardfe5b5392019-02-12 16:50:39 +0100167
Patrick Delaunayff215a42019-07-02 13:26:06 +0200168 f) basic boot on avenger96
Manivannan Sadhasivamd1564072019-05-02 13:26:44 +0530169 # export KBUILD_OUTPUT=stm32mp15_basic
170 # make stm32mp15_basic_defconfig
171 # make DEVICE_TREE=stm32mp157a-avenger96 all
172
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +01001736. Output files
174
Patrick Delaunaye7f435d2018-07-09 15:17:22 +0200175 BootRom and TF-A expect binaries with STM32 image header
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100176 SPL expects file with U-Boot uImage header
177
178 So in the output directory (selected by KBUILD_OUTPUT),
179 you can found the needed files:
180
Patrick Delaunayff215a42019-07-02 13:26:06 +0200181 a) For Trusted boot (with or without OP-TEE)
Patrick Delaunay5d061412019-02-12 11:44:39 +0100182 + FSBL = tf-a.stm32 (provided by TF-A compilation)
183 + SSBL = u-boot.stm32
184
185 b) For Basic boot
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100186 + FSBL = spl/u-boot-spl.stm32
187 + SSBL = u-boot.img
188
Patrick Delaunay8d050102018-03-20 10:54:52 +01001896. Switch Setting for Boot Mode
190===============================
191
Patrick Delaunayc0a698c2019-08-02 15:07:22 +0200192You can select the boot mode, on the board with one switch :
Patrick Delaunay8d050102018-03-20 10:54:52 +0100193
Patrick Delaunay72e80f52019-07-05 17:20:18 +0200194- on the daugther board ed1 with the switch SW1 : BOOT0, BOOT1, BOOT2
195
Patrick Delaunay8d050102018-03-20 10:54:52 +0100196 -----------------------------------
197 Boot Mode BOOT2 BOOT1 BOOT0
198 -----------------------------------
199 Reserved 0 0 0
200 NOR 0 0 1
Patrick Delaunay8d050102018-03-20 10:54:52 +0100201 SD-Card 1 0 1
202 eMMC 0 1 0
203 NAND 0 1 1
204 Recovery 1 1 0
205 Recovery 0 0 0
206
Patrice Chotardfe5b5392019-02-12 16:50:39 +0100207- on board DK1/DK2 with the switch SW1 : BOOT0, BOOT2
208 (BOOT1 forced to 0, NOR not supported)
209
210 --------------------------
211 Boot Mode BOOT2 BOOT0
212 --------------------------
213 Reserved 1 0
214 SD-Card 1 1
215 Recovery 0 0
216
Manivannan Sadhasivamd1564072019-05-02 13:26:44 +0530217- Boot mode of Avenger96 can be selected using switch S3
218
219 -----------------------------------
220 Boot Mode BOOT2 BOOT1 BOOT0
221 -----------------------------------
222 Recovery 0 0 0
223 NOR 0 0 1
224 SD-Card 1 0 1
225 eMMC 0 1 0
226 NAND 0 1 1
227 Reserved 1 0 0
228 Recovery 1 1 0
229 SD-Card 1 1 1
230
Patrick Delaunay8d050102018-03-20 10:54:52 +0100231Recovery is a boot from serial link (UART/USB) and it is used with
232STM32CubeProgrammer tool to load executable in RAM and to update the flash
233devices available on the board (NOR/NAND/eMMC/SDCARD).
234The communication between HOST and board is based on
235- for UARTs : the uart protocol used with all MCU STM32
236- for USB : based on USB DFU 1.1 (without the ST extensions used on MCU STM32)
237
2387. Prepare an SDCard
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100239===================
240
241The minimal requirements for STMP32MP1 boot up to U-Boot are:
242- GPT partitioning (with gdisk or with sgdisk)
243- 2 fsbl partitions, named fsbl1 and fsbl2, size at least 256KiB
244- one ssbl partition for U-Boot
245
246Then the minimal GPT partition is:
Patrick Delaunay5d061412019-02-12 11:44:39 +0100247 ----- ------- --------- --------------
248 | Num | Name | Size | Content |
249 ----- ------- -------- ---------------
Patrick Delaunaye7f435d2018-07-09 15:17:22 +0200250 | 1 | fsbl1 | 256 KiB | TF-A or SPL |
251 | 2 | fsbl2 | 256 KiB | TF-A or SPL |
Patrick Delaunay5d061412019-02-12 11:44:39 +0100252 | 3 | ssbl | enought | U-Boot |
253 | * | - | - | Boot/Rootfs |
254 ----- ------- --------- --------------
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100255
256(*) add bootable partition for extlinux.conf
257 following Generic Distribution
258 (doc/README.distro for use)
259
260 according the used card reader select the block device
261 (/dev/sdx or /dev/mmcblk0)
262 in the next example I use /dev/mmcblk0
263
264for example: with gpt table with 128 entries
265
266 a) remove previous formatting
267 # sgdisk -o /dev/<SDCard dev>
268
269 b) create minimal image
Patrick Delaunay8d050102018-03-20 10:54:52 +0100270 # sgdisk --resize-table=128 -a 1 \
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100271 -n 1:34:545 -c 1:fsbl1 \
272 -n 2:546:1057 -c 2:fsbl2 \
273 -n 3:1058:5153 -c 3:ssbl \
274 -p /dev/<SDCard dev>
275
Patrick Delaunaye7f435d2018-07-09 15:17:22 +0200276 you can add other partitions for kernel
277 one partition rootfs for example:
Patrick Delaunay5d061412019-02-12 11:44:39 +0100278 -n 4:5154: -c 4:rootfs \
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100279
280 c) copy the FSBL (2 times) and SSBL file on the correct partition.
281 in this example in partition 1 to 3
282
283 for basic boot mode : <SDCard dev> = /dev/mmcblk0
284 # dd if=u-boot-spl.stm32 of=/dev/mmcblk0p1
285 # dd if=u-boot-spl.stm32 of=/dev/mmcblk0p2
286 # dd if=u-boot.img of=/dev/mmcblk0p3
287
Patrick Delaunay5d061412019-02-12 11:44:39 +0100288 for trusted boot mode :
289 # dd if=tf-a.stm32 of=/dev/mmcblk0p1
290 # dd if=tf-a.stm32 of=/dev/mmcblk0p2
291 # dd if=u-boot.stm32 of=/dev/mmcblk0p3
292
Patrick Delaunay72e80f52019-07-05 17:20:18 +0200293To boot from SDCard, select BootPinMode = 1 0 1 and reset.
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100294
Patrick Delaunay8d050102018-03-20 10:54:52 +01002958. Prepare eMMC
296===============
297You can use U-Boot to copy binary in eMMC.
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100298
Patrick Delaunay8d050102018-03-20 10:54:52 +0100299In the next example, you need to boot from SDCARD and the images (u-boot-spl.stm32, u-boot.img)
300are presents on SDCARD (mmc 0) in ext4 partition 4 (bootfs).
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100301
Patrick Delaunay5d061412019-02-12 11:44:39 +0100302To boot from SDCard, select BootPinMode = 1 0 1 and reset.
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +0100303
Patrick Delaunay8d050102018-03-20 10:54:52 +0100304Then you update the eMMC with the next U-Boot command :
305
306a) prepare GPT on eMMC,
307 example with 2 partitions, bootfs and roots:
308
309 # setenv emmc_part "name=ssbl,size=2MiB;name=bootfs,type=linux,bootable,size=64MiB;name=rootfs,type=linux,size=512"
310 # gpt write mmc 1 ${emmc_part}
311
312b) copy SPL on eMMC on firts boot partition
313 (SPL max size is 256kB, with LBA 512, 0x200)
314
315 # ext4load mmc 0:4 0xC0000000 u-boot-spl.stm32
316 # mmc dev 1
317 # mmc partconf 1 1 1 1
318 # mmc write ${fileaddr} 0 200
319 # mmc partconf 1 1 1 0
320
Patrick Delaunay5d061412019-02-12 11:44:39 +0100321c) copy U-Boot in first GPT partition of eMMC
Patrick Delaunay8d050102018-03-20 10:54:52 +0100322
323 # ext4load mmc 0:4 0xC0000000 u-boot.img
324 # mmc dev 1
325 # part start mmc 1 1 partstart
326 # part size mmc 1 1 partsize
327 # mmc write ${fileaddr} ${partstart} ${partsize}
328
329To boot from eMMC, select BootPinMode = 0 1 0 and reset.
Patrick Delaunaye7f435d2018-07-09 15:17:22 +0200330
3319. MAC Address
332==============
333
334Please read doc/README.enetaddr for the implementation guidelines for mac id
335usage. Basically, environment has precedence over board specific storage.
336
337Mac id storage and retrieval in stm32mp otp :
338- OTP_57[31:0] = MAC_ADDR[31:0]
339- OTP_58[15:0] = MAC_ADDR[47:32]
340
341To program a MAC address on virgin OTP words above, you can use the fuse command
342on bank 0 to access to internal OTP:
343
344 example to set mac address "12:34:56:78:9a:bc"
345
346 1- Write OTP
347 STM32MP> fuse prog -y 0 57 0x78563412 0x0000bc9a
348
349 2- Read OTP
350 STM32MP> fuse sense 0 57 2
351 Sensing bank 0:
352 Word 0x00000039: 78563412 0000bc9a
353
354 3- next REBOOT :
355 ### Setting environment from OTP MAC address = "12:34:56:78:9a:bc"
356
357 4 check env update
358 STM32MP> print ethaddr
359 ethaddr=12:34:56:78:9a:bc
Patrick Delaunayc0a698c2019-08-02 15:07:22 +0200360
36110. Coprocessor firmware
362========================
363
364U-Boot can boot the coprocessor before the kernel (coprocessor early boot).
365
366A/ Manuallly by using rproc commands (update the bootcmd)
367 Configurations
368 # env set name_copro "rproc-m4-fw.elf"
369 # env set dev_copro 0
370 # env set loadaddr_copro 0xC1000000
371
372 Load binary from bootfs partition (number 4) on SDCard (mmc 0)
373 # ext4load mmc 0:4 ${loadaddr_copro} ${name_copro}
374 => ${filesize} updated with the size of the loaded file
375
376 Start M4 firmware with remote proc command
377 # rproc init
378 # rproc load ${dev_copro} ${loadaddr_copro} ${filesize}
379 # rproc start ${dev_copro}
380
381B/ Automatically by using FIT feature and generic DISTRO bootcmd
382
383 see examples in this directory :
384
385 Generate FIT including kernel + device tree + M4 firmware
386 with cfg with M4 boot
387 $> mkimage -f fit_copro_kernel_dtb.its fit_copro_kernel_dtb.itb
388
389 Then using DISTRO configuration file: see extlinux.conf to select
390 the correct configuration
391 => stm32mp157c-ev1-m4
392 => stm32mp157c-dk2-m4
Patrick Delaunay093f6e12019-10-14 09:28:09 +0200393
39411. DFU support
395===============
396
397The DFU is supported on ST board.
398The env variable dfu_alt_info is automatically build, and all
399the memory present on the ST boards are exported.
400
401The mode is started by
402
403STM32MP> dfu 0
404
405On EV1 board:
406
407STM32MP> dfu 0 list
408
409DFU alt settings list:
410dev: RAM alt: 0 name: uImage layout: RAM_ADDR
411dev: RAM alt: 1 name: devicetree.dtb layout: RAM_ADDR
412dev: RAM alt: 2 name: uramdisk.image.gz layout: RAM_ADDR
413dev: eMMC alt: 3 name: sdcard_fsbl1 layout: RAW_ADDR
414dev: eMMC alt: 4 name: sdcard_fsbl2 layout: RAW_ADDR
415dev: eMMC alt: 5 name: sdcard_ssbl layout: RAW_ADDR
416dev: eMMC alt: 6 name: sdcard_bootfs layout: RAW_ADDR
417dev: eMMC alt: 7 name: sdcard_vendorfs layout: RAW_ADDR
418dev: eMMC alt: 8 name: sdcard_rootfs layout: RAW_ADDR
419dev: eMMC alt: 9 name: sdcard_userfs layout: RAW_ADDR
420dev: eMMC alt: 10 name: emmc_fsbl1 layout: RAW_ADDR
421dev: eMMC alt: 11 name: emmc_fsbl2 layout: RAW_ADDR
422dev: eMMC alt: 12 name: emmc_ssbl layout: RAW_ADDR
423dev: eMMC alt: 13 name: emmc_bootfs layout: RAW_ADDR
424dev: eMMC alt: 14 name: emmc_vendorfs layout: RAW_ADDR
425dev: eMMC alt: 15 name: emmc_rootfs layout: RAW_ADDR
426dev: eMMC alt: 16 name: emmc_userfs layout: RAW_ADDR
427dev: MTD alt: 17 name: nor_fsbl1 layout: RAW_ADDR
428dev: MTD alt: 18 name: nor_fsbl2 layout: RAW_ADDR
429dev: MTD alt: 19 name: nor_ssbl layout: RAW_ADDR
430dev: MTD alt: 20 name: nor_env layout: RAW_ADDR
431dev: MTD alt: 21 name: nand_fsbl layout: RAW_ADDR
432dev: MTD alt: 22 name: nand_ssbl1 layout: RAW_ADDR
433dev: MTD alt: 23 name: nand_ssbl2 layout: RAW_ADDR
434dev: MTD alt: 24 name: nand_UBI layout: RAW_ADDR
435dev: VIRT alt: 25 name: OTP layout: RAW_ADDR
436dev: VIRT alt: 26 name: PMIC layout: RAW_ADDR
437
438All the supported device are exported for dfu-util tool:
439
440$> dfu-util -l
441Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=26, name="PMIC", serial="002700333338511934383330"
442Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=25, name="OTP", serial="002700333338511934383330"
443Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=24, name="nand_UBI", serial="002700333338511934383330"
444Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=23, name="nand_ssbl2", serial="002700333338511934383330"
445Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=22, name="nand_ssbl1", serial="002700333338511934383330"
446Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=21, name="nand_fsbl", serial="002700333338511934383330"
447Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=20, name="nor_env", serial="002700333338511934383330"
448Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=19, name="nor_ssbl", serial="002700333338511934383330"
449Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=18, name="nor_fsbl2", serial="002700333338511934383330"
450Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=17, name="nor_fsbl1", serial="002700333338511934383330"
451Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=16, name="emmc_userfs", serial="002700333338511934383330"
452Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=15, name="emmc_rootfs", serial="002700333338511934383330"
453Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=14, name="emmc_vendorfs", serial="002700333338511934383330"
454Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=13, name="emmc_bootfs", serial="002700333338511934383330"
455Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=12, name="emmc_ssbl", serial="002700333338511934383330"
456Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=11, name="emmc_fsbl2", serial="002700333338511934383330"
457Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=10, name="emmc_fsbl1", serial="002700333338511934383330"
458Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=9, name="sdcard_userfs", serial="002700333338511934383330"
459Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=8, name="sdcard_rootfs", serial="002700333338511934383330"
460Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=7, name="sdcard_vendorfs", serial="002700333338511934383330"
461Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=6, name="sdcard_bootfs", serial="002700333338511934383330"
462Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=5, name="sdcard_ssbl", serial="002700333338511934383330"
463Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=4, name="sdcard_fsbl2", serial="002700333338511934383330"
464Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=3, name="sdcard_fsbl1", serial="002700333338511934383330"
465Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=2, name="uramdisk.image.gz", serial="002700333338511934383330"
466Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=1, name="devicetree.dtb", serial="002700333338511934383330"
467Found DFU: [0483:5720] ver=9999, devnum=99, cfg=1, intf=0, alt=0, name="uImage", serial="002700333338511934383330"
468
469You can update the boot device:
470
471#SDCARD
472$> dfu-util -d 0483:5720 -a 3 -D tf-a-stm32mp157c-ev1-trusted.stm32
473$> dfu-util -d 0483:5720 -a 4 -D tf-a-stm32mp157c-ev1-trusted.stm32
474$> dfu-util -d 0483:5720 -a 5 -D u-boot-stm32mp157c-ev1-trusted.img
475$> dfu-util -d 0483:5720 -a 6 -D st-image-bootfs-openstlinux-weston-stm32mp1.ext4
476$> dfu-util -d 0483:5720 -a 7 -D st-image-vendorfs-openstlinux-weston-stm32mp1.ext4
477$> dfu-util -d 0483:5720 -a 8 -D st-image-weston-openstlinux-weston-stm32mp1.ext4
478$> dfu-util -d 0483:5720 -a 9 -D st-image-userfs-openstlinux-weston-stm32mp1.ext4
479
480#EMMC
481$> dfu-util -d 0483:5720 -a 10 -D tf-a-stm32mp157c-ev1-trusted.stm32
482$> dfu-util -d 0483:5720 -a 11 -D tf-a-stm32mp157c-ev1-trusted.stm32
483$> dfu-util -d 0483:5720 -a 12 -D u-boot-stm32mp157c-ev1-trusted.img
484$> dfu-util -d 0483:5720 -a 13 -D st-image-bootfs-openstlinux-weston-stm32mp1.ext4
485$> dfu-util -d 0483:5720 -a 14 -D st-image-vendorfs-openstlinux-weston-stm32mp1.ext4
486$> dfu-util -d 0483:5720 -a 15 -D st-image-weston-openstlinux-weston-stm32mp1.ext4
487$> dfu-util -d 0483:5720 -a 16 -D st-image-userfs-openstlinux-weston-stm32mp1.ext4
488
489#NOR
490$> dfu-util -d 0483:5720 -a 17 -D tf-a-stm32mp157c-ev1-trusted.stm32
491$> dfu-util -d 0483:5720 -a 18 -D tf-a-stm32mp157c-ev1-trusted.stm32
492$> dfu-util -d 0483:5720 -a 19 -D u-boot-stm32mp157c-ev1-trusted.img
493
494#NAND (UBI partition used for NAND only boot or NOR + NAND boot)
495$> dfu-util -d 0483:5720 -a 21 -D tf-a-stm32mp157c-ev1-trusted.stm32
496$> dfu-util -d 0483:5720 -a 22 -D u-boot-stm32mp157c-ev1-trusted.img
497$> dfu-util -d 0483:5720 -a 23 -D u-boot-stm32mp157c-ev1-trusted.img
498$> dfu-util -d 0483:5720 -a 24 -D st-image-weston-openstlinux-weston-stm32mp1_nand_4_256_multivolume.ubi
499
500And you can also dump the OTP and the PMIC NVM with:
501
502$> dfu-util -d 0483:5720 -a 25 -U otp.bin
503$> dfu-util -d 0483:5720 -a 26 -U pmic.bin