14.1.1.6. Vraćanje pokretača (bootloader)#

Uobičajeni zapis ugrađenog programa nikada ne dira pokretač (bootloader), pa je prekinuto ažuriranje ugrađenog programa gotovo uvijek moguće oporaviti: ponovno pokrenite istu naredbu za zapisivanje iz Programiranje firmvera (dfu-util -w čeka na uređaj) ili ponovno pokrenite Load Custom Firmware dok je kamera još uvijek u svom pokretaču. Ova stranica pokriva rjeđi slučaj u kojem je sam pokretač oštećen i kamera se pri ponovnom pokretanju više ne prijavljuje kao DFU uređaj.

Pokretač (bootloader) živi u zasebnoj regiji flash memorije, odvojeno od ugrađenog programa i datotečnog sustava, a svaka kamera s OpenMV oznakom ima hardverski put natrag, pa je kameru teško učiniti trajno neoporavljivom. Arduino pločice jedina su iznimka – njihovi su pokretači fiksni i korisnik ih ne može vratiti.

OpenMV IDE automatizira sve ove postupke oporavka, vodeći vas kroz hardverske korake (premosnici, prekidači, gumbi) usput. Odjeljci u nastavku dokumentiraju što radi za svaku obitelj kamera, za slučaj da oporavak želite izvesti sami.

14.1.1.6.1. STM32 kamere (BOOT–RST premosnik)#

Za STM32 OpenMV kamere (M4, M7, H7, H7 Plus, Pure Thermal):

  1. Odspojite kameru.

  2. Spojite premosni vod između pinova BOOT i RST.

  3. Ponovno spojite. Kamera se sada prijavljuje kao ST sistemski DFU uređaj (0483:df11), neovisno o oštećenom ugrađenom programu.

  4. Ponovno zapišite samo pokretač – OpenMV IDE Load Custom Firmware s bootloader.bin, ili:

    dfu-util -w -d ,0483:df11 -a 0 -s 0x08000000 -D bootloader.bin
    
  5. Uklonite premosnik i ponovno spojite.

  6. Normalno zapišite ugrađeni program (vidi Programiranje firmvera).

14.1.1.6.2. OpenMV Cam N6 (BOOT–VCC premosnik)#

  1. Odspojite kameru.

  2. Spojite premosni vod između pinova BOOT i VCC.

  3. Ponovno spojite. Kamera se sada prijavljuje kao ST sistemski DFU uređaj (0483:df11), neovisno o oštećenom pokretaču.

  4. Ponovno zapišite pomoću STM32CubeProgrammer (uključen u OpenMV SDK), koristeći deskriptor rasporeda flash memorije isporučen uz bootloader.bin – on ponovno zapisuje pokretač prve faze, učitavač vanjske flash memorije i pokretač:

    STM32_Programmer_CLI -c port=USB1 -d OPENMV_N6/FlashLayout.tsv
    
  5. Uklonite premosnik i ponovno spojite.

  6. Normalno zapišite ugrađeni program (vidi Programiranje firmvera).

14.1.1.6.3. OpenMV Cam RT1062#

Ponovno stvaranje sigurnog pokretača RT1062 zahtijeva ulazak u ROM serijski preuzimni (SDP) način čipa pomoću premosnika, pripremu RAM flash učitavača, a zatim ponovno zapisivanje konfiguracijskog bloka flash memorije, SBL-a i ugrađenog programa. Ručni slijed:

  1. Odspojite kameru, premostite pinove SBL i 3.3V, te ponovno spojite. Čip se prijavljuje u SDP ROM načinu (0x1FC9:0x0135).

  2. Pripremite i pokrenite RAM flash učitavač:

    sdphost -u 0x1FC9,0x0135 -- write-file 0x20001C00 sdphost_flash_loader.bin
    sdphost -u 0x1FC9,0x0135 -- jump-address 0x20001C00
    
  3. Kamera se sada odaziva kao flash učitavač (0x15A2:0x0073). Konfigurirajte vanjsku flash memoriju, zapišite konfiguracijski blok flash memorije, a zatim zapišite 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. Zapišite ugrađeni program i postavite osigurač izvora pokretanja kako bi čip pokrenuo novi SBL iz vanjske flash memorije:

    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. Uklonite premosnik i isključite te ponovno uključite kameru.

Upozorenje

efuse-program-once 0x06 00000010 je jednokratno, nepovratno zapisivanje osigurača koje uređaj postavlja na pokretanje iz vanjske flash memorije. Ovo je još jedan razlog da oporavak pokretača RT1062 prepustite OpenMV IDE-u umjesto da slijed izvodite ručno.

14.1.1.6.4. OpenMV AE3#

Sigurni pokretač AE3 ne vraća se preko USB DFU. Ponovno se zapisuje u MRAM čipa pomoću Alif Semiconductor SE Tools (priloženo uz OpenMV IDE) preko serijske ISP veze. Ovo je interaktivni postupak namijenjen samo oporavku – nije rutinska metoda zapisivanja – i sklon je pogreškama pri ručnom izvođenju; od svega na ovoj stranici, ovo je postupak koji treba prepustiti OpenMV IDE-u.

Veza. SE Tools komuniciraju s AE3 preko serijskog ISP priključka njegovog adaptera za otklanjanje pogrešaka – FTDI 0403:6015 ili CH340 1A86:55D3 sučelje, zajedno s J-Link. Oporavak zahtijeva postavljanje uređaja u način oporavka: omogućite ugrađeni prekidač za oporavak.

SE Tools. OpenMV IDE uključuje ove Alif izvršne datoteke. Dijele dvije konfiguracijske datoteke – isp_config_data.cfg i global-cfg.db – koje maintenance stvara pri prvom spajanju:

Alat

Svrha

maintenance

Upit Secure Enclaveu (maintenance -opt sesbanner čita njegovu verziju) i postavljanje uređaja u način oporavka.

updateSystemPackage

Ažuriranje sistemskog paketa Secure Enclavea kada je stariji od verzije koju zahtijeva ugrađeni program.

app-gen-toc

Generiranje slike sadržaja (TOC) (koristi se za zapisivanje samo aplikacije).

app-write-mram

Zapisivanje slike (slika) u MRAM – korak koji vraća pokretač.

Postupak:

  1. Spojite se na AE3 pomoću maintenance; traži serijski priključak i tip uređaja, stvarajući isp_config_data.cfg i global-cfg.db za ostale alate.

  2. Ako je sistemski paket Secure Enclavea zastario, updateSystemPackage ga ažurira; isključite i ponovno uključite kada vas se zatraži.

  3. app-write-mram -i "bootloader.bin 0x80000000 firmware_pad.toc 0x8057E000" zapisuje pokretač i TOC u MRAM.

  4. AE3 se ponovno prijavljuje kao DFU uređaj 37C5:96E3. Pokrenite normalno zapisivanje četiriju slika iz OpenMV AE3: dfu-util za učitavanje aplikacije.

  5. Isključite i ponovno uključite kameru te ponovno isključite prekidač za oporavak.

Napomena

OpenMV IDE obrađuje mnogo više od ovog uspješnog puta – oštećeni ugrađeni program Secure Enclavea, neispravan pokretač i druga stanja kvarova zahtijevaju svaki svoje korake oporavka, a usput puno toga može poći po zlu. Ako ručni koraci iznad ne vrate kameru, upotrijebite OpenMV IDE za njezin oporavak.