14.1.1.3.5.2. OpenMV AE3: dfu-util¶
L’OpenMV AE3 usa il bootloader openmv_dfu (VID:PID applicazione 37C5:16E3, VID:PID DFU 37C5:96E3), ma è un dispositivo dual-core: un Alif Ensemble con un core Cortex-M55 ad alte prestazioni (HP) e uno ad alta efficienza (HE). Per entrare nel bootloader, basta collegare la camera: resta brevemente in ascolto all’accensione, e -w fa sì che dfu-util attenda che compaia. Ogni core esegue la propria immagine firmware e ha il proprio ROMFS in sola lettura, quindi un flash completo è di quattro immagini:
Core |
Comando firmware |
Comando ROMFS |
|---|---|---|
M55-HP |
|
|
M55-HE |
|
|
Un flash completo scrive le quattro immagini, con --reset solo sull’ultimo trasferimento:
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
Per sostituire il firmware di un solo core, esegui il flashing solo dell’alt di quel core (-a 1 per HP, -a 2 per HE); per sostituire il ROMFS di un core, esegui il flashing dell’alt ROMFS di quel core (-a 6 per HP / romfs0, -a 3 per HE / romfs1).
14.1.1.3.5.2.1. Inizializzazione della MRAM Everspin¶
Build speciali dell’OpenMV AE3 sostituiscono la flash esterna standard – che contiene il filesystem FAT interno e il ROMFS del core HP – con un chip MRAM Everspin. Questa sezione si applica solo a tali build. Un componente Everspin mai inizializzato, o i cui registri di configurazione sono corrotti, non risponde alle scritture, quindi i trasferimenti DFU verso quegli alt falliscono finché il chip non viene reinizializzato.
Il bootloader espone questo come un ulteriore alt DFU: scaricando un file chiave in -a 7 si attiva la sequenza di inizializzazione (un reset JESD, l’inizializzazione dei registri di configurazione, la rimozione del lock e due passaggi completi di cancellazione del chip). Il download stesso non memorizza nulla – la partizione verifica che il file inizi con la chiave di 16 byte attesa ed esegue la sequenza, al massimo una volta per sessione del bootloader.
Genera il file chiave con tools/flash_recovery_key.py dal repository del firmware (scrive un key.bin da 4 KB), quindi scaricalo:
python tools/flash_recovery_key.py
dfu-util -w -d ,37C5:96E3 -a 7 -D key.bin
Successivamente il chip è vuoto: riflasha il ROMFS del core HP (-a 6 -D romfs0.img) e il filesystem FAT interno si riformatta da solo al boot successivo.
Vedi anche
Per cancellare il filesystem FAT interno della camera – la soluzione quando un main.py errato o un filesystem corrotto impedisce l’avvio della camera – vedi Cancellazione del filesystem interno.
Per ripristinare il bootloader stesso della camera, vedi Ripristino del bootloader.