v1.3.0

v1.3.0 riscrive il livello di comunicazione con la camera attorno a un protocollo strutturato di comando/risposta e aggiunge l’aggiornamento automatico in-IDE sia per l’IDE sia per le sue risorse incluse. È basato su Qt Creator 4.0.2 e include il firmware della camera OpenMV 2.0.0. Su macOS e Linux, la programmazione del firmware via DFU ora richiede un’installazione una tantum di Python più libusb e pyusb; vedere Modifiche incompatibili.

In evidenza

  • Livello di comunicazione riscritto. Il codice di debug seriale/USB è stato ricostruito attorno a un protocollo strutturato di comando/risposta con lunghezze di risposta per comando e ritardi di attesa di inizio/fine, per operazioni di connessione, esecuzione di script, frame buffer e bootloader più affidabili.

  • Aggiornamento automatico in-IDE. L’IDE ora verifica su openmv.io la presenza di una versione più recente e offre un pulsante Download, e separatamente scarica e installa pacchetti di risorse aggiornati (esempi, firmware, documentazione) richiedendo poi il riavvio.

  • Aggiornamento del firmware con un clic. La versione del firmware nella barra di stato è ora un pulsante cliccabile che confronta la camera connessa con il firmware incluso e offre un aggiornamento con un clic quando è disponibile una versione più recente.

  • Programmazione del firmware via DFU su tutte le piattaforme. Il firmware può ora essere programmato via DFU su Windows, macOS, Linux x86 e Linux x86_64, e il selettore del firmware accetta file .dfu oltre ai .bin.

  • Fallback DFU automatico. Quando il bootloader seriale non è raggiungibile durante un aggiornamento del firmware, l’IDE ora offre di aggiornare tramite il bootloader DFU della camera, guidandoti nell’aggiunta di un ponticello BOOT/RST.

Nuove funzionalità

  • Aggiornamento in-IDE. Verifica su openmv.io la presenza di una versione più recente dell’IDE e offre un pulsante Download che apre openmv.io/download, e scarica, estrae e installa i pacchetti di risorse openmv-ide-resources-X.Y.Z.zip direttamente nell’IDE prima di richiedere il riavvio (8a1f92bb1, 194acd828, b0be97e3e).

  • Pulsante cliccabile della versione del firmware. L’etichetta della versione nella barra di stato è diventata un QToolButton collegato a un flusso updateCam() che legge il firmware/firmware.txt incluso, lo confronta con la camera connessa e offre un Firmware Update con cancellazione opzionale del filesystem interno quando è più recente (b2ac8defe).

  • Supporto ai file DFU. La finestra di dialogo di programmazione bootloader/firmware ora accetta file .dfu oltre ai .bin e forza una cancellazione completa del filesystem interno quando si programma un .dfu. Il filtro del selettore del firmware è stato ampliato a Firmware Binary (*.bin *.dfu) e il flusso di cancellazione forzata .dfu introdotto in 4ad2be5f9, con la casella di cancellazione sempre selezionata ma disabilitata che si attiva/disattiva automaticamente in base all’estensione del file scelto aggiunta in b2ac8defe (4ad2be5f9, b2ac8defe).

  • Fallback DFU automatico in caso di errore del bootloader. Quando un aggiornamento del firmware .bin non riesce ad avviare il bootloader seriale, l’IDE ora segnala Unable to connect to the bootloader! e poi offre di aggiornare usando invece il bootloader DFU della camera, avvertendo che il DFU cancella il file system della flash interna e guidandoti nell’aggiunta di un ponticello BOOT/RST e nella riconnessione prima di eseguire DfuSeCommand.exe (Windows) (4ad2be5f9).

  • Esempio HoG. Aggiunto un esempio di visualizzazione dell’istogramma dei gradienti orientati (Histogram of Oriented Gradients) (09-Feature-Detection/hog.py) che usa img.find_hog() (b03a707f7).

Altre modifiche e miglioramenti

  • Sostituito il vecchio codice ad-hoc di baud rate/pacchetti con le classi OpenMVPluginSerialPortCommand/Result, gli opcode __USBDBG_* e __BOOTLDR_* e gli helper command()/commandResult() al posto di write()/readAll()/isOpen() (b03a707f7, 141122e21, b2ac8defe, 1d72fe4bf, b4cf2fe43, c60936d5f).

  • L’installazione del driver della porta seriale su Windows è ora silenziosa/automatica, passando gli script driver openmv.cmd/pybcdc.cmd a installer basati su dpinst invece dell’interattivo InfDefaultInstall, ed è stato aggiunto e corretto l’installer del Visual C++ Redistributable (vcr.cmd, che esegue silenziosamente vcredist_x86.exe e vcredist_x64.exe) (a5a6e0590, 754d0776d, b0be97e3e, 452a29f0d, c051c6e30, ad1b674ef, 565f1eccd).

Correzioni di bug

  • Corretto il malfunzionamento della programmazione del firmware e della comunicazione all’interno delle macchine virtuali, e allentati vari timeout dei comandi e il polling del frame buffer/tx-buffer in modo che connessione ed esecuzione siano più robuste. La finestra di dialogo di riprogrammazione ora indica che «può richiedere fino a 5 minuti» e il timeout del processo DFU è stato aumentato da 240s a 300s in 324f243f9 (c051c6e30, b0be97e3e, 1d72fe4bf, b4cf2fe43, 324f243f9, c60936d5f).

  • Corretto il confronto di disponibilità degli aggiornamenti firmware/IDE in modo che una minor o patch più recente non si attivi più erroneamente quando un campo superiore è uguale, e reso obbligatorio che la finestra di dialogo del bootloader abbia un file selezionato valido prima della programmazione (4ad2be5f9).

  • Chiusi gli handle dei file (elenco delle schede, file firmware/versione) dopo la lettura e corretto il padding dei chunk di programmazione del firmware per arrivare a FLASH_WRITE_CHUNK_SIZE, evitando handle non rilasciati e chunk finali con padding errato durante gli aggiornamenti del firmware (4ad2be5f9).

  • Corretti il menu Help di OpenMV e i pannelli di output: la voce About OpenMV Cam non entra più in conflitto con il ruolo About della piattaforma (AboutRoleApplicationSpecificRole), e i pannelli di output non intercettano più le scorciatoie Alt/Cmd + numero (a0694eac7).

  • L’apertura dei link web esterni di OpenMV (forum, download, supporto) ora mostra una finestra di errore «Failed to open» quando l’URL non può essere avviato, invece di non fare nulla in silenzio (b0be97e3e).

Supporto a piattaforme e strumenti

  • Base Qt Creator: 4.0.2.

  • Firmware della camera incluso: aggiornato a 2.0.0, con nuovi firmware.bin/openmv.bin e i nuovi firmware.dfu/bootloader.dfu/firmware.elf/bootloader.elf per OMV2 e OMV7.

  • Programmazione DFU su Windows aggiunta usando un DfuSeCommand.exe ST incluso, il pacchetto driver USB ST DfuSe (DfuSe v3.0.4.0 su Win7/Win8, v3.0.5.0 su Win8.1) e un installer di driver dfuse.cmd (4ad2be5f9).

  • Programmazione DFU su macOS e Linux passata dai binari dfu-util precompilati a un flasher pydfu.py incluso, con l’IDE che mostra i comandi di installazione di libusb/pyusb necessari. ac248c0ec ha brevemente aggiunto i binari dfu-util/dfu-prefix/dfu-suffix per Linux x86_64, ma 324f243f9 li ha poi rimossi tutti a favore di pydfu.py. Nessun binario dfu-util viene distribuito nella release finale; static.pro include la directory dei dati pydfu per tutti gli host non Windows, mentre Windows usa il flusso DfuSe incluso (ac248c0ec, 324f243f9, 7837a07da).

  • Regole udev di Linux aggiornate per usare la corrispondenza SUBSYSTEM (cam VID 1209/PID abd1 tty e STM DFU 0483/df11) in modo che i symlink del dispositivo e DFU funzionino su Linux a 32 bit, e le richieste di rete che seguono i redirect sono state protette per le versioni più vecchie di Qt (194acd828).

Modifiche incompatibili

I binari standalone dfu-util inclusi per macOS e Linux sono stati rimossi e sostituiti da un flasher Python pydfu.py. Su macOS e Linux, la programmazione del firmware via DFU ora richiede un’installazione una tantum di Python più libusb e pyusb (l’IDE mostra i comandi esatti per MacPorts/HomeBrew/apt-get). Windows continua a usare il flusso basato su DfuSe incluso. Non ci sono rotture dell’API di scripting, e la base Qt Creator 4.0.2 rimane invariata.