14.1.1.5. De bootloader herstellen¶
Een normale firmware-flash raakt nooit de bootloader aan, dus een onderbroken firmware-update is bijna altijd herstelbaar: voer hetzelfde flash-commando opnieuw uit vanuit De firmware flashen (dfu-util -w wacht op het apparaat) of voer Load Custom Firmware opnieuw uit terwijl de camera nog in zijn bootloader staat. Deze pagina behandelt het zeldzamere geval waarin de bootloader zelf beschadigd is en de camera bij een reset niet langer als een DFU-apparaat wordt herkend.
De bootloader bevindt zich in een aparte flashregio, los van de firmware en het bestandssysteem, en elke camera met OpenMV-merk heeft een hardwarematige terugweg, dus het is moeilijk om een camera permanent onherstelbaar te maken. De Arduino-borden vormen de enige uitzondering – hun bootloaders liggen vast en zijn niet door de gebruiker te herstellen.
OpenMV IDE automatiseert al deze herstelprocedures en leidt je onderweg door de hardwarestappen (jumpers, schakelaars, knoppen). De onderstaande secties documenteren wat het doet voor elke camerafamilie, voor het geval je het herstel zelf wilt uitvoeren.
14.1.1.5.1. STM32-camera’s (BOOT–RST-jumper)¶
Voor de STM32 OpenMV-camera’s (M4, M7, H7, H7 Plus, Pure Thermal):
Koppel de camera los.
Plaats een jumperdraad tussen de BOOT- en RST-pinnen.
Sluit opnieuw aan. De camera wordt nu herkend als het ST system DFU-apparaat (
0483:df11), onafhankelijk van de beschadigde firmware.Flash alleen de bootloader opnieuw – OpenMV IDE Load Custom Firmware met
bootloader.bin, of:dfu-util -w -d ,0483:df11 -a 0 -s 0x08000000 -D bootloader.binVerwijder de jumper en sluit opnieuw aan.
Flash de firmware op de normale manier (zie De firmware flashen).
14.1.1.5.2. OpenMV Cam N6 (BOOT–VCC-jumper)¶
Koppel de camera los.
Plaats een jumperdraad tussen de BOOT- en VCC-pinnen.
Sluit opnieuw aan. De camera wordt nu herkend als het ST system DFU-apparaat (
0483:df11), onafhankelijk van de beschadigde bootloader.Flash opnieuw met STM32CubeProgrammer (meegeleverd in de OpenMV SDK), met behulp van de flash-layoutdescriptor die naast
bootloader.binwordt geleverd – het herschrijft de first-stage bootloader, de external-flash loader en de bootloader:STM32_Programmer_CLI -c port=USB1 -d OPENMV_N6/FlashLayout.tsvVerwijder de jumper en sluit opnieuw aan.
Flash de firmware op de normale manier (zie De firmware flashen).
14.1.1.5.3. OpenMV Cam RT1062¶
Het opnieuw aanmaken van de RT1062 secure bootloader vereist dat je met een jumper de ROM serial-download (SDP) modus van de chip activeert, een RAM-flashloader klaarzet en vervolgens het flash-configuratieblok, de SBL en de firmware herschrijft. De handmatige volgorde:
Koppel de camera los, jumper de SBL- en 3.3V-pinnen en sluit opnieuw aan. De chip wordt herkend in SDP ROM-modus (
0x1FC9:0x0135).Zet de RAM-flashloader klaar en start hem:
sdphost -u 0x1FC9,0x0135 -- write-file 0x20001C00 sdphost_flash_loader.bin sdphost -u 0x1FC9,0x0135 -- jump-address 0x20001C00
De camera antwoordt nu als de flashloader (
0x15A2:0x0073). Configureer het externe flashgeheugen, schrijf het flash-configuratieblok en schrijf vervolgens de 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
Schrijf de firmware en stel de boot-source-fuse in zodat de chip de nieuwe SBL vanuit het externe flashgeheugen opstart:
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
Verwijder de jumper en schakel de camera uit en weer in.
Waarschuwing
efuse-program-once 0x06 00000010 is een eenmalige, onomkeerbare fuse-schrijfactie die het apparaat instelt om vanuit het externe flashgeheugen op te starten. Dit is nog een reden om OpenMV IDE het RT1062-bootloaderherstel te laten uitvoeren in plaats van de volgorde met de hand uit te voeren.
14.1.1.5.4. OpenMV AE3¶
De secure bootloader van de AE3 wordt niet via USB DFU hersteld. Hij wordt opnieuw in de MRAM van de chip geschreven met Alif Semiconductor’s SE Tools (meegeleverd met OpenMV IDE) via een seriële ISP-verbinding. Dit is een interactieve, uitsluitend voor herstel bedoelde procedure – geen routinematige flash-methode – en hij is foutgevoelig wanneer je hem met de hand uitvoert; van alles op deze pagina is dit datgene wat je het beste aan OpenMV IDE kunt overlaten.
Verbinding. De SE Tools communiceren met de AE3 via de seriële ISP-poort van zijn debug-adapter – een FTDI 0403:6015- of een CH340 1A86:55D3-interface, samen met een J-Link. Voor herstel moet het apparaat in de recovery-modus worden gezet: schakel de recovery-schakelaar op het bord in.
SE Tools. OpenMV IDE bevat deze Alif-executables. Ze delen twee configuratiebestanden – isp_config_data.cfg en global-cfg.db – die bij de eerste verbinding door maintenance worden aangemaakt:
Tool |
Doel |
|---|---|
|
Bevraagt de Secure Enclave ( |
|
Werkt het systeempakket van de Secure Enclave bij wanneer het ouder is dan de versie die de firmware vereist. |
|
Genereert de table-of-contents (TOC) image (gebruikt voor een schrijfactie met alleen de applicatie). |
|
Schrijft image(s) naar MRAM – de stap die de bootloader herstelt. |
Procedure:
Maak verbinding met de AE3 via
maintenance; deze vraagt om de seriële poort en het apparaattype, en maaktisp_config_data.cfgenglobal-cfg.dbaan voor de andere tools.Als het systeempakket van de Secure Enclave verouderd is, werkt
updateSystemPackagehet bij; schakel het apparaat uit en weer in wanneer daarom wordt gevraagd.app-write-mram -i "bootloader.bin 0x80000000 firmware_pad.toc 0x8057E000"schrijft de bootloader en de TOC naar MRAM.De AE3 wordt opnieuw herkend als het
37C5:96E3DFU-apparaat. Voer de normale flash met vier images uit vanuit OpenMV AE3: dfu-util om de applicatie te laden.Schakel de camera uit en weer in en zet de recovery-schakelaar weer uit.
Notitie
OpenMV IDE handelt veel meer af dan dit ideale scenario – een beschadigde Secure Enclave-firmware, een slechte bootloader en de andere foutsituaties vereisen elk hun eigen herstelstappen, en er kan onderweg veel misgaan. Als de bovenstaande handmatige stappen de camera niet weer aan de praat krijgen, gebruik dan OpenMV IDE om hem te herstellen.