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;
connectClickedruft auf V3-Boards stetsbootloaderQSPIFLayoutauf, führtbootloaderQSPIFErasejedoch nur aus, wennforceFlashFSErasegesetzt 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 Colorshinzu, der beim ersten Start nach einer kurzen Verzögerung erscheint, wennhelloworld_1.pydas geöffnete Dokument ist, und der die Zustände der integrierten LED erklärt (blinkendes Grün = Bootloader läuft, Blau =main.pyläuft, Weiß = Panic bei Hardware-Fehler); ein Kontrollkästchen „Don’t show this message again.“ speichert das Ausblenden dauerhaft über eineDONT_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ägeLabel Files (*.txt)undAll Files(ad1aa98f0, 0ffa82958, c0dbdd9e5).Umschaltung der Debug-Protokoll-Version teilt die seriellen Befehle
GetAttribute,SetAttribute,FBEnableundJPEGEnablezur 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 Ordner32-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.pygeschrieben 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
fuseblkeingebundene 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
intauf 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 einfachenumount-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_diskvorhanden 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
OPENMV4RinOPENMV4P(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.