v4.0.1¶
v4.0.1 è una modernizzazione da zero che ribasa OpenMV IDE dalla sua duratura base Qt Creator 4.0.2 su Qt Creator 10.0.1. L’intero stack di plugin OpenMV (visualizzatore del frame buffer, seriale/protocollo, terminale, editor di istogramma, soglia e keypoint, strumenti video e wrapper per il flashing del firmware) viene riapplicato sulla nuova base, insieme a una raffinata coppia di temi Flat Light/Flat Dark, all’evidenziazione della sintassi Python consapevole di OpenMV, a una finestra di dialogo unificata per il caricamento del firmware e a un ampio supporto al rilevamento dei dispositivi su ARM64 Linux e macOS. Il cambio di base Qt Creator è una grande modernizzazione interna ma non rompe i progetti degli utenti; alcuni comportamenti predefiniti e definizioni delle schede sono però cambiati (vedere Modifiche incompatibili).
Punti salienti¶
Ribasamento su Qt Creator 10.0.1. L’IDE passa da Qt Creator 4.0.2 a 10.0.1: l’upstream Qt Creator viene ridotto agli elementi essenziali per la build (98b95fd3b) e l’intero plugin OpenMV viene riaggiunto sulla nuova base (0e8047372).
Temi Flat Light e Flat Dark. Una raffinata coppia di temi chiaro/scuro viene fornita con stili di evidenziazione della sintassi dell’editor personalizzati e coerenti; il selettore di tema è di nuovo esposto nelle impostazioni Generali ma limitato a questi due soli temi, e il tema predefinito è ora
flat-dark(21348924b, 13c3849e8).Terminale seriale Raw-REPL. Il terminale ora esegue, interrompe, ricarica e incolla gli script tramite una vera macchina a stati raw-REPL di MicroPython (CTRL-A/CTRL-D), gestendo in modo affidabile script più grandi (a7241079c).
Editing Python consapevole di OpenMV. Moduli, classi, funzioni, metodi e argomenti di OpenMV vengono evidenziati nella sintassi a partire dalla documentazione inclusa, con un completamento automatico più intelligente e un auto-indentatore consapevole di parentesi e due punti (801eab8a8, 8e9f967e7, 9fdff9c6d).
Finestra di dialogo unificata per il caricamento del firmware. Il flashing ora mostra una singola finestra di dialogo contestuale (Cancellazione disco / Flashing del firmware / Flashing del bootloader) con una barra di avanzamento e un registro Mostra/Nascondi dettagli comprimibile che ricorda il proprio stato (5b51356f8).
Supporto per OpenMV Cam RT1062. Firmware, DFU/flash-loader, enumerazione SDP/blhost e un passaggio di programmazione con burn di eFuse vengono aggiunti per la nuova scheda di classe i.MX RT1060 (a6595f5f7), a cui viene poi assegnata una distinta variante di scheda con Secure Bootloader (SBL) (d2b11c6c8).
Nuove funzionalità¶
Flag di automazione. I flag
-auto_update(release/development/ percorso),-auto_erasee-auto_runconsentono all’IDE di caricare/cancellare il firmware e poi eseguire lo script aperto alla connessione; dopo una riconnessione del bootloader l’IDE attende fino a 10s che la camera venga rienumerata prima di continuare (b54affe79, f4e03d978).Flag ``-disable_stop`` e un’opzione di menu
stop on connect/disconnectconsentono agli utenti di disabilitare l’arresto dello script alla connessione o disconnessione (02724ca7d).L’opzione Stop Script on Connect/Disconnect (attiva per impostazione predefinita) disaccoppia la connessione/disconnessione dall’arresto dello script in esecuzione; Auto Reconnect ora è disattivato per impostazione predefinita (a0e78057f).
Richiesta del tipo di scheda. Quando una scheda connessa riporta un’architettura non presente nella mappatura del firmware, l’IDE ora chiede all’utente di scegliere il tipo di scheda (ricordando l’ultima scelta) invece di interrompersi con un errore «Unsupported board architecture!» (b7165eb3d).
L’evidenziazione della sintassi Python di OpenMV colora moduli, classi, dati, funzioni, metodi e argomenti OpenMV noti usando elenchi di parole chiave popolati dalla documentazione inclusa (801eab8a8, b4d481bf5).
~300 definizioni di linguaggio KSyntaxHighlighting sono fornite con l’editor, così i file sorgente in molti linguaggi vengono evidenziati immediatamente (39674a4dc).
Gli script di esempio OpenMV inclusi (Hello World, snapshot, registrazione video, flusso ottico, event camera, global shutter, FLIR Lepton e altri) sono ora inclusi nel repository e distribuiti con l’IDE (938ac6bbe).
L’editor binario/esadecimale è abilitato così gli utenti possono aprire e ispezionare file binari, con la sua barra degli strumenti ridotta per adattarsi all’interfaccia di OpenMV (675bda966).
Confronto di documenti in memoria. I nuovi file e gli esempi in sola lettura ora ricevono un file temporaneo di supporto così i documenti non salvati possono essere confrontati, e la finestra di dialogo di confronto con file esterni ricorda l’ultima cartella usata (5281e5f6c, 2934d5216).
Il plugin editor a schede è stato riaggiunto, dotando l’IDE di una barra dei documenti a schede; il sorgente del plugin minimap è stato riaggiunto ma lasciato disabilitato nella build per questa release (0e8047372).
Il flashing di fallback DfuSe e pydfu è stato ripristinato per i dispositivi DFU che non possono essere selezionati per numero di serie, con gestione automatica della cancellazione senza finestra di dialogo durante la connessione (e42a5be7d).
Burn di eFuse i.MX RT. La programmazione del firmware ora effettua il burn di un eFuse (
efuse-program-once) per le schede di classe RT1060 (8053bb578, a6595f5f7).La pagina della procedura guidata Linux Root Installs consente all’utente di scegliere se accettare o rifiutare l’installazione elevata della libreria apt e l’installazione delle regole udev invece di eseguirle sempre (6bac80984).
Altre modifiche e miglioramenti¶
Scansione delle porte seriali in background. L’enumerazione delle porte è stata spostata fuori dal thread dell’interfaccia in un worker dedicato
ScanSerialPortsThreadcosì l’IDE resta reattivo durante la scansione (7be4dab26).Rilevamento dei dispositivi più ampio. La scansione delle porte è stata rifattorizzata in un helper riutilizzabile
filterPorts()che incorpora i dispositivi picotool e i.MX DFU e riclassifica come dispositivi DFU le porte seriali del bootloader Arduino note (PID vecchi e di loader NRF/RPI) (25a5d30fd).Più fallback per il terminale. Quando si avviano gli strumenti di riproduzione video inclusi (Play Video File / Play RTSP Stream) su Linux, l’IDE ora ricorre a
lxterminal,konsoleexfce4-terminaloltre axtermegnome-terminal(df54007e0).Segnalazione delle chiavi di scheda. La registrazione della camera ora analizza una risposta «Remaining N» per indicare all’utente quante chiavi di scheda rimangono, e aggiunge un distinto messaggio di errore «Invalid Board Key for Board Type» (5759e73eb).
Download ospitati su GitHub. I controlli di versione e i download delle risorse ora usano
raw.githubusercontent.com/openmv/openmv-ide-versione le releaseopenmv/openmv-ideinvece diupload.openmv.io(994109c28).HTTPS ovunque. Tutte le richieste web OpenMV (controlli di versione, registrazione dell’ID SWD, download di risorse e firmware) ora usano
https://(54347cad0).Automazione della configurazione su Linux. L’installer rileva le librerie e le regole udev mancanti e, se necessario, genera un
setup.sheseguibile con gli esatti comandi di installazione apt-get/pip e delle regole udev (e unREADMEche indica all’utente di eseguirlo) (c6dc705e6).Tolleranza per schede lente. Il terminale seriale aumenta l’attesa per lettura da 1ms a 10ms ed emette un riscontro «OK» quando uno script termina (c935e4489).
Avanzamento del flashing più fluido. Le barre di avanzamento del caricatore del firmware ora passano da indeterminate a 0-100% immediatamente anziché dopo il primo scatto percentuale, su dfu-util, bossac, picotool e flashing i.MX (19d947308, 86d021f92).
Il ripristino del bootloader vecchio è stato riaggiunto tramite una modalità bootloader non-fast che invia i comandi di cancellazione/scrittura senza il padding di query-sync della modalità fast (c20112c07).
Console degli strumenti più pulite. I terminali di flashing del firmware (bossac, dfu-util, picotool, imx, strumenti video) ora vengono eseguiti come processi di console autonomi con output dei comandi formattato meglio (8053bb578).
Rifinitura del completamento automatico. Il completamento distingue classi, metodi e funzioni con suggerimenti separati per gli argomenti, usa icone appropriate del modello di codice e rispetta l’ambito public/protected/private in base al prefisso di underscore; il processore di completamento delle parole chiave ora salta inoltre lo spazio iniziale prima del cursore in caso di completamento invocato esplicitamente (manualmente) (8e9f967e7, 68b26b5fc).
Finestre di dialogo consolidate. Le finestre di dialogo ad-hoc «Don’t show this again» di OpenMV – inclusa la finestra informativa di avvio
OpenMV Cam LED Colorse le richieste di aggiornamento del firmware e degli esempi – sono unificate in finestre di dialogoCheckableMessageBox«Do Not Ask/Show Again»; un pulsante «Reset Do Not Ask/Show Again Dialogs» è stato aggiunto alle impostazioni Generali e i marcatori di code folding sono disabilitati per impostazione predefinita (9fdff9c6d).Branding consapevole del tema. Sono stati aggiunti schermate di avvio in modalità scura, loghi dei chip ST e NXP chiari/scuri nella finestra Informazioni, colori dei tooltip in modalità scura e colori corretti delle icone di completamento automatico (d85fdeb19, 9895a8395, f45ceaaea, 7f3e1f383).
Pulizia del visualizzatore di immagini. Le azioni condividi, sfondo, contorno e «imposta come predefinito» sono nascoste, è stata aggiunta un’azione di adattamento allo schermo ed è stato corretto il dimensionamento delle immagini animate (b37c55e25).
Pulizia del menu contestuale. Le voci «Show in File System View», «Open Terminal», «File Properties» e «Add/Delete UTF-8 BOM on Save» sono nascoste (5d862c78e).
Terminale seriale scuro. Il terminale autonomo usa un vero tema scuro con barre di scorrimento stilizzate, icone della barra degli strumenti aggiornate e ricaricamento corretto delle icone della barra di scorrimento ad alta risoluzione tra gli schermi (5c3af6880).
Pulizia di Trova/Cerca. Il pannello dei risultati acquisisce un tema scuro, il selettore del motore di ricerca è nascosto, le etichette sono semplificate e Trova nei file usa per impostazione predefinita la cartella Documents/OpenMV (20a806550).
Identità dell’applicazione. L’IDE ora mostra l’icona OpenMV corretta sul desktop, nella barra del titolo e nella barra delle applicazioni (con gestione ad alta risoluzione su Windows), e l’id dell’IDE è stato cambiato in
openmvide(8ad1eed1f).Splash ad alta risoluzione visualizza un’immagine di splash 2x su display Retina/al 200% di scala (626ff673e).
Riparazione della barra delle azioni. La barra delle azioni a sinistra (New File, Open, Save, Undo, Redo, Cut, Copy, Paste) è stata riparata e dotata di icone OpenMV personalizzate (b8479b5d0).
Loghi della finestra Informazioni. Sono ora mostrati sia il logo partner Arduino che quello Edge Impulse (Edge Impulse era precedentemente nascosto) con varianti 2x ad alta risoluzione, e la grafica di splash inclusa è stata aggiornata (
splash-small-2/splash-large-2) (5facd8d9a).Select Word Under Cursor è abilitato; i comandi Go to Block Start/End (Ctrl+[ / Ctrl+]) e Select Block Up/Down sono stati brevemente riabilitati (36ed5b1a8) ma lasciati disabilitati nella release (626ff673e).
La voce desktop Linux acquisisce una categoria Electronics, un Comment di descrizione e Keywords di ricerca (embedded electronics, microcontroller, micropython, computer/machine vision) (470e5702e).
Migrazione delle risorse. Le risorse utente sono state spostate in una posizione versionata (la vecchia cartella qtcreator viene rimossa all’avvio), e gli innocui avvisi DirectWrite sui caratteri su Windows sono soppressi (a04af5351, 70765dc2a).
Opzioni interne nascoste. Le opzioni Core interne
-colore-themesono nascoste dall’output della guida, e la modalità presentazione è stata riabilitata (434c7b4cc).Personalizzazioni core riapplicate alla fancy action bar/tab widget, al gestore dei messaggi/finestra di output, alle proxy action, all’evidenziatore di sintassi e all’editor di testo (0e8047372).
QCustomPlot 2.1.1. La libreria di plotting inclusa è stata aggiornata per la compatibilità con Qt 6.4 e la corretta gestione del DPI di visualizzazione che cambia dinamicamente (8801415fe).
Pulizie cosmetiche dell’interfaccia alle icone a freccia delle barre di scorrimento, alla barra di stato, ai pulsanti di chiusura della barra delle schede dei documenti e alla larghezza dello scroller dell’editor; l’indicatore «Display File Line Ending» dell’editor è ora disattivato per impostazione predefinita (e0c4d2325, 6a26f4430, e130988fb).
Correzioni di bug¶
Corretto il rilevamento VID/PID su Linux leggendo
/sys/class/tty/<port>/device/ueventper il VID/PID reale del dispositivo, aggirando il fatto cheQSerialPortInforestituiva gli identificatori dell’hub USB, così le camere dietro hub vengono rilevate correttamente (28220b351).Corretto il flashing del firmware del bootloader su Mac rilassando le asserzioni sulla dimensione degli endpoint e accodando il pacchetto di query di sync solo quando una scrittura ha esattamente la dimensione di un endpoint USB (86d021f92).
Corretti gli strumenti di riproduzione video su Linux: Play Video File / Play RTSP Stream sono ora nascosti su Linux a 32 bit e ARM (nessun ffplay incluso), con un fallback su gnome-terminal quando xterm non è disponibile, e il binario ffmpeg macOS è stato ripristinato da un segnaposto (d342649cc, d896f4225).
Aumentati i ritardi di inizio/fine del reset del bootloader da 0 a 5 per evitare la sovrapposizione dei comandi di cancellazione e scrittura durante gli aggiornamenti del firmware (fabc168b6).
Semplificato il ripristino del bootloader: forzare il bootloader per riparare una cam danneggiata salta le richieste ridondanti, e dopo un reset del bootloader DFU l’IDE riprova automaticamente l’aggiornamento invece di chiedere all’utente di riconnettersi (12b924088).
Consentito l’annullamento a metà transazione dei comandi di dump del frame buffer/buffer TX seriale (4a4afae1b).
Rimosso il workaround di rinuncia in caso di stallo della lettura della porta seriale che poteva riempire le risposte con byte zero, migliorando l’affidabilità del trasferimento USB veloce (0ee1d8e91).
Corretti il debug WiFi e la riconnessione automatica: le porte WiFi aggiornano il loro timestamp dell’ultimo avvistamento alla riscoperta, sono stati corretti diversi bug di iteratore-dopo-cancellazione nel ritiro delle porte WiFi e nel rilevamento DFU/bootloader, e la riconnessione automatica ora attende che l’IDE non sia occupato prima di riconnettersi (cf0b67dc6).
Corretto il convertitore da video a MJPEG affinché analizzi la frequenza dei frame dall’output dell’encoder e scriva il corretto delta in millisecondi per frame, così i video convertiti vengono riprodotti alla velocità giusta (4a7ad2057).
Corretto il mancato avvio del flashing del firmware e degli strumenti da riga di comando inclusi forzando il backend QProcess e correggendo la protezione del loop degli eventi del processo bloccante (200fe9f3c).
Corrette le icone di ramo espandi/comprimi dell’albero dell’editor di dataset affinché vengano renderizzate correttamente su display HiDPI ricaricando il foglio di stile delle icone al cambio del rapporto pixel-dispositivo (a0e78057f).
Gli aggiornamenti di pacchetti/risorse ora riavviano automaticamente OpenMV IDE invece di limitarsi a uscire dopo l’installazione (178ee1b8e).
Corretta l’evidenziazione dei risultati di Trova/ricerca e fatto in modo che le azioni di risultato-ricerca/apertura-file ricorrano al primo editor visibile quando non c’è un editor corrente (48c402dfc).
Corretta la finestra di dialogo del caricatore del firmware affinché il suo testo di avviso venga cancellato e la finestra venga ridimensionata correttamente al completamento di un’operazione di flashing (c505c6ade).
Corretti diversi bug dell’interfaccia su macOS: la barra delle schede non genera più una raffica di errori di caricamento icone e si mostra correttamente all’apertura del file (9be8c58de, 5322cf968).
Corretti lo stile e l’allineamento di base della barra di stato / del pannello di output su macOS e Linux (4fc4545de, d29b2baa0, a440d5cd8).
Corretta la stampa del codice sorgente affinché l’intestazione del titolo della pagina abbia margini superiori e laterali appropriati invece di toccare il bordo della pagina (786d6012c).
Supporto di piattaforme e strumenti¶
Base Qt Creator: 10.0.1 (ribasata da 4.0.2).
OpenMV IDE: 4.0.0 -> 4.0.1.
OpenMV Cam RT1062 (i.MX RT1060): il firmware iniziale RT1062, il flash-loader, le immagini firmate, la voce
imx.txte le chiavi di configurazioneblhostdel secure-bootloader/eFuse sono stati aggiunti nella cartella firmwareOPENMV5(a6595f5f7); la scheda è stata poi consolidata in un’unica cartellaOPENMV_RT1060, ed è stata aggiunta una distinta variante di scheda con Secure Bootloader (SBL) (OpenMV_Cam_RT1062_SBL) (d2b11c6c8, 5baf28c6e).La toolchain di flashing inclusa (blhost, bossac, dfu-util, dfuse + driver STM32, picotool, sdphost, ffmpeg, driver FTDI/Arduino) è stata ri-inclusa per Windows/macOS/Linux, con i binari Linux contrassegnati come eseguibili (fbfa4903a, bfb6b32e2, 9551c64da).
DFU su ARM64 Linux: un
dfu-utilaarch64 incluso più il rilevamento arm64 nell’elenco dei dispositivi e nel download del firmware abilita il flashing DFU su host come il Raspberry Pi (16bc6fe0f, 470e5702e).Il rilevamento dei dispositivi i.MX ora funziona su Linux (analizzando
lsusb) e macOS (scansionandoioreg), abilitando il caricamento del firmware i.MX RT su quelle piattaforme (e03ccbe71, 7cf505d09).Limitazioni di piattaforma: l’uso di i.MX è limitato a Windows/macOS/Linux-x86_64 con un errore critico altrove, e il flashing di Portenta/Nicla su ARM/ARM64 Linux mostra un avviso «DFU Util may not be stable on this platform» (9513f6475).
OpenGL su Windows: il rendering software è stato ripristinato includendo
opengl32sw,Qt6OpenGLe il supporto OpenGL di Qt6Gui nel pacchetto distribuito (aaaa1928f).Cartelle/id delle schede Arduino rinominati. Le cartelle firmware e gli id delle schede in
boards.txtdi Portenta, Nicla Vision e Nano 33 BLE Sense sono stati rinominati inARDUINO_PORTENTA_H7,ARDUINO_NICLA_VISIONeARDUINO_NANO_33_BLE_SENSE(a70d6562a); la cartella/id della scheda Nano 33 BLE Sense è stata successivamente convertita in minuscoloarduino_nano_33_ble_senseper corrispondere al nome di scheda riportato dal dispositivo (22750d8c7, a801a81de).I flash loader del bootloader OPENMV_RT1060 (
blhost_flash_loader.bin,sdphost_flash_loader.bin) sono stati aggiornati (5baf28c6e).QCustomPlot: 2.1.1 (libreria di plotting inclusa) (8801415fe).
Le immagini firmware su disco sono state ri-incluse per tutte le schede OpenMV/Arduino supportate (
OPENMV1-4P,OPENMV4_PRO,OPENMVPT,ARDUINO_NICLA_VISION,arduino_nano_33_ble_sense,ARDUINO_PORTENTA_H7,ARDUINO_NANO_RP2040_CONNECT,OPENMV_RT1060,CYW4343, più il firmware WiFiWINC1500), con le immagini firmware e, ove applicabile, bootloader/uvc (fbfa4903a).
Modifiche incompatibili¶
Queste sono modifiche del flusso di lavoro e del comportamento visibili all’utente; il ribasamento su Qt Creator 10.0.1 in sé non rompe i progetti o gli script degli utenti.
Le definizioni delle schede i.MX RT1060 sono cambiate. Le voci
EVKBMIMXRT1060eOPENMV5sono state sostituite da un’unica schedaOPENMV_RT1060(OpenMV Cam RT1062, più una variante SBL), e le vecchie cartelle firmware sono state rimosse (d2b11c6c8).Il timeout predefinito di risposta ai comandi è 10000 ms (era 5000 ms in 4.0.0); il testo della guida di
-override_read_timeoutè stato aggiornato di conseguenza (4a4afae1b).Il comportamento di connessione/disconnessione è cambiato. Auto Reconnect ora è DISATTIVATO per impostazione predefinita, e la connessione o disconnessione non arresta più lo script in esecuzione per impostazione predefinita a meno che la nuova opzione «Stop Script on Connect/Disconnect» non sia abilitata (è attiva per impostazione predefinita) (a0e78057f).
Il flusso di aggiornamento riavvia l’IDE. Gli aggiornamenti di pacchetti/risorse ora riavviano automaticamente OpenMV IDE invece di uscire dopo l’installazione (178ee1b8e).
Gli id delle schede Arduino sono stati rinominati. Gli id delle schede in
boards.txte le cartelle firmware di Portenta, Nicla Vision e Nano 33 BLE Sense sono stati rinominati inARDUINO_PORTENTA_H7,ARDUINO_NICLA_VISIONeARDUINO_NANO_33_BLE_SENSE(quest’ultimo poi convertito in minuscoloarduino_nano_33_ble_sense) (a70d6562a, 22750d8c7, a801a81de).