v1.3.0¶
v1.3.0 überarbeitet die Kommunikationsschicht der Kamera rund um ein strukturiertes Befehls-/Antwortprotokoll und fügt sowohl für die IDE als auch für ihre gebündelten Ressourcen eine integrierte automatische Aktualisierung hinzu. Sie basiert auf Qt Creator 4.0.2 und enthält die OpenMV-Kamera-Firmware 2.0.0. Unter macOS und Linux erfordert das DFU-Flashen der Firmware nun eine einmalige Installation von Python sowie libusb und pyusb; siehe Breaking Changes.
Highlights¶
Überarbeitete Kommunikationsschicht. Der Code für Serial/USB-Debug wurde rund um ein strukturiertes Befehls-/Antwortprotokoll mit befehlsspezifischen Antwortlängen sowie Start-/Endwartezeiten neu aufgebaut, um zuverlässigere Vorgänge beim Verbinden, Skriptausführen, beim Framebuffer und beim Bootloader zu ermöglichen.
Integrierter Auto-Updater in der IDE. Die IDE prüft nun
openmv.ioauf eine neuere Version und bietet eine Download-Schaltfläche an; separat lädt und installiert sie aktualisierte Ressourcenpakete (Beispiele, Firmware, Dokumentation) und fordert anschließend zum Neustart auf.Firmware-Aktualisierung mit einem Klick. Die Firmware-Version in der Statusleiste ist nun eine anklickbare Schaltfläche, die die angeschlossene Kamera mit der gebündelten Firmware vergleicht und eine Aktualisierung mit einem Klick anbietet, wenn eine neuere Version verfügbar ist.
DFU-Firmware-Flashen auf jeder Plattform. Firmware kann jetzt unter Windows, macOS, Linux x86 und Linux x86_64 über DFU geflasht werden, und die Firmware-Auswahl akzeptiert neben
.binauch.dfu-Dateien.Automatischer DFU-Fallback. Wenn der serielle Bootloader während einer Firmware-Aktualisierung nicht erreicht werden kann, bietet die IDE nun an, stattdessen über den DFU-Bootloader der Kamera zu aktualisieren, und führt Sie durch das Setzen eines
BOOT/RST-Jumpers.
Neue Funktionen¶
Integrierter Updater in der IDE. Prüft
openmv.ioauf eine neuere IDE-Version und bietet eine Download-Schaltfläche, dieopenmv.io/downloadöffnet; außerdem lädt, entpackt und installiert sieopenmv-ide-resources-X.Y.Z.zip-Ressourcenpakete direkt in die IDE, bevor sie zum Neustart auffordert (8a1f92bb1, 194acd828, b0be97e3e).Anklickbare Firmware-Versions-Schaltfläche. Das Versionslabel in der Statusleiste wurde zu einem
QToolButton, der mit einemupdateCam()-Ablauf verbunden ist, der die gebündeltefirmware/firmware.txtliest, sie mit der angeschlossenen Kamera vergleicht und bei einer neueren Version eine Firmware Update mit optionalem Löschen des internen Dateisystems anbietet (b2ac8defe).Unterstützung von DFU-Dateien. Der Bootloader-/Firmware-Flash-Dialog akzeptiert nun neben
.binauch.dfu-Dateien und erzwingt beim Flashen einer.dfuein vollständiges Löschen des internen Dateisystems. Der Filter der Firmware-Auswahl wurde aufFirmware Binary (*.bin *.dfu)erweitert, und der erzwungene Löschvorgang für.dfuwurde in4ad2be5f9eingeführt; das stets aktivierte, deaktivierte Lösch-Kontrollkästchen, das sich automatisch anhand der gewählten Dateierweiterung umschaltet, wurde inb2ac8defeergänzt (4ad2be5f9, b2ac8defe).Automatischer DFU-Fallback bei Bootloader-Fehlern. Wenn eine
.bin-Firmware-Aktualisierung den seriellen Bootloader nicht starten kann, meldet die IDE nunUnable to connect to the bootloader!und bietet anschließend an, stattdessen über den DFU-Bootloader der Kamera zu aktualisieren. Dabei warnt sie, dass DFU das interne Flash-Dateisystem löscht, und führt Sie durch das Setzen einerBOOT/RST-Jumperbrücke und das erneute Verbinden, bevor sieDfuSeCommand.exe(Windows) ausführt (4ad2be5f9).HoG-Beispiel. Ein Visualisierungsbeispiel für Histogram of Oriented Gradients (
09-Feature-Detection/hog.py) wurde hinzugefügt, dasimg.find_hog()verwendet (b03a707f7).
Weitere Änderungen und Verbesserungen¶
Der alte improvisierte Code für Baudrate/Pakete wurde durch die Klassen
OpenMVPluginSerialPortCommand/Result, die Opcodes__USBDBG_*und__BOOTLDR_*sowie die Hilfsfunktionencommand()/commandResult()anstelle vonwrite()/readAll()/isOpen()ersetzt (b03a707f7, 141122e21, b2ac8defe, 1d72fe4bf, b4cf2fe43, c60936d5f).Die Installation des seriellen Port-Treibers unter Windows erfolgt nun unbeaufsichtigt/ohne Eingabeaufforderung. Die Treiberskripte
openmv.cmd/pybcdc.cmdwurden aufdpinst-basierte Installer anstelle des interaktivenInfDefaultInstallumgestellt, und der Installer für das Visual C++ Redistributable (vcr.cmd, dasvcredist_x86.exeundvcredist_x64.exeim Hintergrund ausführt) wurde hinzugefügt und korrigiert (a5a6e0590, 754d0776d, b0be97e3e, 452a29f0d, c051c6e30, ad1b674ef, 565f1eccd).
Fehlerbehebungen¶
Behoben wurde, dass Firmware-Flashen und Kommunikation innerhalb virtueller Maschinen fehlschlugen; außerdem wurden verschiedene Befehls-Timeouts sowie das Polling von Frame-Buffer/Tx-Puffer gelockert, sodass Verbinden und Ausführen robuster sind. Der Reprogram-Dialog weist nun darauf hin, dass es „may take up to 5 minutes“, und das Timeout des DFU-Prozesses wurde in
324f243f9von 240s auf 300s erhöht (c051c6e30, b0be97e3e, 1d72fe4bf, b4cf2fe43, 324f243f9, c60936d5f).Der Vergleich für verfügbare Firmware-/IDE-Aktualisierungen wurde korrigiert, sodass eine neuere Minor- oder Patch-Version nicht mehr fälschlicherweise auslöst, wenn ein höheres Feld gleich ist; außerdem wird nun verlangt, dass im Bootloader-Dialog vor dem Flashen eine gültige Datei ausgewählt ist (4ad2be5f9).
Datei-Handles (Boards-Liste, Firmware-/Versionsdateien) werden nach dem Lesen geschlossen, und das Padding der Firmware-Flash-Chunks wurde korrigiert, sodass auf
FLASH_WRITE_CHUNK_SIZEaufgefüllt wird; dadurch werden geleakte Handles und falsch aufgefüllte letzte Chunks bei Firmware-Aktualisierungen verhindert (4ad2be5f9).Das OpenMV-
Help-Menü und die Ausgabebereiche wurden korrigiert: Der Eintrag About OpenMV Cam kollidiert nicht mehr mit der plattformeigenen About-Rolle (AboutRole→ApplicationSpecificRole), und die Ausgabebereiche belegen nicht mehr die TastenkombinationenAlt/Cmd+ Zahl (a0694eac7).Beim Öffnen externer OpenMV-Weblinks (Foren, Download, Support) wird nun ein Fehlerdialog „Failed to open“ angezeigt, wenn die URL nicht gestartet werden kann, anstatt stillschweigend nichts zu tun (b0be97e3e).
Plattform- und Tool-Unterstützung¶
Qt-Creator-Basis: 4.0.2.
Gebündelte Kamera-Firmware: aktualisiert auf 2.0.0, mit neuer
firmware.bin/openmv.binund neu hinzugefügtenfirmware.dfu/bootloader.dfu/firmware.elf/bootloader.elffür OMV2 und OMV7.DFU-Flashen unter Windows wurde hinzugefügt unter Verwendung einer gebündelten ST-
DfuSeCommand.exe, des ST-DfuSe-USB-Treiberpakets (DfuSe v3.0.4.0 unter Win7/Win8, v3.0.5.0 unter Win8.1) und einesdfuse.cmd-Treiberinstallers (4ad2be5f9).DFU-Flashen unter macOS und Linux wurde von vorkompilierten
dfu-util-Binaries auf einen gebündeltenpydfu.py-Flasher umgestellt, wobei die IDE die erforderlichen libusb/pyusb-Installationsbefehle anzeigt.ac248c0ecfügte kurzzeitig Linux-x86_64-Binariesdfu-util/dfu-prefix/dfu-suffixhinzu, doch324f243f9entfernte sie dann alle zugunsten vonpydfu.py. Im finalen Release werden keinedfu-util-Binaries ausgeliefert;static.probündelt daspydfu-Datenverzeichnis für alle Nicht-Windows-Hosts, während Windows den gebündelten DfuSe-Ablauf verwendet (ac248c0ec, 324f243f9, 7837a07da).Linux-udev-Regeln wurden aktualisiert, um
SUBSYSTEM-Matching zu verwenden (Kamera VID 1209/PID abd1 tty und STM DFU 0483/df11), damit die Geräte- und DFU-Symlinks unter 32-Bit-Linux funktionieren; außerdem wurden Netzwerkanfragen mit Redirect-Folge für ältere Qt-Versionen abgesichert (194acd828).
Breaking Changes¶
Die gebündelten eigenständigen dfu-util-Binaries für macOS und Linux wurden entfernt und durch einen Python-pydfu.py-Flasher ersetzt. Unter macOS und Linux erfordert das DFU-Flashen der Firmware nun eine einmalige Installation von Python sowie libusb und pyusb (die IDE zeigt die genauen MacPorts-/HomeBrew-/apt-get-Befehle an). Windows verwendet weiterhin den gebündelten DfuSe-basierten Ablauf. Es gibt keine Brüche in der Skripting-API, und die Qt-Creator-4.0.2-Basis ist unverändert.