v4.7.0

v4.7.0 è una grande release incentrata su NPU e ROMFS, basata su Qt Creator 14.0.2. Introduce un flusso di lavoro per il filesystem ROM on-device con i compilatori di modelli ARM Ethos-U (Vela) e ST Edge AI integrati, aggiunge la programmazione di fabbrica basata su STM32CubeProgrammer per l’OpenMV N6 e include il firmware OpenMV 4.7.0 su ogni scheda. Nota che l’aggiornamento di qualsiasi camera da un firmware antecedente alla 4.7.0 forza ora la cancellazione del filesystem FAT e il reset del ROMFS, che elimina i file memorizzati nella flash interna del dispositivo; vedi Modifiche incompatibili più avanti.

In evidenza

  • Il flusso di lavoro del ROM File System ti consente di creare, modificare, scrivere su flash e reimpostare un filesystem di sola lettura on-device, così i modelli ML possono essere memorizzati sulla camera, integrato tra i bootloader DFU, IMX, Bossac, Picotool e Arduino-DFU. (efcc52fd8, f2cbcc802, a7e52424a, 60b05326d, 7140fc2aa)

  • I compilatori di modelli ARM Ethos-U Vela e ST Edge AI sono ora integrati, così i modelli .tflite/.onnx vengono compilati automaticamente per la NPU quando caricati su schede Ethos-U55 (OpenMV AE3) o Neural-ART (OpenMV N6). (411f708ea, 3064411ad)

  • STM32CubeProgrammer è ora incluso per abilitare la programmazione di fabbrica del bootloader dell’OpenMV N6 (STM32N657) tramite un FlashLayout.tsv. (334b04dbd, 54fea4d57, 28cc94a6e)

  • Il browser del Model Zoo acquisisce una casella di controllo «Filtra i modelli per tipo di scheda» guidata da una nuova tabella models/index.csv che nasconde i modelli incompatibili con la scheda connessa. (80adb2079)

  • Allineamento ROMFS per estensione: l’editor delle immagini ROMFS ora ordina i file in ordine alfabetico e li impacchetta usando regole di allineamento per byte da settings.json (ad es. i modelli .tflite allineati a 16 byte). (e87b2bf06)

  • Firmware incluso aggiornato alla 4.7.0 su tutte le schede OpenMV e Arduino. (6d04b1b50, d0bbb1fe7, d7d3120b3)

Nuove funzionalità

  • Il sottomenu ROM File System (New / Open / Edit ROMFS on OpenMV Cam / Reset ROMFS on OpenMV Cam) sostituisce la vecchia singola azione Edit ROM File System. (0bc275a0a, 958f732b5)

  • Apertura del browser del Model Zoo con stato persistente del modello selezionato e un’anteprima al cambio di selezione, incluse le librerie di modelli STMicroelectronics, Qualcomm, DeGirum, Edge Impulse e Google. (58033c5df, 2a1fb071a, 48c5b96fe, c0959833c)

  • La voce di menu Convert Model for NPU sotto Machine Vision Tools compila un modello TensorFlow Lite (.tflite) o ONNX (.onnx) per l’acceleratore NPU della scheda (Vela per .tflite Ethos-U, ST Edge AI per .tflite/.onnx Neural-ART dell’N6) e salva il modello convertito su disco o sulla camera. (3913f5b8b)

  • Lo strumento Copy/Convert Python File copia uno script Python sulla camera o su disco e, opzionalmente, lo compila in cross-compilation in bytecode MicroPython .mpy tramite mpy-cross; si trova in un nuovo sottomenu MicroPython Tools sotto Tools. (e9d7fa143, 47188c0e3)

  • I pulsanti di attivazione/disattivazione Wrap Text sono stati aggiunti al terminale seriale OpenMV e al pannello di output General Messages; entrambi mandano a capo l’output a livello di parola e mantengono l’impostazione tra le sessioni. (8c052845a, 51d3e1ad6)

  • La cross-compilation ROMFS con mpy-cross con flag di architettura per scheda (armv7emsp/armv7emdp) consente di congelare gli script MicroPython nelle immagini ROMFS. (8c71548df)

  • La finestra di dialogo del bootloader del firmware ora accetta file ROMFS *.img oltre a *.bin e *.dfu, convalida le estensioni per ciascun bootloader e disabilita la casella di controllo esistente Reset ROMFS file system quando si carica un file *.img. (79f348b36)

  • Gli aggiornamenti da versioni antecedenti alla 4.7.0 ora forzano l’attivazione delle caselle di controllo per la cancellazione FAT e il reset/aggiornamento del ROMFS e avvisano che l’aggiornamento richiede la cancellazione del filesystem FAT. (f6f3355b0)

Altre modifiche e miglioramenti

  • Riorganizzato il model zoo Qualcomm incluso in cartelle basate sulle attività (image_classification, object_detection, pose_estimation, semantic_segmentation, depth_estimation), rimossi i modelli di grandi dimensioni non supportati (YOLOv7, YOLOv8, deeplabv3, mobilenet_v2) e aggiunti resnet18 e densenet_121 (con più ampia compatibilità tra le schede), oltre a facemap_3dmm e FFNet_40S (solo AE3/N6). (300ce2fc2)

  • Aggiunto un nuovo fornitore di modelli Edge Impulse (modello FOMO per il rilevamento dei volti) e nuovi modelli Google (micro_speech, mnist_lstm, person_detection) al model zoo incluso, e aggiunta un’azione View/Edit al menu contestuale dell’editor ROMFS. (80adb2079)

  • Ripuliti i link del model zoo: aggiunto il modello Qualcomm face_attrib_net (AE3/N6), rimossa la voce YOLO-NAS non funzionante e corretti i filtri di compatibilità delle schede per diversi modelli di rilevamento oggetti STMicroelectronics. (fd639bda0)

  • Aggiunte altre etichette di modelli, modificata la configurazione dell’acceleratore NPU di un modello da stai a stedgeai e ampliato il filtro di compatibilità delle schede di st_yolo_x (ora anche OPENMV_RT1060, OPENMV4P, ARDUINO_GIGA, PORTENTA_H7 e NICLA_VISION oltre ad AE3/N6). (1515631ce)

  • L’aggiunta di un modello .tflite al ROMFS ora salta la compilazione Vela/Ethos-U se il modello è già compilato per Ethos-U (viene semplicemente copiato), e l’azione della finestra di dialogo è stata rinominata da Add Model a Model Zoo. (9c0b178fa)

  • La compilazione ST Edge AI salta la conversione per i modelli già nel formato NBIN. (3064411ad)

  • La finestra di dialogo del compilatore Vela analizza l’utilizzo SRAM riportato dal modello rispetto alla dimensione dell’heap configurata per ciascuna scheda e mostra una percentuale con avvisi/errori quando il modello supera il 90% o il 100% dell’heap disponibile. (7140fc2aa)

  • Il compilatore Vela ora riporta un chiaro errore «not supported on this platform» invece di fallire silenziosamente, e il rilascio di un modello nel model zoo non richiede più la presenza di Vela. (c736dd54d, 0ad7fd705)

  • Il compilatore Vela Ethos-U ora viene eseguito tramite il runtime Python incorporato e incluso (python -m ethosu.vela) anziché un binario autonomo. (52f9b8820)

  • Le finestre di dialogo di compilazione dei modelli ST Edge AI e Vela di lunga durata ora mostrano l’avviso «This command takes a while to execute. Please be patient.». (fc9ac2ab5)

  • L’apertura di esempi o nuovi script sui sensori PAG7936 (N6/AE3) e PS5520 ora aumenta automaticamente sensor.set_framesize(QVGA) a VGA per i sensori a risoluzione più elevata. (dfc27dd25)

  • Aggiunta la correzione automatica degli script di esempio per le camere termiche FLIR Boson 320/640, PixArt PAG7920/PAJ6100, FROGEYE2020 e la event camera Prophesee GENX320. (1f54ad01b)

  • Le risorse IDE scaricabili (firmware/modelli/documentazione) ora vengono installate in una directory di dati applicativi condivisa per tutti gli utenti tramite una nuova API ICore::allUsersResourcePath(), con il manifest della versione delle risorse memorizzato in un file OpenMVIDE.json un livello sopra la cartella delle risorse di tutti gli utenti. (be308ace2, 7c7dddb87)

  • Durante gli aggiornamenti del firmware del system-package Alif, l’IDE ora chiede all’utente di spegnere e riaccendere (scollegare e ricollegare) la camera prima di continuare. (162d128f9, 756611696)

  • Rielaborato il flusso di download del bootloader/firmware Alif (Ensemble) per renderlo compatibile con ROMFS: genera la App TOC dopo aver scritto il bootloader, copia le immagini bin/sign in una sottocartella images/ e scrive su flash firmware_pad.toc. (f623c9231)

  • Semplificati i nomi visualizzati delle schede nel selettore del firmware eliminando i suffissi ridondanti tra parentesi con il chip e i tag «Legacy» (ad es. «OpenMV Cam H7 (STM32H743)» diventa «OpenMV Cam H7»). (334b04dbd)

  • Rinominate due azioni del menu Tools per maggiore chiarezza: Run Bootloader (Load Firmware) ora è Load Custom Firmware ed Erase Onboard Data Flash ora è Erase Internal FAT File System (la finestra di conferma ora fa riferimento al filesystem FAT interno della camera). (0bc275a0a)

  • Ripristinate le scorciatoie da tastiera Ctrl+Shift+L (Load Custom Firmware) e Ctrl+Shift+E (Erase Internal FAT File System) e spostata la voce Preferences nuovamente nel menu Edit. (dabb6f7d9, b5daf59a6)

  • Disabilitato il rilevamento automatico del compilatore C/C++ e della toolchain all’avvio, dato che l’IDE è rivolto a MicroPython. (f42fcc8f2)

  • Aggiunto il logo del partner Alif Semiconductor (chiaro/scuro) alla sezione partner della finestra di dialogo About. (4878781bb)

  • La lettura del firmware della scheda connessa ora può svuotare i dati obsoleti della porta seriale prima di emettere il comando, migliorando l’affidabilità delle query su firmware/versione. (c15a46f5b)

  • Migliorata l’affidabilità della connessione ROMFS forzando una riconnessione/aggiornamento durante le operazioni di lettura, scrittura e reset del ROMFS. (f9bc83007)

Correzioni di bug

  • Corrette le finestre di dialogo di salvataggio dei modelli/script e le funzioni di aggiunta file/aggiunta modello del ROMFS affinché usino il suffisso semplice del file invece del suffisso completo, evitando estensioni corrotte quando si rinominano file con punti nei loro nomi. (52c6820d2)

  • Corretto un overflow della barra di avanzamento dell’upload DFU sui trasferimenti di grandi dimensioni calcolando la percentuale con aritmetica a 64 bit. (4b91ff2ba)

  • Corretta la scrittura su flash di firmware/bootloader OpenMV più vecchi proteggendo le fasi di cancellazione e programmazione della flash da intervalli di settori flash non validi (non positivi) e mostrando un errore esplicito invece di andare in crash, e corretta la protezione dell’accesso al ROMFS durante l’aggiornamento da firmware vecchio. (ae2cc15b4, 235dbdb10)

  • Corretto il rilevamento delle schede sulla porta seriale affinché il filtro inverso sul numero di serie venga applicato solo durante la convalida della porta (non durante la connessione) e aggiunti filtri inversi per la scheda i.MX in modo che i numeri di serie in modalità bootloader vengano esclusi. (ae2cc15b4)

  • Corretta la persistenza del tipo di scheda affinché una mappatura della scheda salvata in precedenza non venga più sovrascritta quando si effettua una selezione manuale del tipo di scheda. (c42d36001)

  • La riparazione del bootloader ora risolve il nome visualizzato di una scheda nascosta nella relativa stringa di architettura, così la riconnessione/riparazione del firmware mappa la scheda corretta. (a1de7a09c)

  • Il rilevamento delle schede ora confronta le stringhe di architettura delle schede senza distinzione tra maiuscole e minuscole. (7a2e0e93f)

  • Corretto il mancato montaggio del disco del dispositivo in caso di scollegamento/ricollegamento rapido rendendo persistente il thread di scansione delle unità e ritentando le scansioni fino a tre volte, e fatto in modo che la scansione delle unità venga eseguita in modo affidabile sul thread di scansione. (455dbe967, 58c0e5456)

  • Corretto il mancato funzionamento del compilatore di modelli (ST Edge AI e Vela) sui Mac Intel consentendo il percorso dello strumento ARM64 durante l’esecuzione sotto Rosetta. (32e309e86)

  • Corretti problemi della cache dello strumento Python e del language server instradando tutte le __pycache__ Python incluse in una directory di risorse condivisa e pre-riscaldando la pycache di blhost i.MX prima della connessione al bootloader a tempo limitato, così la scrittura su flash non va più in timeout. (f64f3330f)

  • Corretto il percorso dell’header MicroPython usato dal Python language server (per il completamento automatico) affinché venga risolto dal percorso delle risorse di tutti gli utenti, e reso più robusto il lookup del percorso delle risorse di tutti gli utenti quando il filtraggio per nome utente non trova nulla. (5f2648565, fc1938818)

  • Corretti i link alla documentazione ST Edge AI non funzionanti nella finestra di dialogo delle opzioni del compilatore convertendo i percorsi di file locali in URL file:// corretti. (3ac136444)

  • Corretta l’indentazione automatica dell’editor Python affinché le righe non vengano più ridotte di indentazione in modo errato dopo una riga che termina con i due punti (elettrica), ad es. dopo le intestazioni if/for/def. (6555f44ba)

  • Corretto l’allineamento dei record di directory ROMFS affinché gli offset delle cartelle tengano conto della dimensione del record del nome della directory, e aumentato il ritardo tra i file durante la decompressione/creazione di file ROMFS e del model zoo per garantire timestamp di creazione distinti. (9bf7e1d9e, d968a6e46)

  • Corretto un overflow di interi nella conversione mean-to-depthwise-conv dell’ottimizzatore del grafo Vela calcolando il moltiplicatore di output a 64 bit, e corretto il basename usato nel titolo/output della finestra di dialogo del compilatore Vela. (d217a46e9, 8376490eb)

  • Corretto il ripristino delle cartelle espanse e del modello selezionato nel browser del model zoo alla riapertura, e passata la finestra di dialogo all’allocazione su heap per evitare problemi di durata della GUI. (84a63ef4c)

  • Corretto il percorso di salvataggio con nome del Model Zoo affinché la directory memorizzata venga salvata come cartella anziché come nome file completo. (be877f7af)

  • Mantenuto il percorso delle risorse utente legacy invece di eliminarlo all’avvio, evitando un errore «close any programs viewing OpenMV IDE data» quando la vecchia cartella è bloccata. (775656775)

  • Corretti gli script di installazione dei driver Windows e i file catalog/inf affinché i driver OpenMV DFU, dfuse, FTDI, Arduino, pybcdc e VCR si installino in modo affidabile e riportino correttamente i codici di successo, irrobustiti gli script di installazione dei driver DFU dfuse/vcr e ri-firmati i catalog dei driver OpenMV DFU inclusi. (48a0a21e3, b7b607250, b4221a884, e4f3bb8f8, 62e869c0b, 583576f2a)

  • Corretto l’installer Linux affinché installi pyusb tramite il pacchetto python3-usb della distribuzione e aggiunga build-essential invece di eseguire pip install pyusb, e affinché rilevi il sistema operativo tramite /etc/os-release. (c471ddc42, 4014a0ba5)

  • L’installer Windows ora abilita il supporto ai percorsi lunghi così i file ST Edge AI profondamente annidati vengono installati correttamente. (0b3ca6945)

Supporto per piattaforme e strumenti

  • Base Qt Creator: 14.0.2.

  • Firmware OpenMV incluso: aggiornato alla 4.7.0 su tutte le schede OpenMV e Arduino (OPENMV2/3/4/4P/PT, RT1060, GIGA, Portenta H7, Nicla Vision, Nano 33 BLE/RP2040, AE3, N6); il firmware è stato ricompilato con supporto ROMFS (romfs0.img). (6d04b1b50, c44e33d70, a1de7a09c)

  • ROMFS dell’OpenMV N6: aumentato da 16MB a 24MB, con l’immagine romfs spostata all’alt-setting 3 del DFU. (d0bbb1fe7, d7d3120b3)

  • ROMFS dell’OpenMV AE3: aumentato da 16MB a 24MB, con regole di allineamento a 16/32 byte aggiunte per i file di modello .bin inclusi su tutte le schede. (746da8914)

  • STM32CubeProgrammer (STM32_Programmer_CLI) incluso per macOS, Linux e Windows con l’intero database dei dispositivi STM32 e i loader esterni per la programmazione di fabbrica dell’N6; l’installazione è stata sfoltita dei file di loader esterni e dei database per singolo MCU inutilizzati per ridurne le dimensioni. (334b04dbd, 54fea4d57, 28cc94a6e, 2522c900f)

  • Compilatore ST Edge AI (stedgeai) 2.1.0 incluso (Windows) per la NPU Neural-ART dell’N6. (3064411ad)

  • Compilatore ARM Ethos-U Vela 4.2.0 (con numpy 2.2.4) incluso per Linux x86-64, macOS (Apple silicon) e Windows. Il bundle Windows è stato aggiunto inizialmente con Vela 4.1.0 / numpy 2.2.3 e successivamente portato alla versione finale 4.2.0 / numpy 2.2.4. (f9323a1d6, 5f551a5c5, 6506497c6, bcda7d1f0)

  • mpy-cross 1.25.0.post2 incluso (macOS/Windows). (8c71548df, 3ab42d58a)

  • Alif Security Toolkit: aggiornato alla v1.104.0 (binari setools firmati e User Guide PDF v1.104.0) per le schede basate su Alif Ensemble. (43260719c, 75a58e61b)

  • Aggiunte le configurazioni NPU OPENMV_AE3 (Alif Ensemble) destinate agli acceleratori ethos-u55-256 ed ethos-u55-128 con configurazioni di sistema RTSS HP/HE SRAM/MRAM/OSPI. (1f5fc546d, 411f708ea)

  • Aggiunti i diagrammi della piedinatura per le camere OpenMV N6 e AE3 (sensore PAG7936) al selettore della piedinatura, e un nuovo esempio di event camera in scala di grigi Genx320 che dimostra la configurazione del filtro anti-flicker. (60184bbc5, 6d04b1b50)

  • Aggiornata la corrispondenza dell’USB PID dell’Arduino Nicla Vision per riconoscere un nuovo PID applicativo (0x055F) oltre a quello originale (0x045F). (91ce4007c)

  • Aggiornati i parametri di scrittura su flash del bootloader sicuro NXP/blhost per usare un indirizzo/lunghezza FCB esplicito e una dimensione del disco MBR, allineandosi all’ultimo toolkit spsdk. (16b66c3e2)

  • L’installer Windows ora include un driver dedicato per il bootloader DFU STM32 e i redistributable Microsoft Visual C++ 2015+. (cdcd4a5a6, 0cdebfc4c, a02b1f21a)

  • Rimosso dall’IDE il model zoo DeGirum YOLOv5/YOLOv8 incluso. (26710be1c)

Modifiche incompatibili

Modifiche al flusso di lavoro e al comportamento visibili all’utente nella v4.7.0. Non c’è alcuna rottura dell’API di scripting, ma nota quanto segue:

  • Filesystem FAT cancellato durante l’aggiornamento da versioni antecedenti alla 4.7.0. L’aggiornamento di qualsiasi OpenMV Cam da un firmware antecedente alla 4.7.0 ora forza la cancellazione del filesystem FAT e il reset/aggiornamento del ROMFS durante l’aggiornamento del firmware (le caselle di controllo della finestra di dialogo sono forzate su «attivo» e non possono essere disabilitate), quindi i file utente memorizzati nella flash interna del dispositivo verranno eliminati durante l’aggiornamento. (f6f3355b0)

  • Rimossi i binari del firmware UVC e del bootloader Portenta H7. Le immagini precompilate del firmware webcam UVC (uvc.bin/dfu/elf) sono state rimosse per tutte le schede, e i binari del bootloader Arduino Portenta H7 sono stati rimossi dal bundle; queste immagini precompilate non possono più essere scritte su flash dall’IDE. (c44e33d70)

  • Riposizionamento della directory delle risorse. Le risorse IDE scaricabili (firmware, model zoo, documentazione) ora vengono installate in una directory di dati applicativi condivisa per tutti gli utenti invece che nel percorso delle risorse per singolo utente, e il manifest della versione è stato spostato da QSettings a un file OpenMVIDE.json memorizzato un livello sopra la cartella delle risorse di tutti gli utenti (con mirroring QSettings retrocompatibile). Al primo avvio dopo l’aggiornamento viene attivato un nuovo download delle risorse. (be308ace2, 7c7dddb87)