14.1.1.5. Restauration du programme d’amorçage

Un flashage normal du micrologiciel ne touche jamais au programme d’amorçage, de sorte qu’une mise à jour du micrologiciel interrompue est presque toujours récupérable : relancez la même commande de flashage depuis Flasher le micrologiciel (dfu-util -w attend l’appareil) ou relancez Load Custom Firmware tant que la caméra est encore dans son programme d’amorçage. Cette page traite du cas plus rare où le programme d’amorçage lui-même est endommagé et où la caméra n’est plus reconnue comme un périphérique DFU au redémarrage.

Le programme d’amorçage réside dans une région de la mémoire flash distincte de celle du micrologiciel et du système de fichiers, et chaque caméra de marque OpenMV dispose d’un chemin de retour matériel ; il est donc difficile de rendre une caméra définitivement irrécupérable. Les cartes Arduino constituent la seule exception : leurs programmes d’amorçage sont fixes et ne peuvent pas être restaurés par l’utilisateur.

OpenMV IDE automatise toutes ces procédures de récupération, en vous guidant à travers les étapes matérielles (cavaliers, interrupteurs, boutons) au fur et à mesure. Les sections ci-dessous documentent ce qu’il fait pour chaque famille de caméras, pour le cas où vous souhaiteriez effectuer la récupération vous-même.

14.1.1.5.1. Caméras STM32 (cavalier BOOT–RST)

Pour les caméras OpenMV STM32 (M4, M7, H7, H7 Plus, Pure Thermal) :

  1. Déconnectez la caméra.

  2. Reliez les broches BOOT et RST avec un fil cavalier.

  3. Reconnectez. La caméra est désormais reconnue comme le périphérique DFU système de ST (0483:df11), indépendamment du micrologiciel endommagé.

  4. Reflashez uniquement le programme d’amorçage : OpenMV IDE Load Custom Firmware avec bootloader.bin, ou bien

    dfu-util -w -d ,0483:df11 -a 0 -s 0x08000000 -D bootloader.bin
    
  5. Retirez le cavalier et reconnectez.

  6. Flashez le micrologiciel normalement (voir Flasher le micrologiciel).

14.1.1.5.2. OpenMV Cam N6 (cavalier BOOT–VCC)

  1. Déconnectez la caméra.

  2. Reliez les broches BOOT et VCC avec un fil cavalier.

  3. Reconnectez. La caméra est désormais reconnue comme le périphérique DFU système de ST (0483:df11), indépendamment du programme d’amorçage endommagé.

  4. Reflashez avec STM32CubeProgrammer (inclus dans le SDK OpenMV), en utilisant le descripteur de disposition de la mémoire flash fourni avec bootloader.bin : il réécrit le programme d’amorçage de premier étage, le chargeur de mémoire flash externe et le programme d’amorçage

    STM32_Programmer_CLI -c port=USB1 -d OPENMV_N6/FlashLayout.tsv
    
  5. Retirez le cavalier et reconnectez.

  6. Flashez le micrologiciel normalement (voir Flasher le micrologiciel).

14.1.1.5.3. OpenMV Cam RT1062

Recréer le programme d’amorçage sécurisé du RT1062 nécessite d’entrer dans le mode de téléchargement série de la ROM de la puce (SDP) à l’aide d’un cavalier, de mettre en place un chargeur de mémoire flash en RAM, puis de réécrire le bloc de configuration de la mémoire flash, le SBL et le micrologiciel. La séquence manuelle :

  1. Déconnectez la caméra, reliez les broches SBL et 3.3V, puis reconnectez. La puce est reconnue en mode ROM SDP (0x1FC9:0x0135).

  2. Mettez en place et démarrez le chargeur de mémoire flash en RAM

    sdphost -u 0x1FC9,0x0135 -- write-file 0x20001C00 sdphost_flash_loader.bin
    sdphost -u 0x1FC9,0x0135 -- jump-address 0x20001C00
    
  3. La caméra répond désormais en tant que chargeur de mémoire flash (0x15A2:0x0073). Configurez la mémoire flash externe, écrivez le bloc de configuration de la mémoire flash, puis écrivez le 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
    
  4. Écrivez le micrologiciel et définissez le fusible de source d’amorçage afin que la puce démarre le nouveau SBL depuis la mémoire flash externe

    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
    
  5. Retirez le cavalier et redémarrez l’alimentation de la caméra.

Avertissement

efuse-program-once 0x06 00000010 est une écriture de fusible unique et irréversible qui configure l’appareil pour démarrer depuis la mémoire flash externe. C’est une raison supplémentaire de laisser OpenMV IDE effectuer la récupération du programme d’amorçage du RT1062 plutôt que d’exécuter la séquence à la main.

14.1.1.5.4. OpenMV AE3

Le programme d’amorçage sécurisé de l’AE3 n’est pas restauré via USB DFU. Il est réécrit dans la MRAM de la puce à l’aide des SE Tools d’Alif Semiconductor (fournis avec OpenMV IDE) sur une connexion série ISP. Il s’agit d’une procédure interactive, réservée à la récupération – et non d’une méthode de flashage courante – qui est sujette aux erreurs lorsqu’elle est effectuée à la main ; de tout ce qui figure sur cette page, c’est celle qu’il vaut mieux confier à OpenMV IDE.

Connexion. Les SE Tools communiquent avec l’AE3 via le port série ISP de son adaptateur de débogage – une interface FTDI 0403:6015 ou CH340 1A86:55D3, accompagnée d’un J-Link. La récupération nécessite de placer l’appareil en mode de récupération : activez l’interrupteur de récupération intégré.

SE Tools. OpenMV IDE intègre ces exécutables Alif. Ils partagent deux fichiers de configuration – isp_config_data.cfg et global-cfg.db – créés par maintenance lors de la première connexion :

Outil

Rôle

maintenance

Interroge le Secure Enclave (maintenance -opt sesbanner lit sa version) et place l’appareil en mode de récupération.

updateSystemPackage

Met à jour le package système du Secure Enclave lorsqu’il est plus ancien que la version requise par le micrologiciel.

app-gen-toc

Génère l’image de la table des matières (TOC) (utilisée pour une écriture d’application seule).

app-write-mram

Écrit la ou les images dans la MRAM – l’étape qui restaure le programme d’amorçage.

Procédure :

  1. Connectez-vous à l’AE3 avec maintenance ; il demande le port série et le type d’appareil, en créant isp_config_data.cfg et global-cfg.db pour les autres outils.

  2. Si le package système du Secure Enclave n’est pas à jour, updateSystemPackage le met à jour ; redémarrez l’alimentation lorsque cela vous est demandé.

  3. app-write-mram -i "bootloader.bin 0x80000000 firmware_pad.toc 0x8057E000" écrit le programme d’amorçage et la TOC dans la MRAM.

  4. L’AE3 est de nouveau reconnu comme le périphérique DFU 37C5:96E3. Exécutez le flashage normal des quatre images depuis OpenMV AE3 : dfu-util pour charger l’application.

  5. Redémarrez l’alimentation de la caméra et remettez l’interrupteur de récupération en position désactivée.

Note

OpenMV IDE gère bien plus que ce cas idéal – un micrologiciel Secure Enclave corrompu, un programme d’amorçage défectueux et les autres états de défaillance nécessitent chacun leurs propres étapes de récupération, et bien des choses peuvent mal tourner en cours de route. Si les étapes manuelles ci-dessus ne ramènent pas la caméra à la vie, utilisez OpenMV IDE pour la récupérer.