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.iola 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
.dfuoltre 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.iola presenza di una versione più recente dell’IDE e offre un pulsante Download che apreopenmv.io/download, e scarica, estrae e installa i pacchetti di risorseopenmv-ide-resources-X.Y.Z.zipdirettamente 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
QToolButtoncollegato a un flussoupdateCam()che legge ilfirmware/firmware.txtincluso, 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
.dfuoltre ai.bine forza una cancellazione completa del filesystem interno quando si programma un.dfu. Il filtro del selettore del firmware è stato ampliato aFirmware Binary (*.bin *.dfu)e il flusso di cancellazione forzata.dfuintrodotto in4ad2be5f9, con la casella di cancellazione sempre selezionata ma disabilitata che si attiva/disattiva automaticamente in base all’estensione del file scelto aggiunta inb2ac8defe(4ad2be5f9, b2ac8defe).Fallback DFU automatico in caso di errore del bootloader. Quando un aggiornamento del firmware
.binnon riesce ad avviare il bootloader seriale, l’IDE ora segnalaUnable 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 ponticelloBOOT/RSTe nella riconnessione prima di eseguireDfuSeCommand.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 usaimg.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 helpercommand()/commandResult()al posto diwrite()/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.cmda installer basati sudpinstinvece dell’interattivoInfDefaultInstall, ed è stato aggiunto e corretto l’installer del Visual C++ Redistributable (vcr.cmd, che esegue silenziosamentevcredist_x86.exeevcredist_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
Helpdi OpenMV e i pannelli di output: la voce About OpenMV Cam non entra più in conflitto con il ruolo About della piattaforma (AboutRole→ApplicationSpecificRole), e i pannelli di output non intercettano più le scorciatoieAlt/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.bine i nuovifirmware.dfu/bootloader.dfu/firmware.elf/bootloader.elfper OMV2 e OMV7.Programmazione DFU su Windows aggiunta usando un
DfuSeCommand.exeST 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 driverdfuse.cmd(4ad2be5f9).Programmazione DFU su macOS e Linux passata dai binari
dfu-utilprecompilati a un flasherpydfu.pyincluso, con l’IDE che mostra i comandi di installazione di libusb/pyusb necessari.ac248c0echa brevemente aggiunto i binaridfu-util/dfu-prefix/dfu-suffixper Linux x86_64, ma324f243f9li ha poi rimossi tutti a favore dipydfu.py. Nessun binariodfu-utilviene distribuito nella release finale;static.proinclude la directory dei datipydfuper 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.