14.1.1.3. Programarea firmware-ului

Odată ce ați obținut un firmware.bin (și romfs<n>.img aferent) din Construirea firmware-ului, programați-l pe cameră. OpenMV IDE este metoda recomandată; procedura din linia de comandă diferă în funcție de familia de cameră și este documentată per familie pe paginile legate la final. Bootloader-ul în sine este restaurat separat – consultați Restaurarea bootloader-ului.

14.1.1.3.2. Windows: instalarea driverelor USB

Windows nu are un driver încorporat pentru interfețele USB DFU, SDP și ISP ale camerei, astfel încât instrumentele din linia de comandă (dfu-util, instrumentele NXP SPSDK, Alif SE Tools) nu pot detecta dispozitivul până când nu i se asociază un driver WinUSB. Programul de instalare Windows al OpenMV IDE instalează toate aceste drivere, deci cea mai simplă abordare este să instalați OpenMV IDE o singură dată – după care funcționează atât IDE-ul, cât și instrumentele din linia de comandă. Acesta este motivul pentru care programarea prin interfața grafică reușește pe o mașină Windows nouă, în timp ce un dfu-util autonom nu reușește.

Dacă instalarea IDE-ului nu este o opțiune, rulați programul de instalare a driverului corespunzător din directorul share/qtcreator/drivers/ al OpenMV IDE ca administrator:

Program de instalare driver

Dispozitive USB pe care le asociază

openmv\openmv.cmd

Dispozitive OpenMV DFU și interfețele RT1062 SPSDK (0x1FC9:0x0135 SDP ROM și 0x15A2:0x0073 flashloader)

arduino\arduino.cmd

Dispozitive Arduino DFU (2341:03xx)

ftdi\ftdi.cmd

Adaptorul FTDI 0403:6015 folosit pentru recuperarea bootloader-ului AE3

DFU_Driver\STM32Bootloader.bat

Dispozitivul ST 0483:df11 system DFU folosit pentru recuperarea bootloader-ului STM32

Alternativ, asociați WinUSB la VID:PID-ul specific cu Zadig sau pnputil. Fără aceasta, programarea din linia de comandă pe Windows nu funcționează. Linux și macOS nu necesită instalarea de drivere (Linux necesită doar regulile udev).

14.1.1.3.3. Programarea prin SWD (make deploy)

Dacă o sondă de depanare este deja conectată la cameră – așa cum este pentru depanare – cel mai rapid ciclu de editare-compilare-programare ocolește USB DFU și programează cipul direct prin SWD. Pe camerele STM32:

make -j$(nproc) TARGET=<TARGET> deploy

Aceasta programează firmware-ul proaspăt compilat prin STM32_Programmer_CLI (din SDK) prin sonda conectată. Nu există intrare în bootloader, nicio re-enumerare USB și nicio schimbare de cablu: compilați, rulați deploy, iar camera repornește rulând noul cod. Acesta este fluxul de lucru recomandat în timpul dezvoltării active a firmware-ului. Folosiți DFU sau OpenMV IDE când programați fără o sondă sau când distribuiți firmware altora.

14.1.1.3.4. Intrarea în modul bootloader / DFU

Programarea necesită ca camera să fie în modul său bootloader / DFU. Există trei moduri de a intra:

  • La conectare (orice cameră). Fiecare cameră își rulează bootloader-ul pentru o scurtă fereastră de timp când pornește, înainte ca firmware-ul să pornească – conectați camera la USB și bootloader-ul ascultă pentru scurt timp.

  • Din IDE (orice cameră). Cu camera conectată, Tools -> Force enter OpenMV Cam bootloader o repornește în modul bootloader.

  • Butonul de resetare Arduino. Pe plăcile Arduino, faceți dublu clic pe butonul de resetare pentru a intra în modul bootloader.

14.1.1.3.5. Programarea din linia de comandă în funcție de familia de cameră

Paginile de mai jos arată ce face OpenMV IDE în spatele scenei pentru fiecare familie de cameră, pentru cazul în care doriți să rulați programarea singur – în scripturi, în CI sau pe o linie de producție. Pentru programarea de zi cu zi recomandăm OpenMV IDE.