v1.3.0

v1.3.0 rescrie stratul de comunicare cu camera în jurul unui protocol structurat de comandă/răspuns și adaugă actualizarea automată în IDE atât pentru IDE, cât și pentru resursele incluse. Este construit pe Qt Creator 4.0.2 și include firmware-ul camerei OpenMV 2.0.0. Pe macOS și Linux, scrierea firmware-ului prin DFU necesită acum o instalare unică a Python plus libusb și pyusb; consultați Modificări incompatibile.

Puncte importante

  • Strat de comunicare rescris. Codul de depanare serial/USB a fost reconstruit în jurul unui protocol structurat de comandă/răspuns cu lungimi de răspuns per comandă și întârzieri de așteptare la început/sfârșit, pentru operațiuni mai fiabile de conectare, rulare de script, frame buffer și bootloader.

  • Actualizare automată în IDE. IDE-ul verifică acum openmv.io pentru o versiune mai nouă și oferă un buton Download, iar separat descarcă și instalează pachete de resurse actualizate (exemple, firmware, documentație), apoi solicită repornirea.

  • Actualizare firmware printr-un singur clic. Versiunea firmware-ului din bara de stare este acum un buton pe care se poate face clic, ce compară camera conectată cu firmware-ul inclus și oferă o actualizare printr-un singur clic atunci când este disponibilă o versiune mai nouă.

  • Scriere firmware prin DFU pe fiecare platformă. Firmware-ul poate fi scris acum prin DFU pe Windows, macOS, Linux x86 și Linux x86_64, iar selectorul de firmware acceptă fișiere .dfu pe lângă .bin.

  • Revenire automată la DFU. Când bootloader-ul serial nu poate fi accesat în timpul unei actualizări de firmware, IDE-ul oferă acum posibilitatea de a face upgrade prin bootloader-ul DFU al camerei, ghidându-vă prin adăugarea unui jumper BOOT/RST.

Funcții noi

  • Actualizator în IDE. Verifică openmv.io pentru o versiune mai nouă a IDE-ului și oferă un buton Download care deschide openmv.io/download, și descarcă, dezarhivează și instalează pachetele de resurse openmv-ide-resources-X.Y.Z.zip direct în IDE înainte de a solicita repornirea (8a1f92bb1, 194acd828, b0be97e3e).

  • Buton de versiune firmware pe care se poate face clic. Eticheta de versiune din bara de stare a devenit un QToolButton conectat la un flux updateCam() care citește fișierul inclus firmware/firmware.txt, îl compară cu camera conectată și oferă o Firmware Update cu ștergere opțională a sistemului de fișiere intern atunci când există o versiune mai nouă (b2ac8defe).

  • Suport pentru fișiere DFU. Dialogul de scriere bootloader/firmware acceptă acum fișiere .dfu pe lângă .bin și forțează o ștergere completă a sistemului de fișiere intern la scrierea unui .dfu. Filtrul selectorului de firmware a fost extins la Firmware Binary (*.bin *.dfu), iar fluxul de ștergere forțată pentru .dfu a fost introdus în 4ad2be5f9, împreună cu caseta de bifare a ștergerii, dezactivată și mereu bifată, care se comută automat în funcție de extensia fișierului ales, adăugată în b2ac8defe (4ad2be5f9, b2ac8defe).

  • Revenire automată la DFU în caz de eșec al bootloader-ului. Când o actualizare de firmware .bin nu poate porni bootloader-ul serial, IDE-ul raportează acum Unable to connect to the bootloader! și apoi oferă posibilitatea de a face upgrade folosind bootloader-ul DFU al camerei, avertizând că DFU șterge sistemul de fișiere din memoria flash internă și ghidându-vă prin adăugarea unui fir jumper BOOT/RST și reconectarea înainte de a rula DfuSeCommand.exe (Windows) (4ad2be5f9).

  • Exemplu HoG. A fost adăugat un exemplu de vizualizare Histogram of Oriented Gradients (09-Feature-Detection/hog.py) folosind img.find_hog() (b03a707f7).

Alte modificări și îmbunătățiri

  • A înlocuit vechiul cod ad-hoc de rată baud/pachete cu clasele OpenMVPluginSerialPortCommand/Result, codurile de operație __USBDBG_* și __BOOTLDR_* și funcțiile ajutătoare command()/commandResult() în locul write()/readAll()/isOpen() (b03a707f7, 141122e21, b2ac8defe, 1d72fe4bf, b4cf2fe43, c60936d5f).

  • Instalarea driverului de port serial pe Windows este acum silențioasă/nesupravegheată, trecând scripturile de driver openmv.cmd/pybcdc.cmd la instalatoare bazate pe dpinst în loc de InfDefaultInstall interactiv, iar instalatorul Visual C++ Redistributable (vcr.cmd, care rulează vcredist_x86.exe și vcredist_x64.exe în mod silențios) a fost adăugat și corectat (a5a6e0590, 754d0776d, b0be97e3e, 452a29f0d, c051c6e30, ad1b674ef, 565f1eccd).

Corectări de erori

  • A fost remediată întreruperea scrierii firmware-ului și a comunicării în interiorul mașinilor virtuale și au fost relaxate diverse timeout-uri de comandă și interogarea frame buffer/tx-buffer, astfel încât conectarea și rularea să fie mai robuste. Dialogul de reprogramare menționează acum că „poate dura până la 5 minute”, iar timeout-ul procesului DFU a fost ridicat de la 240s la 300s în 324f243f9 (c051c6e30, b0be97e3e, 1d72fe4bf, b4cf2fe43, 324f243f9, c60936d5f).

  • A fost corectată comparația de disponibilitate a actualizării firmware/IDE astfel încât o versiune minoră sau patch mai nouă să nu mai declanșeze fals atunci când un câmp superior este egal, și s-a impus ca dialogul bootloader-ului să aibă un fișier valid selectat înainte de scriere (4ad2be5f9).

  • Au fost închise descriptorii de fișiere (lista de plăci, fișierele de firmware/versiune) după citire și a fost corectată completarea (padding) blocurilor de scriere a firmware-ului pentru a completa până la FLASH_WRITE_CHUNK_SIZE, prevenind scurgerile de descriptori și blocurile finale completate greșit în timpul actualizărilor de firmware (4ad2be5f9).

  • Au fost remediate meniul OpenMV Help și panourile de ieșire: intrarea About OpenMV Cam nu mai intră în conflict cu rolul About al platformei (AboutRoleApplicationSpecificRole), iar panourile de ieșire nu mai captează scurtăturile Alt/Cmd + cifră (a0694eac7).

  • Deschiderea linkurilor web externe OpenMV (forumuri, descărcare, suport) raportează acum un dialog de eroare „Failed to open” atunci când URL-ul nu poate fi lansat, în loc să nu facă nimic în mod silențios (b0be97e3e).

Suport pentru platforme și instrumente

  • Baza Qt Creator: 4.0.2.

  • Firmware-ul de cameră inclus: actualizat la 2.0.0, cu noile firmware.bin/openmv.bin și noile fișiere adăugate firmware.dfu/bootloader.dfu/firmware.elf/bootloader.elf pentru OMV2 și OMV7.

  • Scrierea firmware-ului prin DFU pe Windows a fost adăugată folosind un DfuSeCommand.exe ST inclus, pachetul de driver USB ST DfuSe (DfuSe v3.0.4.0 pe Win7/Win8, v3.0.5.0 pe Win8.1) și un instalator de driver dfuse.cmd (4ad2be5f9).

  • Scrierea firmware-ului prin DFU pe macOS și Linux a trecut de la binarele dfu-util precompilate la un flasher pydfu.py inclus, IDE-ul afișând comenzile de instalare libusb/pyusb necesare. ac248c0ec a adăugat pe scurt binarele Linux x86_64 dfu-util/dfu-prefix/dfu-suffix, dar 324f243f9 le-a eliminat apoi pe toate în favoarea pydfu.py. Niciun binar dfu-util nu este livrat în versiunea finală; static.pro include directorul de date pydfu pentru toate gazdele non-Windows, în timp ce Windows folosește fluxul DfuSe inclus (ac248c0ec, 324f243f9, 7837a07da).

  • Regulile udev pentru Linux au fost actualizate pentru a folosi potrivirea SUBSYSTEM (cam VID 1209/PID abd1 tty și STM DFU 0483/df11) astfel încât legăturile simbolice pentru dispozitiv și DFU să funcționeze pe Linux pe 32 de biți, iar cererile de rețea care urmăresc redirecționările au fost protejate pentru versiunile mai vechi de Qt (194acd828).

Modificări incompatibile

Binarele autonome dfu-util incluse pentru macOS și Linux au fost eliminate și înlocuite cu un flasher Python pydfu.py. Pe macOS și Linux, scrierea firmware-ului prin DFU necesită acum o instalare unică a Python plus libusb și pyusb (IDE-ul afișează comenzile exacte MacPorts/HomeBrew/apt-get). Windows continuă să folosească fluxul bazat pe DfuSe inclus. Nu există incompatibilități la nivelul API-ului de scripting, iar baza Qt Creator 4.0.2 rămâne neschimbată.