v4.7.0

v4.7.0 ist ein umfangreiches, auf NPU und ROMFS ausgerichtetes Release auf Basis von Qt Creator 14.0.2. Es führt einen Workflow für ein geräteinternes ROM-Dateisystem mit integrierten ARM-Ethos-U-(Vela)- und ST-Edge-AI-Modellcompilern ein, ergänzt eine STM32CubeProgrammer-basierte Werksprogrammierung für die OpenMV N6 und bündelt OpenMV-Firmware 4.7.0 für alle Boards. Beachten Sie, dass das Aktualisieren einer Kamera von einer Firmware vor 4.7.0 nun ein Löschen des FAT-Dateisystems und ein Zurücksetzen des ROMFS erzwingt, wodurch im internen Flash des Geräts gespeicherte Dateien gelöscht werden; siehe Breaking changes weiter unten.

Highlights

  • Der ROM-Dateisystem-Workflow ermöglicht es, ein geräteinternes schreibgeschütztes Dateisystem zu erstellen, zu bearbeiten, zu flashen und zurückzusetzen, sodass ML-Modelle auf der Kamera gespeichert werden können; integriert in die Bootloader DFU, IMX, Bossac, Picotool und Arduino-DFU. (efcc52fd8, f2cbcc802, a7e52424a, 60b05326d, 7140fc2aa)

  • Die Modellcompiler ARM Ethos-U Vela und ST Edge AI sind nun integriert, sodass .tflite-/.onnx-Modelle automatisch für die NPU kompiliert werden, wenn sie auf Ethos-U55-(OpenMV AE3)- oder Neural-ART-(OpenMV N6)-Boards geladen werden. (411f708ea, 3064411ad)

  • STM32CubeProgrammer ist nun gebündelt, um die Werksprogrammierung des Bootloaders der OpenMV N6 (STM32N657) über eine FlashLayout.tsv zu ermöglichen. (334b04dbd, 54fea4d57, 28cc94a6e)

  • Der Model-Zoo-Browser erhält ein Kontrollkästchen „Filter models by board type“, das von einer neuen models/index.csv-Tabelle gesteuert wird und Modelle ausblendet, die mit dem verbundenen Board nicht kompatibel sind. (80adb2079)

  • ROMFS-Ausrichtung pro Erweiterung: Der ROMFS-Bildeditor sortiert Dateien nun alphabetisch und packt sie anhand von Byte-Ausrichtungsregeln aus settings.json (z. B. werden .tflite-Modelle an 16 Bytes ausgerichtet). (e87b2bf06)

  • Gebündelte Firmware auf 4.7.0 aktualisiert für alle OpenMV- und Arduino-Boards. (6d04b1b50, d0bbb1fe7, d7d3120b3)

Neue Funktionen

  • Das ROM-Dateisystem-Untermenü (New / Open / Edit ROMFS on OpenMV Cam / Reset ROMFS on OpenMV Cam) ersetzt die alte einzelne Aktion Edit ROM File System. (0bc275a0a, 958f732b5)

  • Open Model Zoo browser mit persistentem Zustand des ausgewählten Modells und einer Vorschau bei Auswahländerung, einschließlich gebündelter Modellbibliotheken von STMicroelectronics, Qualcomm, DeGirum, Edge Impulse und Google. (58033c5df, 2a1fb071a, 48c5b96fe, c0959833c)

  • Der Menüpunkt Convert Model for NPU unter Machine Vision Tools kompiliert ein TensorFlow-Lite-(.tflite)- oder ONNX-(.onnx)-Modell für den NPU-Beschleuniger des Boards (Vela für Ethos-U .tflite, ST Edge AI für die N6 Neural-ART .tflite/.onnx) und speichert das konvertierte Modell auf der Festplatte oder der Kamera. (3913f5b8b)

  • Das Werkzeug Copy/Convert Python File kopiert ein Python-Skript auf die Kamera oder die Festplatte und kompiliert es optional per mpy-cross plattformübergreifend in MicroPython-.mpy-Bytecode; es befindet sich in einem neuen Untermenü MicroPython Tools unter Tools. (e9d7fa143, 47188c0e3)

  • Den Umschaltschaltflächen Wrap Text wurden dem seriellen OpenMV-Terminal und dem Ausgabebereich General Messages hinzugefügt; beide brechen ihre Ausgabe auf Wortgrenzen um und behalten die Einstellung über Sitzungen hinweg bei. (8c052845a, 51d3e1ad6)

  • Die mpy-cross-ROMFS-Cross-Kompilierung mit boardspezifischen Architektur-Flags (armv7emsp/armv7emdp) ermöglicht es, MicroPython-Skripte in ROMFS-Images einzufrieren. (8c71548df)

  • Der Firmware-Bootloader-Dialog akzeptiert nun *.img-ROMFS-Dateien neben *.bin und *.dfu, validiert bootloaderspezifische Erweiterungen und deaktiviert das bestehende Kontrollkästchen Reset ROMFS file system beim Laden einer *.img-Datei. (79f348b36)

  • Aktualisierungen von einer Firmware vor 4.7.0 erzwingen nun die Aktivierung der Kontrollkästchen für FAT-Löschung und ROMFS-Zurücksetzung/-Aktualisierung und warnen, dass die Aktualisierung das Löschen des FAT-Dateisystems erfordert. (f6f3355b0)

Weitere Änderungen und Verbesserungen

  • Der gebündelte Qualcomm-Model-Zoo wurde in aufgabenbasierte Ordner reorganisiert (image_classification, object_detection, pose_estimation, semantic_segmentation, depth_estimation), nicht unterstützte große Modelle wurden entfernt (YOLOv7, YOLOv8, deeplabv3, mobilenet_v2), und resnet18 sowie densenet_121 (mit breiterer Board-Kompatibilität) wurden ergänzt, dazu facemap_3dmm und FFNet_40S (nur AE3/N6). (300ce2fc2)

  • Ein neuer Edge-Impulse-Modellanbieter (FOMO-Gesichtserkennungsmodell) und neue Google-Modelle (micro_speech, mnist_lstm, person_detection) wurden dem gebündelten Model-Zoo hinzugefügt, und dem Kontextmenü des ROMFS-Editors wurde eine View/Edit-Aktion hinzugefügt. (80adb2079)

  • Bereinigung der Model-Zoo-Links: Das Qualcomm-Modell face_attrib_net (AE3/N6) wurde hinzugefügt, der defekte YOLO-NAS-Eintrag wurde entfernt, und die Board-Kompatibilitätsfilter für mehrere STMicroelectronics-Objekterkennungsmodelle wurden korrigiert. (fd639bda0)

  • Es wurden weitere Modell-Labels hinzugefügt, die NPU-Beschleunigerkonfiguration eines Modells von stai auf stedgeai umgestellt und der Board-Kompatibilitätsfilter st_yolo_x erweitert (nun auch OPENMV_RT1060, OPENMV4P, ARDUINO_GIGA, PORTENTA_H7 und NICLA_VISION zusätzlich zu AE3/N6). (1515631ce)

  • Das Hinzufügen eines .tflite-Modells zum ROMFS überspringt nun die Vela-/Ethos-U-Kompilierung, wenn das Modell bereits für Ethos-U kompiliert ist (es wird nur kopiert), und die Dialogaktion wurde von Add Model in Model Zoo umbenannt. (9c0b178fa)

  • Die ST-Edge-AI-Kompilierung überspringt die Konvertierung für Modelle, die bereits im NBIN-Format vorliegen. (3064411ad)

  • Der Dialog des Vela-Compilers vergleicht die vom Modell gemeldete SRAM-Nutzung mit der konfigurierten Heap-Größe jedes Boards und zeigt einen Prozentwert mit Warnungen/Fehlern an, wenn das Modell 90 % oder 100 % des verfügbaren Heaps überschreitet. (7140fc2aa)

  • Der Vela-Compiler meldet nun einen klaren Fehler „not supported on this platform“, anstatt stillschweigend fehlzuschlagen, und das Ablegen eines Modells im Model-Zoo erfordert nicht länger, dass Vela vorhanden ist. (c736dd54d, 0ad7fd705)

  • Der Vela-Ethos-U-Compiler läuft nun über die gebündelte eingebettete Python-Laufzeit (python -m ethosu.vela) statt über eine eigenständige Binärdatei. (52f9b8820)

  • Lang laufende ST-Edge-AI- und Vela-Modellkompilierungsdialoge zeigen nun einen Hinweis „This command takes a while to execute. Please be patient.“ an. (fc9ac2ab5)

  • Das Öffnen von Beispielen oder neuen Skripten auf PAG7936-(N6/AE3)- und PS5520-Sensoren hebt nun für die höher auflösenden Sensoren automatisch sensor.set_framesize(QVGA) auf VGA an. (dfc27dd25)

  • Es wurde eine automatische Korrektur von Beispielskripten für FLIR-Boson-320/640-Wärmebildkameras, PixArt PAG7920/PAJ6100, FROGEYE2020 und die Prophesee-GENX320-Ereigniskamera hinzugefügt. (1f54ad01b)

  • Herunterladbare IDE-Ressourcen (Firmware/Modelle/Dokumentation) werden nun über eine neue ICore::allUsersResourcePath()-API in ein gemeinsames Anwendungsdatenverzeichnis für alle Benutzer installiert, wobei das Versionsmanifest der Ressourcen in einer OpenMVIDE.json-Datei eine Ebene über dem Ressourcenordner für alle Benutzer gespeichert wird. (be308ace2, 7c7dddb87)

  • Während Firmware-Updates des Alif-Systempakets fordert die IDE den Benutzer nun auf, die Kamera vor dem Fortfahren von der Stromversorgung zu trennen und wieder anzuschließen (Power-Cycle). (162d128f9, 756611696)

  • Der Alif-(Ensemble)-Bootloader-/Firmware-Download-Ablauf wurde überarbeitet, um ROMFS-kompatibel zu sein: Er erzeugt das App-TOC nach dem Schreiben des Bootloaders, kopiert bin-/sign-Images in einen images/-Unterordner und flasht firmware_pad.toc. (f623c9231)

  • Die Board-Anzeigenamen im Firmware-Auswahldialog wurden vereinfacht, indem die redundanten Chip-in-Klammern-Suffixe und die „Legacy“-Tags entfernt wurden (z. B. wird aus „OpenMV Cam H7 (STM32H743)“ nun „OpenMV Cam H7“). (334b04dbd)

  • Zwei Aktionen des Tools-Menüs wurden zur besseren Verständlichkeit umbenannt: Run Bootloader (Load Firmware) heißt nun Load Custom Firmware, und Erase Onboard Data Flash heißt nun Erase Internal FAT File System (der Bestätigungsdialog verweist nun auf das interne FAT-Dateisystem der Kamera). (0bc275a0a)

  • Die Tastaturkürzel Ctrl+Shift+L (Load Custom Firmware) und Ctrl+Shift+E (Erase Internal FAT File System) wurden wiederhergestellt, und der Eintrag Preferences wurde zurück in das Menü Edit verschoben. (dabb6f7d9, b5daf59a6)

  • Die automatische Erkennung von C/C++-Compilern und Toolchains beim Start wurde deaktiviert, da die IDE auf MicroPython ausgerichtet ist. (f42fcc8f2)

  • Das Partnerlogo von Alif Semiconductor (hell/dunkel) wurde dem Partnerbereich des About-Dialogs hinzugefügt. (4878781bb)

  • Das Auslesen der Firmware des verbundenen Boards kann nun veraltete Daten des seriellen Ports leeren, bevor der Befehl ausgeführt wird, was die Zuverlässigkeit von Firmware-/Versionsabfragen verbessert. (c15a46f5b)

  • Die Zuverlässigkeit der ROMFS-Verbindung wurde verbessert, indem bei ROMFS-Lese-, Schreib- und Zurücksetzungsvorgängen ein erneutes Verbinden/Aktualisieren erzwungen wird. (f9bc83007)

Fehlerbehebungen

  • Die Speichern-Dialoge für Modelle/Skripte sowie das Hinzufügen von Dateien/Modellen zum ROMFS verwenden nun das einfache statt des vollständigen Dateisuffixes, was verstümmelte Erweiterungen beim Umbenennen von Dateien mit Punkten im Namen verhindert. (52c6820d2)

  • Ein Überlauf des DFU-Upload-Fortschrittsbalkens bei großen Übertragungen wurde behoben, indem der Prozentwert mit 64-Bit-Arithmetik berechnet wird. (4b91ff2ba)

  • Das Flashen älterer OpenMV-Firmware/-Bootloader wurde behoben, indem die Flash-Lösch- und Programmierschritte gegen ungültige (nicht positive) Flash-Sektorbereiche abgesichert werden und ein expliziter Fehler angezeigt wird, anstatt abzustürzen; außerdem wurde die ROMFS-Zugriffssicherung während der Aktualisierung alter Firmware korrigiert. (ae2cc15b4, 235dbdb10)

  • Die Board-Erkennung über den seriellen Port wurde korrigiert, sodass der inverse Filter für die Seriennummer nur während der Port-Validierung (nicht während der Verbindung) angewendet wird; außerdem wurden inverse Filter für das i.MX-Board hinzugefügt, sodass Seriennummern im Bootloader-Modus ausgeschlossen werden. (ae2cc15b4)

  • Die Persistenz des Board-Typs wurde korrigiert, sodass eine zuvor gespeicherte Board-Zuordnung nicht mehr überschrieben wird, wenn eine manuelle Board-Typ-Auswahl getroffen wird. (c42d36001)

  • Die Bootloader-Reparatur löst nun den Anzeigenamen eines verborgenen Boards in dessen Architektur-String auf, sodass beim erneuten Verbinden/bei der Firmware-Reparatur das korrekte Board zugeordnet wird. (a1de7a09c)

  • Die Board-Erkennung gleicht Board-Architektur-Strings nun ohne Berücksichtigung der Groß-/Kleinschreibung ab. (7a2e0e93f)

  • Ein Problem, bei dem die Gerätefestplatte bei schnellem Trennen/erneutem Verbinden nicht eingebunden wurde, wurde behoben, indem der Laufwerksscan-Thread beibehalten und Laufwerksscans bis zu dreimal wiederholt werden; außerdem läuft das Laufwerksscannen nun zuverlässig im Scan-Thread. (455dbe967, 58c0e5456)

  • Ein Fehler, durch den der Modellcompiler (ST Edge AI und Vela) auf Intel-Macs nicht lief, wurde behoben, indem der ARM64-Werkzeugpfad bei Ausführung unter Rosetta zugelassen wird. (32e309e86)

  • Probleme mit dem Cache des Python-Werkzeugs und des Language-Servers wurden behoben, indem der gesamte gebündelte Python-__pycache__ in ein gemeinsames Ressourcenverzeichnis umgeleitet und der i.MX-blhost-Pycache vor dem zeitlich begrenzten Bootloader-Connect vorgewärmt wird, sodass beim Flashen kein Timeout mehr auftritt. (f64f3330f)

  • Der vom Python-Language-Server (für die Autovervollständigung) verwendete MicroPython-Header-Pfad wurde so korrigiert, dass er aus dem Ressourcenpfad für alle Benutzer aufgelöst wird, und die Auflösung des Ressourcenpfads für alle Benutzer wurde robuster gemacht, wenn die Benutzernamenfilterung nichts findet. (5f2648565, fc1938818)

  • Defekte ST-Edge-AI-Dokumentationslinks im Compiler-Optionen-Dialog wurden behoben, indem lokale Dateipfade in korrekte file://-URLs umgewandelt werden. (3ac136444)

  • Die automatische Einrückung im Python-Editor wurde korrigiert, sodass Zeilen nach einer mit Doppelpunkt endenden (elektrischen) Zeile nicht mehr fälschlicherweise ausgerückt werden, z. B. nach if-/for-/def-Köpfen. (6555f44ba)

  • Die Ausrichtung von ROMFS-Verzeichniseinträgen wurde korrigiert, sodass Ordner-Offsets die Größe des Verzeichnisnamen-Eintrags berücksichtigen, und die Verzögerung zwischen Dateien beim Entpacken/Erstellen von ROMFS- und Model-Zoo-Dateien wurde erhöht, um eindeutige Erstellungszeitstempel sicherzustellen. (9bf7e1d9e, d968a6e46)

  • Ein Integer-Überlauf in der Mean-to-Depthwise-Conv-Konvertierung des Vela-Graph-Optimierers wurde behoben, indem der Ausgabemultiplikator in 64 Bit berechnet wird, und der im Titel/in der Ausgabe des Vela-Compiler-Dialogs verwendete Basisname wurde korrigiert. (d217a46e9, 8376490eb)

  • Die Wiederherstellung der erweiterten Ordner und des ausgewählten Modells im Model-Zoo-Browser beim erneuten Öffnen wurde korrigiert, und der Dialog wurde auf Heap-Allokation umgestellt, um Probleme mit der GUI-Lebensdauer zu vermeiden. (84a63ef4c)

  • Der Speichern-unter-Pfad des Model Zoo wurde korrigiert, sodass das gemerkte Verzeichnis als Ordner statt als vollständiger Dateiname gespeichert wird. (be877f7af)

  • Der alte Benutzer-Ressourcenpfad wird nun beibehalten, anstatt ihn beim Start zu löschen, wodurch ein Fehler „close any programs viewing OpenMV IDE data“ vermieden wird, wenn der alte Ordner gesperrt ist. (775656775)

  • Die Windows-Treiberinstaller-Skripte sowie die Katalog-/inf-Dateien wurden korrigiert, sodass die Treiber OpenMV DFU, dfuse, FTDI, Arduino, pybcdc und VCR zuverlässig installiert werden und Erfolgscodes korrekt melden; die DFU-Treiberinstallationsskripte für dfuse/vcr wurden gehärtet, und die gebündelten OpenMV-DFU-Treiberkataloge wurden neu signiert. (48a0a21e3, b7b607250, b4221a884, e4f3bb8f8, 62e869c0b, 583576f2a)

  • Der Linux-Installer wurde korrigiert, sodass er pyusb über das Distributionspaket python3-usb installiert und build-essential hinzufügt, anstatt pip install pyusb auszuführen, und das Betriebssystem über /etc/os-release erkennt. (c471ddc42, 4014a0ba5)

  • Der Windows-Installer aktiviert nun die Unterstützung für lange Pfade, sodass tief verschachtelte ST-Edge-AI-Dateien korrekt installiert werden. (0b3ca6945)

Plattform- und Werkzeugunterstützung

  • Qt-Creator-Basis: 14.0.2.

  • Gebündelte OpenMV-Firmware: auf 4.7.0 aktualisiert für alle OpenMV- und Arduino-Boards (OPENMV2/3/4/4P/PT, RT1060, GIGA, Portenta H7, Nicla Vision, Nano 33 BLE/RP2040, AE3, N6); die Firmware wurde mit ROMFS-Unterstützung (romfs0.img) neu erstellt. (6d04b1b50, c44e33d70, a1de7a09c)

  • OpenMV N6 ROMFS: von 16 MB auf 24 MB erhöht, wobei das ROMFS-Image auf DFU-Alt-Setting 3 verschoben wurde. (d0bbb1fe7, d7d3120b3)

  • OpenMV AE3 ROMFS: von 16 MB auf 24 MB erhöht, mit hinzugefügten 16/32-Byte-Ausrichtungsregeln für gebündelte .bin-Modelldateien auf allen Boards. (746da8914)

  • STM32CubeProgrammer (STM32_Programmer_CLI) für macOS, Linux und Windows gebündelt, mit der vollständigen STM32-Gerätedatenbank und externen Loadern für die N6-Werksprogrammierung; die Installation wurde von ungenutzten externen Loadern und MCU-spezifischen Datenbankdateien bereinigt, um die Größe zu reduzieren. (334b04dbd, 54fea4d57, 28cc94a6e, 2522c900f)

  • ST Edge AI (stedgeai) Compiler 2.1.0 gebündelt (Windows) für die N6-Neural-ART-NPU. (3064411ad)

  • ARM Ethos-U Vela Compiler 4.2.0 (mit numpy 2.2.4) gebündelt für Linux x86-64, macOS (Apple Silicon) und Windows. Das Windows-Bundle wurde zunächst mit Vela 4.1.0 / numpy 2.2.3 hinzugefügt und später auf die endgültige Version 4.2.0 / numpy 2.2.4 angehoben. (f9323a1d6, 5f551a5c5, 6506497c6, bcda7d1f0)

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

  • Alif Security Toolkit: auf v1.104.0 aktualisiert (signierte setools-Binärdateien und v1.104.0-User-Guide-PDF) für Boards auf Basis von Alif Ensemble. (43260719c, 75a58e61b)

  • OPENMV_AE3-(Alif Ensemble)-NPU-Konfigurationen für die Beschleuniger ethos-u55-256 und ethos-u55-128 mit RTSS-HP/HE-SRAM/MRAM/OSPI-Systemkonfigurationen hinzugefügt. (1f5fc546d, 411f708ea)

  • Pinbelegungsdiagramme für die Kameras OpenMV N6 und AE3 (PAG7936-Sensor) wurden dem Pinbelegungs-Auswahldialog hinzugefügt, ebenso ein neues Genx320-Graustufen-Ereigniskamera-Beispiel, das die Konfiguration des Anti-Flacker-Filters demonstriert. (60184bbc5, 6d04b1b50)

  • Der USB-PID-Abgleich für die Arduino Nicla Vision wurde aktualisiert, um eine neue Anwendungs-PID (0x055F) neben der ursprünglichen (0x045F) zu erkennen. (91ce4007c)

  • Die Flash-Parameter des sicheren NXP/blhost-Bootloaders wurden aktualisiert, um eine explizite FCB-Adresse/-Länge und eine MBR-Datenträgergröße zu verwenden, in Übereinstimmung mit dem neuesten spsdk-Toolkit. (16b66c3e2)

  • Der Windows-Installer bündelt nun einen dedizierten STM32-DFU-Bootloader-Treiber und die Microsoft-Visual-C++-2015+-Redistributables. (cdcd4a5a6, 0cdebfc4c, a02b1f21a)

  • Der gebündelte DeGirum-YOLOv5/YOLOv8-Model-Zoo wurde aus der IDE entfernt. (26710be1c)

Breaking changes

Für Benutzer sichtbare Workflow- und Verhaltensänderungen in v4.7.0. Es gibt keinen Bruch der Scripting-API, beachten Sie jedoch Folgendes:

  • FAT-Dateisystem bei Aktualisierung von vor 4.7.0 gelöscht. Das Aktualisieren einer OpenMV Cam von einer Firmware vor 4.7.0 erzwingt nun das Löschen des FAT-Dateisystems und das Zurücksetzen/Aktualisieren des ROMFS während des Firmware-Updates (die Dialog-Kontrollkästchen sind zwingend aktiviert und können nicht deaktiviert werden), sodass im internen Flash des Geräts gespeicherte Benutzerdateien beim Upgrade gelöscht werden. (f6f3355b0)

  • UVC-Firmware und Portenta-H7-Bootloader-Binärdateien entfernt. Die vorkompilierten UVC-Webcam-Firmware-Images (uvc.bin/dfu/elf) wurden für alle Boards entfernt, und die Arduino-Portenta-H7-Bootloader-Binärdateien wurden aus dem Bundle entfernt; diese vorkompilierten Images können nicht mehr aus der IDE geflasht werden. (c44e33d70)

  • Verlagerung des Ressourcenverzeichnisses. Herunterladbare IDE-Ressourcen (Firmware, Model Zoo, Dokumentation) werden nun in ein gemeinsames Anwendungsdatenverzeichnis für alle Benutzer statt in den benutzerspezifischen Ressourcenpfad installiert, und das Versionsmanifest wurde von QSettings in eine OpenMVIDE.json-Datei verschoben, die eine Ebene über dem Ressourcenordner für alle Benutzer gespeichert wird (mit abwärtskompatibler QSettings-Spiegelung). Beim ersten Start nach dem Upgrade wird ein erneutes Herunterladen der Ressourcen ausgelöst. (be308ace2, 7c7dddb87)