14.1.1.3.5.2. OpenMV AE3: dfu-util

A OpenMV AE3 usa o bootloader openmv_dfu (VID:PID da aplicação 37C5:16E3, VID:PID DFU 37C5:96E3), mas é um dispositivo de núcleo duplo: um Alif Ensemble com um núcleo Cortex-M55 de alto desempenho (HP) e um de alta eficiência (HE). Para entrar no bootloader, basta conectar a câmera: ela fica à escuta brevemente ao ligar, e -w faz o dfu-util aguardar até que ela apareça. Cada núcleo executa sua própria imagem de firmware e tem seu próprio ROMFS somente leitura, então uma gravação completa são quatro imagens:

Núcleo

Comando de firmware

Comando de 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

Uma gravação completa escreve as quatro imagens, com --reset apenas na transferência 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

Para substituir o firmware de apenas um núcleo, grave somente o alt desse núcleo (-a 1 para HP, -a 2 para HE); para substituir o ROMFS de um núcleo, grave o alt de ROMFS desse núcleo (-a 6 para HP / romfs0, -a 3 para HE / romfs1).

14.1.1.3.5.2.1. Inicializando a MRAM Everspin

Compilações especiais da OpenMV AE3 substituem o flash externo padrão – que contém o sistema de arquivos FAT interno e o ROMFS do núcleo HP – por um chip de MRAM Everspin. Esta seção se aplica apenas a essas compilações. Um componente Everspin que nunca foi inicializado, ou cujos registradores de configuração foram corrompidos, não responde a gravações, de modo que as transferências DFU para esses alts falham até que o chip seja reinicializado.

O bootloader expõe isso como mais um alt DFU: o download de um arquivo de chave para -a 7 dispara a sequência de inicialização (um reset JESD, a inicialização dos registradores de configuração, a remoção de bloqueio e duas passagens completas de apagamento do chip). O download em si não armazena nada – a partição verifica se o arquivo começa com a chave de 16 bytes esperada e executa a sequência, no máximo uma vez por sessão do bootloader.

Gere o arquivo de chave com tools/flash_recovery_key.py do repositório de firmware (ele grava um key.bin de 4 KB) e então faça o download dele:

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

O chip fica em branco depois disso: regrave o ROMFS do núcleo HP (-a 6 -D romfs0.img), e o sistema de arquivos FAT interno se reformata sozinho na próxima inicialização.

Ver também

Para apagar o sistema de arquivos FAT interno da câmera – a solução quando um main.py defeituoso ou um sistema de arquivos corrompido impede a câmera de inicializar – veja Apagando o sistema de arquivos interno.

Para restaurar o próprio bootloader da câmera, veja Restaurando o bootloader.