14.1.1.5. Restaurando o bootloader¶
Uma gravação normal de firmware nunca toca no bootloader, então uma atualização de firmware interrompida quase sempre é recuperável: execute novamente o mesmo comando de gravação a partir de Gravando o firmware (dfu-util -w aguarda o dispositivo) ou execute novamente Load Custom Firmware enquanto a câmera ainda estiver em seu bootloader. Esta página cobre o caso mais raro em que o próprio bootloader está danificado e a câmera não enumera mais como dispositivo DFU ao ser reiniciada.
O bootloader reside em uma região de flash separada do firmware e do sistema de arquivos, e toda câmera da marca OpenMV possui um caminho de hardware de volta, de modo que é difícil deixar uma câmera permanentemente irrecuperável. As placas Arduino são a única exceção – seus bootloaders são fixos e não podem ser restaurados pelo usuário.
O OpenMV IDE automatiza todos esses procedimentos de recuperação, orientando você pelas etapas de hardware (jumpers, chaves, botões) ao longo do caminho. As seções abaixo documentam o que ele faz para cada família de câmeras, para quando você quiser executar a recuperação por conta própria.
14.1.1.5.1. Câmeras STM32 (jumper BOOT–RST)¶
Para as câmeras OpenMV STM32 (M4, M7, H7, H7 Plus, Pure Thermal):
Desconecte a câmera.
Conecte um fio jumper entre os pinos BOOT e RST.
Reconecte. A câmera agora enumera como o dispositivo DFU de sistema da ST (
0483:df11), independentemente do firmware danificado.Regrave apenas o bootloader – OpenMV IDE Load Custom Firmware com
bootloader.bin, ou:dfu-util -w -d ,0483:df11 -a 0 -s 0x08000000 -D bootloader.binRemova o jumper e reconecte.
Grave o firmware normalmente (veja Gravando o firmware).
14.1.1.5.2. OpenMV Cam N6 (jumper BOOT–VCC)¶
Desconecte a câmera.
Conecte um fio jumper entre os pinos BOOT e VCC.
Reconecte. A câmera agora enumera como o dispositivo DFU de sistema da ST (
0483:df11), independentemente do bootloader danificado.Regrave com o STM32CubeProgrammer (incluído no OpenMV SDK), usando o descritor de layout de flash que acompanha
bootloader.bin– ele reescreve o bootloader de primeiro estágio, o carregador de flash externa e o bootloader:STM32_Programmer_CLI -c port=USB1 -d OPENMV_N6/FlashLayout.tsvRemova o jumper e reconecte.
Grave o firmware normalmente (veja Gravando o firmware).
14.1.1.5.3. OpenMV Cam RT1062¶
Recriar o bootloader seguro do RT1062 exige entrar no modo de download serial pela ROM (SDP) do chip com um jumper, preparar um flashloader na RAM e então reescrever o bloco de configuração da flash, o SBL e o firmware. A sequência manual:
Desconecte a câmera, faça o jumper entre os pinos SBL e 3.3V e reconecte. O chip enumera em modo SDP ROM (
0x1FC9:0x0135).Prepare e inicie o flashloader na RAM:
sdphost -u 0x1FC9,0x0135 -- write-file 0x20001C00 sdphost_flash_loader.bin sdphost -u 0x1FC9,0x0135 -- jump-address 0x20001C00
A câmera agora responde como o flashloader (
0x15A2:0x0073). Configure a flash externa, grave o bloco de configuração da flash e então grave o SBL:blhost -u 0x15A2,0x0073 -- fill-memory 0x2000 4 0xC0000008 word blhost -u 0x15A2,0x0073 -- configure-memory 9 0x2000 blhost -u 0x15A2,0x0073 -t 120000 -- flash-erase-region 0x60000000 0x1000 blhost -u 0x15A2,0x0073 -- fill-memory 0x2000 4 0xF000000F word blhost -u 0x15A2,0x0073 -- configure-memory 9 0x2000 blhost -u 0x15A2,0x0073 -t 120000 -- flash-erase-region 0x60001000 <sbl_size> blhost -u 0x15A2,0x0073 -- write-memory 0x60001000 blhost_flash_loader.bin
Grave o firmware e defina o fusível da fonte de boot para que o chip inicialize o novo SBL a partir da flash externa:
blhost -u 0x15A2,0x0073 -t 120000 -- flash-erase-region 0x60040000 <firmware_size> blhost -u 0x15A2,0x0073 -- write-memory 0x60040000 firmware.bin blhost -u 0x15A2,0x0073 -- efuse-program-once 0x06 00000010 blhost -u 0x15A2,0x0073 -- reset
Remova o jumper e faça um ciclo de energia na câmera.
Aviso
efuse-program-once 0x06 00000010 é uma gravação de fusível única e irreversível que configura o dispositivo para inicializar a partir da flash externa. Esta é mais uma razão para deixar o OpenMV IDE realizar a recuperação do bootloader do RT1062 em vez de executar a sequência manualmente.
14.1.1.5.4. OpenMV AE3¶
O bootloader seguro do AE3 não é restaurado via USB DFU. Ele é reescrito na MRAM do chip com as SE Tools da Alif Semiconductor (incluídas no OpenMV IDE) por meio de uma conexão serial ISP. Este é um procedimento interativo, exclusivo de recuperação – não é um método de gravação rotineiro – e é propenso a erros quando feito manualmente; de tudo nesta página, este é o que vale a pena deixar a cargo do OpenMV IDE.
Conexão. As SE Tools se comunicam com o AE3 pela porta serial ISP de seu adaptador de depuração – uma interface FTDI 0403:6015 ou CH340 1A86:55D3, junto com um J-Link. A recuperação exige colocar o dispositivo em modo de recuperação: habilite a chave de recuperação embarcada na placa.
SE Tools. O OpenMV IDE inclui esses executáveis da Alif. Eles compartilham dois arquivos de configuração – isp_config_data.cfg e global-cfg.db – criados pelo maintenance na primeira conexão:
Ferramenta |
Finalidade |
|---|---|
|
Consulta o Secure Enclave ( |
|
Atualiza o pacote de sistema do Secure Enclave quando ele é mais antigo que a versão exigida pelo firmware. |
|
Gera a imagem de sumário (TOC, table-of-contents), usada para uma gravação somente de aplicação. |
|
Grava imagem(ns) na MRAM – a etapa que restaura o bootloader. |
Procedimento:
Conecte-se ao AE3 com
maintenance; ele solicita a porta serial e o tipo de dispositivo, criandoisp_config_data.cfgeglobal-cfg.dbpara as outras ferramentas.Se o pacote de sistema do Secure Enclave estiver desatualizado,
updateSystemPackageo atualiza; faça um ciclo de energia quando solicitado.app-write-mram -i "bootloader.bin 0x80000000 firmware_pad.toc 0x8057E000"grava o bootloader e o TOC na MRAM.O AE3 reenumera como o dispositivo DFU
37C5:96E3. Execute a gravação normal das quatro imagens de OpenMV AE3: dfu-util para carregar a aplicação.Faça um ciclo de energia na câmera e desligue a chave de recuperação novamente.
Nota
O OpenMV IDE lida com muito mais do que esse caminho ideal – um firmware corrompido do Secure Enclave, um bootloader defeituoso e os demais estados de falha exigem, cada um, suas próprias etapas de recuperação, e muita coisa pode dar errado pelo caminho. Se as etapas manuais acima não trouxerem a câmera de volta, use o OpenMV IDE para recuperá-la.