15.4.1.3.5.2. OpenMV AE3: dfu-util

The OpenMV AE3 uses the openmv_dfu bootloader (application VID:PID 37C5:16E3, DFU VID:PID 37C5:96E3), but it is a dual-core device: an Alif Ensemble with a high-performance (HP) and a high-efficiency (HE) Cortex-M55 core. Each core runs its own firmware image and has its own read-only ROMFS, so a full flash is four images, plus a fifth DFU alt that erases the shared internal FAT filesystem. The complete DFU alt-setting map:

Alt

Purpose

Core

Image file

Size (hex)

Size (bytes)

-a 1

Firmware

M55-HP

firmware_M55_HP.bin

0x300000

3,145,728

-a 2

Firmware

M55-HE

firmware_M55_HE.bin

0x15E000

1,433,600

-a 3

ROMFS

M55-HE

romfs1.img

0x100000

1,048,576

-a 5

Erase internal FAT filesystem

shared

(4 KB of zeros)

-a 6

ROMFS

M55-HP

romfs0.img

0x1800000

25,165,824

A full flash writes the four images, with --reset only on the final transfer:

dfu-util -w -d ,37C5:96E3 -a 1 -D firmware_M55_HP.bin
dfu-util -w -d ,37C5:96E3 -a 2 -D firmware_M55_HE.bin
dfu-util -w -d ,37C5:96E3 -a 3 -D romfs1.img
dfu-util -w -d ,37C5:96E3 -a 6 --reset -D romfs0.img

To replace just one core’s firmware, flash only that core’s alt (-a 1 for HP, -a 2 for HE); to replace one core’s ROMFS, flash that core’s ROMFS alt (-a 6 for HP / romfs0, -a 3 for HE / romfs1). The writable internal FAT filesystem is shared by both cores and is wiped once via -a 5 (see Erasing the internal filesystem). The AE3’s bootloader is restored by a different procedure – see Restoring the bootloader.