14.1.1.5. Restaurarea bootloader-ului¶
O scriere normală a firmware-ului nu atinge niciodată bootloader-ul, așa că o actualizare de firmware întreruptă este aproape întotdeauna recuperabilă: rulați din nou aceeași comandă de scriere din Programarea firmware-ului (dfu-util -w așteaptă dispozitivul) sau rulați din nou Load Custom Firmware cât timp camera se află încă în bootloader-ul său. Această pagină acoperă cazul mai rar în care bootloader-ul însuși este deteriorat, iar camera nu se mai enumeră ca dispozitiv DFU la resetare.
Bootloader-ul se află într-o regiune de memorie flash separată de firmware și de sistemul de fișiere, iar fiecare cameră marca OpenMV are o cale hardware de revenire, deci este dificil ca o cameră să devină permanent nerecuperabilă. Plăcile Arduino sunt singura excepție – bootloader-ele lor sunt fixe și nu pot fi restaurate de utilizator.
OpenMV IDE automatizează toate aceste proceduri de recuperare, ghidându-vă prin pașii hardware (jumpere, comutatoare, butoane) pe parcurs. Secțiunile de mai jos documentează ce face pentru fiecare familie de camere, pentru cazul în care doriți să rulați recuperarea singur.
14.1.1.5.1. Camere STM32 (jumper BOOT–RST)¶
Pentru camerele STM32 OpenMV (M4, M7, H7, H7 Plus, Pure Thermal):
Deconectați camera.
Conectați un fir jumper între pinii BOOT și RST.
Reconectați. Camera se enumeră acum ca dispozitivul DFU de sistem ST (
0483:df11), independent de firmware-ul deteriorat.Rescrieți doar bootloader-ul – OpenMV IDE Load Custom Firmware cu
bootloader.bin, sau:dfu-util -w -d ,0483:df11 -a 0 -s 0x08000000 -D bootloader.binScoateți jumperul și reconectați.
Scrieți firmware-ul în mod normal (vezi Programarea firmware-ului).
14.1.1.5.2. OpenMV Cam N6 (jumper BOOT–VCC)¶
Deconectați camera.
Conectați un fir jumper între pinii BOOT și VCC.
Reconectați. Camera se enumeră acum ca dispozitivul DFU de sistem ST (
0483:df11), independent de bootloader-ul deteriorat.Rescrieți cu STM32CubeProgrammer (inclus în OpenMV SDK), folosind descriptorul de aspect al memoriei flash livrat alături de
bootloader.bin– acesta rescrie bootloader-ul de prima etapă, încărcătorul de memorie flash externă și bootloader-ul:STM32_Programmer_CLI -c port=USB1 -d OPENMV_N6/FlashLayout.tsvScoateți jumperul și reconectați.
Scrieți firmware-ul în mod normal (vezi Programarea firmware-ului).
14.1.1.5.3. OpenMV Cam RT1062¶
Recrearea bootloader-ului securizat RT1062 necesită intrarea în modul de descărcare serială din ROM-ul cipului (SDP) cu un jumper, pregătirea unui flashloader în RAM, apoi rescrierea blocului de configurare a memoriei flash, a SBL-ului și a firmware-ului. Secvența manuală:
Deconectați camera, puneți un jumper între pinii SBL și 3.3V și reconectați. Cipul se enumeră în modul SDP ROM (
0x1FC9:0x0135).Pregătiți și porniți flashloader-ul în RAM:
sdphost -u 0x1FC9,0x0135 -- write-file 0x20001C00 sdphost_flash_loader.bin sdphost -u 0x1FC9,0x0135 -- jump-address 0x20001C00
Camera răspunde acum ca flashloader (
0x15A2:0x0073). Configurați memoria flash externă, scrieți blocul de configurare a memoriei flash, apoi scrieți SBL-ul: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
Scrieți firmware-ul și setați fuzibilul sursei de boot astfel încât cipul să pornească noul SBL din memoria flash externă:
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
Scoateți jumperul și reporniți camera de la alimentare.
Atenționare
efuse-program-once 0x06 00000010 este o scriere de fuzibil unică și ireversibilă care setează dispozitivul să pornească din memoria flash externă. Acesta este un alt motiv pentru a lăsa OpenMV IDE să efectueze recuperarea bootloader-ului RT1062, în loc să rulați secvența manual.
14.1.1.5.4. OpenMV AE3¶
Bootloader-ul securizat al AE3 nu este restaurat prin USB DFU. Acesta este rescris în MRAM-ul cipului cu SE Tools de la Alif Semiconductor (incluse în OpenMV IDE) printr-o conexiune serială ISP. Aceasta este o procedură interactivă, destinată exclusiv recuperării – nu o metodă obișnuită de scriere – și este predispusă la erori dacă se face manual; din tot ce este pe această pagină, este cea pe care ar trebui să o lăsați pe seama OpenMV IDE.
Conexiune. SE Tools comunică cu AE3 prin portul serial ISP al adaptorului său de depanare – o interfață FTDI 0403:6015 sau CH340 1A86:55D3, împreună cu un J-Link. Recuperarea necesită punerea dispozitivului în modul de recuperare: activați comutatorul de recuperare de pe placă.
SE Tools. OpenMV IDE include aceste executabile Alif. Ele partajează două fișiere de configurare – isp_config_data.cfg și global-cfg.db – create de maintenance la prima conectare:
Unealtă |
Scop |
|---|---|
|
Interoghează Secure Enclave ( |
|
Actualizează pachetul de sistem Secure Enclave atunci când este mai vechi decât versiunea cerută de firmware. |
|
Generează imaginea cuprinsului (TOC) (utilizată pentru o scriere doar a aplicației). |
|
Scrie imaginea/imaginile în MRAM – pasul care restaurează bootloader-ul. |
Procedură:
Conectați-vă la AE3 cu
maintenance; acesta solicită portul serial și tipul dispozitivului, creândisp_config_data.cfgșiglobal-cfg.dbpentru celelalte unelte.Dacă pachetul de sistem Secure Enclave este învechit,
updateSystemPackageîl actualizează; reporniți de la alimentare când vi se cere.app-write-mram -i "bootloader.bin 0x80000000 firmware_pad.toc 0x8057E000"scrie bootloader-ul și TOC-ul în MRAM.AE3 se re-enumeră ca dispozitivul DFU
37C5:96E3. Rulați scrierea normală a celor patru imagini din OpenMV AE3: dfu-util pentru a încărca aplicația.Reporniți camera de la alimentare și aduceți comutatorul de recuperare înapoi în poziția oprit.
Notă
OpenMV IDE gestionează mult mai mult decât acest scenariu ideal – un firmware Secure Enclave corupt, un bootloader defect și celelalte stări de eroare necesită fiecare propriii pași de recuperare, iar multe lucruri pot merge prost pe parcurs. Dacă pașii manuali de mai sus nu readuc camera la viață, folosiți OpenMV IDE pentru a o recupera.