14.1.1.3.5.2. OpenMV AE3: dfu-util

OpenMV AE3 folosește bootloader-ul openmv_dfu (aplicație VID:PID 37C5:16E3, DFU VID:PID 37C5:96E3), dar este un dispozitiv dual-core: un Alif Ensemble cu un nucleu Cortex-M55 de înaltă performanță (HP) și unul de înaltă eficiență (HE). Pentru a intra în bootloader, doar conectați camera: ascultă pentru scurt timp la pornire, iar -w face ca dfu-util să aștepte apariția acesteia. Fiecare nucleu rulează propria imagine de firmware și are propriul ROMFS doar-citire, deci o programare completă înseamnă patru imagini:

Nucleu

Comandă firmware

Comandă ROMFS

M55-HP

-a 1 -D firmware_M55_HP.bin

-a 6 -D romfs0.img

M55-HE

-a 2 -D firmware_M55_HE.bin

-a 3 -D romfs1.img

O programare completă scrie cele patru imagini, cu --reset doar la transferul final:

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

Pentru a înlocui firmware-ul unui singur nucleu, programați doar alt-ul acelui nucleu (-a 1 pentru HP, -a 2 pentru HE); pentru a înlocui ROMFS-ul unui nucleu, programați alt-ul ROMFS al acelui nucleu (-a 6 pentru HP / romfs0, -a 3 pentru HE / romfs1).

14.1.1.3.5.2.1. Inițializarea memoriei Everspin MRAM

Compilările speciale ale OpenMV AE3 înlocuiesc memoria flash externă standard – care conține sistemul de fișiere FAT intern și ROMFS-ul nucleului HP – cu un cip Everspin MRAM. Această secțiune se aplică doar acelor compilări. O componentă Everspin care nu a fost niciodată inițializată sau ale cărei registre de configurare au fost corupte nu răspunde la scrieri, deci transferurile DFU către acele alt-uri eșuează până când cipul este reinițializat.

Bootloader-ul expune aceasta ca un alt DFU suplimentar: descărcarea unui fișier-cheie către -a 7 declanșează secvența de inițializare (o resetare JESD, inițializarea registrelor de configurare, eliminarea blocării și două treceri complete de ștergere a cipului). Descărcarea în sine nu stochează nimic – partiția verifică dacă fișierul începe cu cheia de 16 octeți așteptată și rulează secvența, cel mult o dată per sesiune de bootloader.

Generați fișierul-cheie cu tools/flash_recovery_key.py din depozitul de firmware (scrie un key.bin de 4 KB), apoi descărcați-l:

python tools/flash_recovery_key.py
dfu-util -w -d ,37C5:96E3 -a 7 -D key.bin

Cipul este gol după aceea: reprogramați ROMFS-ul nucleului HP (-a 6 -D romfs0.img), iar sistemul de fișiere FAT intern se reformatează singur la următoarea pornire.

Vezi și

Pentru a șterge sistemul de fișiere FAT intern al camerei – soluția când un main.py defect sau un sistem de fișiere corupt împiedică camera să pornească – consultați Ștergerea sistemului de fișiere intern.

Pentru a restaura bootloader-ul în sine al camerei, consultați Restaurarea bootloader-ului.