v2.4.0

v2.4.0 basiert auf Qt Creator 4.0.2 und stellt den neuen V3-Bootloader in den Mittelpunkt (Abfrage des QSPI-Flash-Layouts beim Laden der Firmware sowie Löschen bei einem vollständigen Löschen des integrierten Daten-Flash), die Live-Meldung von Sensor und Board in der Statusleiste sowie ein neues 32-Bit-USB-Debug-Protokoll, das zur mitgelieferten Firmware passt. Außerdem kommen ein LED-Leitfaden für den ersten Start sowie eine große Sammlung neuer TensorFlow-, Modbus- und WiFi-Beispiele hinzu. Da sich das Debug-Protokoll geändert hat, müssen Kameras die neue mitgelieferte Firmware ausführen, um eine Verbindung herstellen zu können.

Highlights

  • Unterstützung des V3-Bootloaders fragt beim Laden der Firmware das Layout des externen QSPI-Flash eines Boards ab und löscht es bei einem vollständigen Löschen des integrierten Daten-Flash (d953df62f).

  • Sensor- und Board-Meldung fragt beim Verbinden das Sensormodul der angeschlossenen Kamera ab und zeigt es in der Statusleiste an (OV2640, OV5640, OV7690, OV7725, OV9650, MT9V034, LEPTON), zusammen mit einer neuen Board-Typ-Bezeichnung (0ffa82958).

  • Kopieren von TensorFlow-Modellen ermöglicht es, .tflite-Modelle und nicht nur .network-Dateien für neuronale Netze auf die Cam zu kopieren (ad1aa98f0).

  • Erase Onboard Data Flash ist ein neuer Tools-Befehl, der nach einer Bestätigungsabfrage ausschließlich den integrierten Dateisystem-Flash der Cam löscht, ohne die Firmware neu zu flashen (d953df62f, 98686ac46).

  • LED-Leitfaden für den ersten Start ist ein neuer Dialog OpenMV Cam LED Colors, der die Zustände der integrierten LED erklärt und dauerhaft ausgeblendet werden kann (c2d00422f).

Neue Funktionen

  • V3-Bootloader fragt beim Laden der Firmware das QSPI-Flash-Layout ab und löscht den externen QSPI-Flash nur bei einem vollständigen Löschen des integrierten Daten-Flash; connectClicked ruft auf V3-Boards stets bootloaderQSPIFLayout auf, führt bootloaderQSPIFErase jedoch nur aus, wenn forceFlashFSErase gesetzt ist (QSPI-Schreib-/Memtest-Befehle sind in der IO-Schicht implementiert, werden vom Loader aber nicht genutzt) (d953df62f).

  • Sensor- und Board-Status fragt beim Verbinden das Sensormodul der Kamera ab und zeigt es (OV2640, OV5640, OV7690, OV7725, OV9650, MT9V034, LEPTON) in der Statusleiste an, zusammen mit einer neuen Board-Typ-Bezeichnung, unter Verwendung einer neuen sensors.txt-Zuordnung von ID zu Name (0ffa82958).

  • LED-Leitfaden für den ersten Start fügt einen neuen Dialog OpenMV Cam LED Colors hinzu, der beim ersten Start nach einer kurzen Verzögerung erscheint, wenn helloworld_1.py das geöffnete Dokument ist, und der die Zustände der integrierten LED erklärt (blinkendes Grün = Bootloader läuft, Blau = main.py läuft, Weiß = Panic bei Hardware-Fehler); ein Kontrollkästchen „Don’t show this message again.“ speichert das Ausblenden dauerhaft über eine DONT_SHOW_LED_STATES_AGAIN-Einstellung (c2d00422f).

  • Open OpenMV Cam Drive folder ist ein neuer Eintrag im Menü Tools, der das eingebundene Laufwerk der Kamera im Dateibrowser des Systems öffnet (a49f54305).

  • Erase Onboard Data Flash ist ein neuer Tools-Befehl, der nach einer Bestätigungsabfrage ausschließlich den integrierten Dateisystem-Flash löscht, ohne die Firmware neu zu flashen (d953df62f, 98686ac46).

  • Kopieren von TensorFlow-Modellen ermöglicht es dem Modell-Kopier-Dialog, neben .network-Dateien für neuronale Netze auch .tflite-Modelle auf die Cam zu kopieren; der Dialogfilter erhielt zudem die Einträge Label Files (*.txt) und All Files (ad1aa98f0, 0ffa82958, c0dbdd9e5).

  • Umschaltung der Debug-Protokoll-Version teilt die seriellen Befehle GetAttribute, SetAttribute, FBEnable und JPEGEnable zur Erhöhung der Zuverlässigkeit auf, wenn mit Firmware 3.5.3+ kommuniziert wird (83b9ca18f).

  • Neue mitgelieferte Beispiele ergänzen TensorFlow-Lite-Skripte für MobileNet und für Personenerkennung mit gleitendem Fenster sowie ein STM32Cube.AI-MNIST-Beispiel (nn_stm32cubeai.py), einen neuen Ordner 32-modbus (modbus_rtu_slave.py, modbus_apriltag.py), Ergänzungen für das WiFi-Shield (http_client_ssl, static_ip, mqtt_pub/mqtt_sub), Arduino UART/SPI-Slave sowie CAN (e26b90d79, 42ba8f5c4).

Weitere Änderungen und Verbesserungen

  • Das USB-Debug-Protokoll wurde an die neue Firmware angepasst: Attribut-Lesevorgänge verwenden den neuen 32-Bit-Befehl ATTR_READ_2 (0xCA), und Attribut-, Wert- sowie Framebuffer-Enable-Nutzdaten werden als 32-Bit-Longs statt als 16-Bit-Words gesendet (55d7cfe70).

  • Save open script to OpenMV Cam wurde in Save open script to OpenMV Cam (as main.py) umbenannt, um zu verdeutlichen, dass dabei main.py geschrieben wird (a49f54305).

  • Run Bootloader wurde in Run Bootloader (Load Firmware) umbenannt, um seinen Zweck zu verdeutlichen (ad1aa98f0).

  • Beispielmenüs werden nun nach ihrem numerischen Ordner-/Datei-Präfix sortiert, und die führenden NN--Ziffern werden aus den angezeigten Namen entfernt (ad1aa98f0).

  • Ausgabe- und serielle Terminals stellen Tabulatoren nun als Leerzeichen dar und verwenden dabei eine konfigurierbare Tabulatorbreite des seriellen Terminals aus den Texteditor-Einstellungen anstelle einer fest codierten Breite von 8 (98686ac46).

  • Die Laufwerkserkennung unter Linux akzeptiert beim Zuordnen des Kameralaufwerks nun auch über fuseblk eingebundene Dateisysteme (zum Beispiel exFAT-/NTFS-Volumes) (c0dbdd9e5).

  • Der in der IDE-Hilfe angezeigte mitgelieferte MicroPython-HTML-Dokumentationssatz wurde aktualisiert (Bibliotheksreferenz, esp8266-/esp32-Tutorials, generierte Seiten und Bilder) (e69d71f7c, 90b5c6eb5, 97b0f645a).

Fehlerbehebungen

  • Ein numerischer Überlauf in der Histogramm-Statistik (Mittelwert, Quartile, Median, Standardabweichung) wurde behoben, indem die Akkumulatoren von int auf 64 Bit verbreitert wurden, was falsche Statistiken bei großen Bildern verhindert (55d7cfe70).

  • Trennen/Auswerfen unter Linux wurde überarbeitet: Der unzuverlässige syncfs-/closedir-Flush wurde entfernt, und das Laufwerk wird nun mit einem einfachen umount-Befehl ausgehängt, ohne Fortschrittsdialog (b86d5c62c, c0dbdd9e5, 30d4a7d2d).

  • Das USB-Laufwerk des Boards wird nun nur noch zugeordnet, wenn die Firmware neu genug ist oder eine Markierungsdatei .openmv_disk vorhanden ist, was verhindert, dass die IDE das falsche Wechsellaufwerk in Beschlag nimmt (e464eaed4).

  • Die Reconnect-Logik wurde korrigiert, sodass das Auslösen einer Bootloader-/Löschoperation bei bestehender Verbindung nun zunächst sauber trennt und es dann erneut versucht, wodurch ein hängengebliebener Arbeitszustand vermieden wird (d953df62f).

  • Der Kommentar-/Whitespace-Stripper, der beim Senden von Skripten an die Cam verwendet wird, wurde als String-bewusste Zustandsmaschine neu geschrieben, sodass #-Zeichen innerhalb von Strings nicht mehr fälschlich als Kommentare interpretiert werden und nachgestellter Whitespace sowie Docstrings korrekt behandelt werden (24dff1b2f).

  • Die Behandlung von Übersetzungs-Strings für mehrere Verbindungs-/Terminal-Dialogmeldungen wurde korrigiert, sodass die eingebetteten Shell-Befehle (sudo adduser, pydfu-Installationsschritte) nicht mehr Teil des übersetzbaren Textes sind und korrekt dargestellt werden (b5705a57e).

Plattform- und Tool-Unterstützung

  • Qt-Creator-Basis: 4.0.2.

  • Das Board bzw. die Firmware der OpenMV Cam H7 Plus wurde von OPENMV4R in OPENMV4P (OMV4P_H7_32768_SDRAM) umbenannt, und die zugehörige Firmware wird unter dem neuen Namen mitgeliefert (c0dbdd9e5).

  • Der Anzeigename des H7-Plus-Boards wurde korrigiert, sodass er Unterstriche statt Leerzeichen verwendet (OpenMV_Cam_H7_Plus_(STM32H743_w/_SDRAM)) (75764132c).

  • Die mitgelieferte Firmware wurde im Verlauf des Releases aktualisiert und endet bei Version 3.5.2 für OPENMV2/3/4/4P (finale Anhebung in 15c07498c; frühere kumulative Anhebungen in 42ba8f5c4 auf 3.4.2, a99c2e3e1 auf 3.4.3, e26b90d79 auf 3.5.0 und 97b0f645a auf 3.5.1).

  • Versionen der mitgelieferten Firmware: OPENMV2 (Cam M4) 1.4.11, OPENMV3 (Cam M7) 1.4.11, OPENMV4 (Cam H7) 1.2.15, OPENMV4P (Cam H7 Plus) 1.2.15.

  • Die OpenMV-IDE-Version wurde von 2.2.1 auf 2.4.0 angehoben.

Breaking Changes

Das USB-Debug-Protokoll zum Lesen von Attributen wurde vom alten 16-Bit-Befehl ATTR_READ (0x8A) auf den neuen 32-Bit-Befehl ATTR_READ_2 (0xCA) umgestellt, und Attribut-, Wert- sowie Enable-Nutzdaten werden nun als 32-Bit-Longs gesendet; die IDE fragt beim Verbinden außerdem die Sensor-ID der Kamera ab. Dies setzt eine Firmware voraus, die das neue Protokoll implementiert. Die mitgelieferte Firmware 1.2.15 / 1.4.11 stellt es bereit, daher müssen ältere Kameras auf die neue Firmware geflasht werden, um eine Verbindung herstellen zu können.