14.1.1.3.5.2. OpenMV AE3: dfu-util

O OpenMV AE3 utiliza o bootloader openmv_dfu (VID:PID da aplicação 37C5:16E3, VID:PID DFU 37C5:96E3), mas é um dispositivo dual-core: 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 ligar a câmara: fica à escuta brevemente ao ligar, e -w faz com que o dfu-util aguarde pelo seu aparecimento. Cada núcleo executa a sua própria imagem de firmware e tem o seu próprio ROMFS só de leitura, pelo que uma instalação completa requer quatro imagens:

Núcleo

Comando de firmware

Comando 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 instalação completa escreve as quatro imagens, com --reset apenas na última transferência:

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 apenas o firmware de um núcleo, instale apenas o alt desse núcleo (-a 1 para HP, -a 2 para HE); para substituir o ROMFS de um núcleo, instale o alt ROMFS desse núcleo (-a 6 para HP / romfs0, -a 3 para HE / romfs1).

14.1.1.3.5.2.1. Inicializar o MRAM Everspin

Builds especiais do OpenMV AE3 substituem a flash externa padrão – que contém o sistema de ficheiros FAT interno e o ROMFS do núcleo HP – por um chip MRAM Everspin. Esta secção aplica-se apenas a esses builds. Uma peça Everspin que nunca foi inicializada, ou cujos registos de configuração foram corrompidos, não responde a escritas, pelo que as transferências DFU para esses alts falham até o chip ser reinicializado.

O bootloader expõe isto como mais um alt DFU: descarregar um ficheiro de chave para -a 7 desencadeia a sequência de inicialização (um reset JESD, inicialização dos registos de configuração, remoção de bloqueios e duas passagens de apagamento completo do chip). O próprio descarregamento não armazena nada – a partição verifica se o ficheiro começa com a chave esperada de 16 bytes e executa a sequência, no máximo uma vez por sessão de bootloader.

Gere o ficheiro de chave com tools/flash_recovery_key.py do repositório de firmware (escreve um key.bin de 4 KB) e depois descarregue-o:

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

O chip fica em branco afterwards: reinstale o ROMFS do núcleo HP (-a 6 -D romfs0.img), e o sistema de ficheiros FAT interno reformata-se automaticamente no próximo arranque.

Veja também

Para apagar o sistema de ficheiros FAT interno da câmara – a solução quando um main.py inválido ou um sistema de ficheiros corrompido impede a câmara de arrancar – consulte Apagar o sistema de ficheiros interno.

Para restaurar o próprio bootloader da câmara, consulte Restaurar o bootloader.