14.1.1.5. A rendszerbetöltő helyreállítása

A normál firmware-flashelés sosem érinti a rendszerbetöltőt, ezért egy megszakadt firmware-frissítés szinte mindig helyreállítható: futtasd újra ugyanazt a flashelési parancsot innen: A firmware felvillantása (flashelése) (a dfu-util -w megvárja az eszközt), vagy futtasd újra a Load Custom Firmware funkciót, miközben a kamera még a rendszerbetöltőjében van. Ez az oldal azt a ritkább esetet tárgyalja, amikor maga a rendszerbetöltő sérül meg, és a kamera többé nem jelentkezik DFU-eszközként újraindításkor.

A rendszerbetöltő a firmware-től és a fájlrendszertől elkülönített flash memória-régióban él, és minden OpenMV márkájú kamerának van hardveres visszaútja, így egy kamerát nehéz tartósan helyreállíthatatlanná tenni. Az Arduino-lapok jelentik az egyetlen kivételt – ezek rendszerbetöltői rögzítettek és a felhasználó által nem állíthatók helyre.

Az OpenMV IDE automatizálja mindezeket a helyreállítási eljárásokat, és végigvezet a hardveres lépéseken (jumperek, kapcsolók, gombok). Az alábbi szakaszok azt dokumentálják, mit tesz az egyes kameracsaládok esetében, arra az esetre, ha magad szeretnéd elvégezni a helyreállítást.

14.1.1.5.1. STM32 kamerák (BOOT–RST jumper)

Az STM32 OpenMV kamerákhoz (M4, M7, H7, H7 Plus, Pure Thermal):

  1. Csatlakoztasd le a kamerát.

  2. Köss egy jumpervezetéket a BOOT és RST lábak közé.

  3. Csatlakoztasd vissza. A kamera most az ST rendszer-DFU-eszközként (0483:df11) jelentkezik be, függetlenül a sérült firmware-től.

  4. Flasheld újra csak a rendszerbetöltőt – OpenMV IDE Load Custom Firmware a bootloader.bin fájllal, vagy:

    dfu-util -w -d ,0483:df11 -a 0 -s 0x08000000 -D bootloader.bin
    
  5. Távolítsd el a jumpert, és csatlakoztasd vissza.

  6. Flasheld a firmware-t a szokásos módon (lásd A firmware felvillantása (flashelése)).

14.1.1.5.2. OpenMV Cam N6 (BOOT–VCC jumper)

  1. Csatlakoztasd le a kamerát.

  2. Köss egy jumpervezetéket a BOOT és VCC lábak közé.

  3. Csatlakoztasd vissza. A kamera most az ST rendszer-DFU-eszközként (0483:df11) jelentkezik be, függetlenül a sérült rendszerbetöltőtől.

  4. Flasheld újra az STM32CubeProgrammerrel (az OpenMV SDK-ban benne van), az bootloader.bin mellett szállított flash-elrendezés leíró használatával – ez újraírja az első fokozatú rendszerbetöltőt, a külső flash betöltőt és a rendszerbetöltőt:

    STM32_Programmer_CLI -c port=USB1 -d OPENMV_N6/FlashLayout.tsv
    
  5. Távolítsd el a jumpert, és csatlakoztasd vissza.

  6. Flasheld a firmware-t a szokásos módon (lásd A firmware felvillantása (flashelése)).

14.1.1.5.3. OpenMV Cam RT1062

Az RT1062 biztonságos rendszerbetöltőjének újraelőállításához be kell léptetni a chipet a ROM soros letöltési (SDP) módjába egy jumperrel, fel kell készíteni egy RAM-flashbetöltőt, majd újra kell írni a flash konfigurációs blokkot, az SBL-t és a firmware-t. A kézi műveletsor:

  1. Csatlakoztasd le a kamerát, köss jumpert az SBL és a 3.3V lábak közé, és csatlakoztasd vissza. A chip SDP ROM módban (0x1FC9:0x0135) jelentkezik be.

  2. Készítsd elő és indítsd el a RAM-flashbetöltőt:

    sdphost -u 0x1FC9,0x0135 -- write-file 0x20001C00 sdphost_flash_loader.bin
    sdphost -u 0x1FC9,0x0135 -- jump-address 0x20001C00
    
  3. A kamera most a flashbetöltőként (0x15A2:0x0073) válaszol. Konfiguráld a külső flash memóriát, írd be a flash konfigurációs blokkot, majd írd be az SBL-t:

    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. Írd be a firmware-t, és állítsd be a boot-forrás biztosítékot, hogy a chip az új SBL-t a külső flash memóriáról indítsa:

    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. Távolítsd el a jumpert, és kapcsold ki-be a kamerát.

Figyelem

Az efuse-program-once 0x06 00000010 egy egyszeri, visszafordíthatatlan biztosítékírás, amely az eszközt a külső flash memóriáról való indításra állítja be. Ez egy újabb ok arra, hogy az RT1062 rendszerbetöltő-helyreállítást inkább az OpenMV IDE-vel végeztesd, mintsem a műveletsort kézzel futtasd.

14.1.1.5.4. OpenMV AE3

Az AE3 biztonságos rendszerbetöltője nem állítható helyre USB DFU-n keresztül. Ehelyett az Alif Semiconductor SE Tools eszközeivel (az OpenMV IDE-be csomagolva) íródik újra a chip MRAM-jába, soros ISP-kapcsolaton keresztül. Ez egy interaktív, kizárólag helyreállításra szolgáló eljárás – nem rutinszerű flashelési módszer –, és kézzel hibára hajlamos; az ezen az oldalon szereplő mindenből ez az, amit érdemes az OpenMV IDE-re bízni.

Kapcsolat. Az SE Tools az AE3-mal a hibakeresési adapterének soros ISP-portján keresztül kommunikál – egy FTDI 0403:6015 vagy egy CH340 1A86:55D3 interfészen, egy J-Linkkel együtt. A helyreállításhoz az eszközt helyreállítási módba kell tenni: engedélyezd a beépített helyreállítási kapcsolót.

SE Tools. Az OpenMV IDE ezeket az Alif futtatható állományokat csomagolja. Két közös konfigurációs fájlt használnak – isp_config_data.cfg és global-cfg.db –, amelyeket a maintenance hoz létre az első csatlakozáskor:

Eszköz

Cél

maintenance

Lekérdezi a Secure Enclave-et (a maintenance -opt sesbanner kiolvassa a verzióját), és helyreállítási módba helyezi az eszközt.

updateSystemPackage

Frissíti a Secure Enclave rendszercsomagját, ha az régebbi, mint amit a firmware megkövetel.

app-gen-toc

Létrehozza a tartalomjegyzék (TOC) képet (egy csak alkalmazást érintő íráshoz használva).

app-write-mram

Kép(ek) MRAM-ba írása – ez a lépés állítja helyre a rendszerbetöltőt.

Eljárás:

  1. Csatlakozz az AE3-hoz a maintenance paranccsal; ez bekéri a soros portot és az eszköztípust, létrehozva a többi eszköz számára az isp_config_data.cfg és global-cfg.db fájlokat.

  2. Ha a Secure Enclave rendszercsomagja elavult, az updateSystemPackage frissíti azt; kapcsold ki-be az áramellátást, amikor felszólít rá.

  3. Az app-write-mram -i "bootloader.bin 0x80000000 firmware_pad.toc 0x8057E000" beírja a rendszerbetöltőt és a TOC-ot az MRAM-ba.

  4. Az AE3 újra 37C5:96E3 DFU-eszközként jelentkezik be. Futtasd a szokásos négyképes flashelést innen: OpenMV AE3: dfu-util, hogy betöltsd az alkalmazást.

  5. Kapcsold ki-be a kamerát, és kapcsold vissza ki állásba a helyreállítási kapcsolót.

Megjegyzés

Az OpenMV IDE ennél a problémamentes esetnél sokkal többet kezel – egy sérült Secure Enclave firmware, egy hibás rendszerbetöltő és a többi hibaállapot mindegyike saját helyreállítási lépéseket igényel, és sok minden elromolhat útközben. Ha a fenti kézi lépések nem hozzák vissza a kamerát, használd az OpenMV IDE-t a helyreállításához.