14.1.1.5. Återställa startladdaren

En vanlig flashning av fast programvara rör aldrig startladdaren, så en avbruten uppdatering av fast programvara går nästan alltid att återställa: kör samma flashningskommando igen från Flasha den fasta programvaran (dfu-util -w väntar på enheten) eller kör Load Custom Firmware igen medan kameran fortfarande är kvar i sin startladdare. Den här sidan behandlar det ovanligare fallet där startladdaren själv är skadad och kameran inte längre räknas upp som en DFU-enhet vid omstart.

Startladdaren ligger i en separat flashregion skild från den fasta programvaran och filsystemet, och varje kamera med OpenMV-märkning har en hårdvaruväg tillbaka, så det är svårt att göra en kamera permanent oåterställbar. Arduino-korten är det enda undantaget – deras startladdare är fasta och kan inte återställas av användaren.

OpenMV IDE automatiserar alla dessa återställningsprocedurer och vägleder dig genom hårdvarustegen (byglar, omkopplare, knappar) under tiden. Avsnitten nedan dokumenterar vad det gör för varje kamerafamilj, för de tillfällen då du vill köra återställningen själv.

14.1.1.5.1. STM32-kameror (BOOT–RST-bygel)

För STM32 OpenMV-kamerorna (M4, M7, H7, H7 Plus, Pure Thermal):

  1. Koppla bort kameran.

  2. Anslut en bygeltråd mellan stiften BOOT och RST.

  3. Anslut igen. Kameran räknas nu upp som ST:s system-DFU-enhet (0483:df11), oberoende av den skadade fasta programvaran.

  4. Flasha endast om startladdaren – OpenMV IDE Load Custom Firmware med bootloader.bin, eller:

    dfu-util -w -d ,0483:df11 -a 0 -s 0x08000000 -D bootloader.bin
    
  5. Ta bort bygeln och anslut igen.

  6. Flasha den fasta programvaran på vanligt sätt (se Flasha den fasta programvaran).

14.1.1.5.2. OpenMV Cam N6 (BOOT–VCC-bygel)

  1. Koppla bort kameran.

  2. Anslut en bygeltråd mellan stiften BOOT och VCC.

  3. Anslut igen. Kameran räknas nu upp som ST:s system-DFU-enhet (0483:df11), oberoende av den skadade startladdaren.

  4. Flasha om med STM32CubeProgrammer (ingår i OpenMV SDK) och använd den flash-layoutbeskrivning som levereras tillsammans med bootloader.bin – den skriver om startladdaren i första steget, laddaren för det externa flashminnet samt startladdaren:

    STM32_Programmer_CLI -c port=USB1 -d OPENMV_N6/FlashLayout.tsv
    
  5. Ta bort bygeln och anslut igen.

  6. Flasha den fasta programvaran på vanligt sätt (se Flasha den fasta programvaran).

14.1.1.5.3. OpenMV Cam RT1062

Att återskapa RT1062:s säkra startladdare kräver att man försätter chippets ROM i seriellt nedladdningsläge (SDP) med en bygel, läser in en RAM-flashladdare och sedan skriver om flashkonfigurationsblocket, SBL och den fasta programvaran. Den manuella sekvensen:

  1. Koppla bort kameran, brygga stiften SBL och 3.3V, och anslut igen. Chippet räknas upp i SDP ROM-läge (0x1FC9:0x0135).

  2. Läs in och starta RAM-flashladdaren:

    sdphost -u 0x1FC9,0x0135 -- write-file 0x20001C00 sdphost_flash_loader.bin
    sdphost -u 0x1FC9,0x0135 -- jump-address 0x20001C00
    
  3. Kameran svarar nu som flashladdaren (0x15A2:0x0073). Konfigurera det externa flashminnet, skriv flashkonfigurationsblocket och skriv sedan 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. Skriv den fasta programvaran och sätt boot-källans säkring så att chippet startar den nya SBL från det externa flashminnet:

    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. Ta bort bygeln och slå av och på strömmen till kameran.

Varning

efuse-program-once 0x06 00000010 är en engångsskrivning av en oåterkallelig säkring som ställer in enheten att starta från det externa flashminnet. Detta är ytterligare ett skäl att låta OpenMV IDE utföra återställningen av RT1062:s startladdare i stället för att köra sekvensen för hand.

14.1.1.5.4. OpenMV AE3

AE3:s säkra startladdare återställs inte över USB DFU. Den skrivs om till chippets MRAM med Alif Semiconductors SE Tools (medföljer OpenMV IDE) över en seriell ISP-anslutning. Detta är en interaktiv procedur som endast används för återställning – inte en rutinmässig flashningsmetod – och den är felbenägen för hand; av allt på den här sidan är det den du bör överlåta åt OpenMV IDE.

Anslutning. SE Tools kommunicerar med AE3 över felsökningsadapterns seriella ISP-port – ett FTDI 0403:6015- eller ett CH340 1A86:55D3-gränssnitt, tillsammans med en J-Link. Återställning kräver att enheten försätts i återställningsläge: aktivera den inbyggda återställningsomkopplaren.

SE Tools. OpenMV IDE inkluderar dessa Alif-körbara filer. De delar två konfigurationsfiler – isp_config_data.cfg och global-cfg.db – som skapas av maintenance vid första anslutningen:

Verktyg

Syfte

maintenance

Fråga ut Secure Enclave (maintenance -opt sesbanner läser dess version) och försätt enheten i återställningsläge.

updateSystemPackage

Uppdatera systempaketet för Secure Enclave när det är äldre än den version som den fasta programvaran kräver.

app-gen-toc

Generera innehållsförteckningsbilden (TOC) (används vid en skrivning som endast omfattar applikationen).

app-write-mram

Skriv bild(er) till MRAM – det steg som återställer startladdaren.

Procedur:

  1. Anslut till AE3 med maintenance; det frågar efter serieporten och enhetstypen och skapar isp_config_data.cfg och global-cfg.db för de andra verktygen.

  2. Om systempaketet för Secure Enclave är inaktuellt uppdaterar updateSystemPackage det; slå av och på strömmen när du uppmanas till det.

  3. app-write-mram -i "bootloader.bin 0x80000000 firmware_pad.toc 0x8057E000" skriver startladdaren och TOC till MRAM.

  4. AE3 räknas upp på nytt som DFU-enheten 37C5:96E3. Kör den vanliga flashningen av fyra bilder från OpenMV AE3: dfu-util för att läsa in applikationen.

  5. Slå av och på strömmen till kameran och slå av återställningsomkopplaren igen.

Anteckning

OpenMV IDE hanterar mycket mer än detta lyckade scenario – en skadad fast programvara för Secure Enclave, en defekt startladdare och de andra feltillstånden kräver var och en sina egna återställningssteg, och mycket kan gå fel på vägen. Om de manuella stegen ovan inte får kameran att fungera igen, använd OpenMV IDE för att återställa den.