v4.4.0¶
v4.4.0 ist ein umfangreiches Modernisierungs-Release, das OpenMV IDE von seiner langjährigen Qt Creator 10.0.1-Basis auf Qt Creator 14.0.2 umstellt und dabei das vollständige OpenMV-Plugin sowie sämtliche Fork-Anpassungen auf der neueren Basis erneut anwendet. Darüber hinaus bündelt dieses Release einen eingebetteten Python-Language-Server für Offline-Codevervollständigung, aktiviert GitHub Copilot auf allen Plattformen, führt einen neuen benutzerdefinierten OpenMV-DFU-Bootloader ein und stellt OpenMV-Kameras auf eine neue 37C5 USB-Vendor-ID um. Die Basisänderung ist eine große interne Modernisierung, bricht jedoch keine Benutzerprojekte; siehe Breaking changes für die wenigen für Benutzer sichtbaren Workflow-Änderungen.
Highlights¶
Qt Creator 14.0.2-Rebase. Die IDE wechselt von Qt Creator 10.0.1 auf 14.0.2, wobei das gesamte OpenMV-Plugin und alle
// OPENMV-DIFF //-Anpassungen erneut auf der modernen Basis angewendet werden (d6c895be8, 1fa75b397).Eingebetteter Python-Language-Server. Die IDE liefert nun einen gebündelten
pylsp(mit astroid 3.3.5) aus und nutzt ihn automatisch, was eine Offline-Codevervollständigung für Python/MicroPython ohne separate pip-Installation unter Windows, macOS und Linux x86_64 ermöglicht (257addee0, 5a2b3e72f, 94470798d).GitHub Copilot auf allen Plattformen. Copilot ist integriert und standardmäßig aktiviert, mit einer gebündelten Node.js 20.18.0-Laufzeitumgebung für Windows, macOS und Linux, sodass es nicht länger auf ausgewählte Maschinen beschränkt ist, zusätzlich zu einem Startdialog zum Einschalten (bb07d582b, 1cb967c5a, b37e48040).
Neuer OpenMV-DFU-Bootloader. Ein vollständig implementierter benutzerdefinierter
openmv_dfu-Bootloader-Ablauf steuert Firmware-Updates übersettings.json, einschließlich eines Dialogs „board in DFU mode detected“, der die Auswahlmöglichkeiten neuestes Release installieren, bestimmte Firmware laden und Dateisystem löschen bietet, sowie einen Fallback-Bootloader-Pfad zur Wiederherstellung defekter Kameras (08b9d0676, 6a6a9351d, 6d78d6571).Unterstützung neuer Kameras. Fügt die Boards OpenMV Cam N6, RT1062 und AE3 hinzu und stellt Kameras auf die neue
37C5USB-Vendor-ID mit aktualisierten DFU-Treibern und udev-Regeln um (000ed8a87, f453bc945, 4a16e04c2, 6d78d6571).Zuverlässigere serielle Kommunikation. Umfangreiche Korrekturen der seriellen Kommunikation beheben verstümmelten Terminaltext und zufällige Verbindungsabbrüche bei TinyUSB-basierten Kameras (caeba6a16, 6cf122a3c).
Neue Funktionen¶
OpenMV-DFU-Bootloader. Ein neues
openmv_dfu-Bootloader-System mit dedizierten DFU-Treibern und einem Fallback-Bootloader-Mechanismus stellt defekte Kameras über verschiedene Firmware-Typen hinweg wieder her (6a6a9351d, 6d78d6571). Der Ablauf steuert Firmware-Updates übersettings.jsonund zeigt einen Dialog „board in DFU mode detected“ mit den Optionen neuestes Release installieren, bestimmte Firmware laden und Dateisystem löschen an (08b9d0676, ef19133b6, 9c59d113c).Board-Name in der Port-Auswahl. Der Dialog zur Auswahl des seriellen Ports prüft nun jeden Port und zeigt neben dem Port den erkannten Board-Namen an (z. B.
COM3: OpenMV Cam H7) statt eines bloßen Port-Namens (9837d6cb5).Editor mit Tabs. Das Tabbed-Editor-Plugin wurde wiederhergestellt und fügt über dem Editorbereich eine Reihe von Dokument-Tabs zum Wechseln zwischen geöffneten Dateien hinzu (c8519c09f); es speichert und stellt nun außerdem die Tab-Reihenfolge über Sitzungen hinweg wieder her (55ccfb207).
Python-Syntaxhervorhebung. Fügt für den Editor eine dedizierte Python-Syntaxhervorhebungsdefinition mit Regeln für String-Format, Float und Schlüsselwörter hinzu (9be46c0c3).
Weitere Änderungen und Verbesserungen¶
Refactoring des Firmware-Ladens. Der Code zum Laden von Firmware wurde in separate, typspezifische Bootloader-Handler aufgeteilt (OpenMV DFU, Arduino DFU, BOSSAC, i.MX, picotool), wobei eine Touch-to-Reset-PID-Behandlung für Arduino-DFU-Boards sowie explizite „Legacy“-Board-Varianten für Geräte mit alternativen VID/PID hinzugefügt wurden (9f465f9f8).
Schutzmechanismen für den STM32-ROM-Bootloader. Die IDE warnt nun oder blockiert das Laden von
firmware.dfu/openmv.dfuauf den STM32-ROM-Wiederherstellungs-Bootloader und empfiehlt ausschließlichbootloader.dfu, um ein Beschädigen von STM32H7-Boards zu vermeiden, die von einem Bug im Chip-ROM-Bootloader betroffen sind (c5ce0ae1a, e7cde1ec1).Automatische, stille Einrichtung des Python-LSP. Der Python-Language-Server installiert und aktualisiert sich nun automatisch ohne Infobar-Eingabeaufforderungen oder Konsolen-Spam (d89f5985f), und das System für Python-Autovervollständigung/Dokumentations-Hover wurde zu einer dedizierten OpenMV-Doc-Engine umgebaut, die die gebündelte HTML-Bibliotheksdokumentation parst, um Schlüsselworthervorhebung und Tooltips zu steuern (47e02873b, 4f9853f21, 82cefc931).
Erkennung des Python-Interpreters unter Linux. Die Interpreter-Erkennung unter Linux erfolgt nun automatisch, berücksichtigt nur Python-3-Interpreter aus
PATHund wählt den neuesten als einzigen Standard aus (214fdc758).Aufräumen der Python-Einstellungen. Die Gruppe zur Verwaltung pro Interpreter und die Seite Interpreters sind ausgeblendet, die Language Server Configuration ist unter einer
Python-Kategorie eingeordnet, und die ungenutzten Toolbar-Schaltflächen für REPL und Interpreter-Auswahl sind im Python-Editor ausgeblendet (d89f5985f). Unter Windows registriert die IDE nun automatisch die gebündelte eingebettetepython.exeals Standard-Interpreter, wobei der gebündelte Language-Server als bereits installiert behandelt wird (1d9ca003e, d89f5985f).Aufgeräumteres Profilverzeichnis. Die IDE schreibt keine ungenutzten Qt-Creator-Einstellungsdateien mehr (Geräte, Kits, Toolchains, Qt-Versionen) und öffnet Dateien direkt im Editor (3771b0107), durchsucht das System nicht mehr nach qmake/Qt-Versionen (42807f25f) und vermeidet das Laden ungenutzter Geräte-/Toolchain-/Kit-Mechanik sowie Startgeräusche (902a357de, b2666a35b).
Sicherere Updates. Beim Aktualisieren der IDE werden Benutzerressourcen nicht mehr überschrieben; nur die verwalteten Ressourcenordner (examples, firmware, html, models) werden entfernt und neu kopiert, wobei
micropython-headerszusätzlich entfernt wird (es wird separat installiert statt über diesen Pfad neu kopiert), sowie eine klarere Fehlermeldung, fallsfirmware/settings.jsonfehlt oder ungültig ist (b4b8c208d, 3255ba4fb).Schnellere DFU-Verbindung. Die Wartezeit für die DFU-Verbindung wurde reduziert, sodass Flashen und Verbinden schneller erfolgen (11d8c9fe3, 4700bf678).
Wiederhergestelltes OpenMV-Menü und UI-Anpassungen. Das verschlankte OpenMV-Menülayout wird erneut angewendet, wobei die Menüs Build und Debug ausgeblendet und Projektverwaltungsaktionen entfernt werden (7503f2bec); die Codevervollständigungs-Engine erlangt wieder die Klassen-/Methodenerkennung sowie Public-/Private-Schlüsselwortbereiche für die MicroPython-Autovervollständigung (55fc348ea); die ANSI-Farbdarstellung im Terminal wird mit themenbewussten Hell-/Dunkel-Werten und Unterstützung für Cursor-back-Escapes erneut angewendet (c6787a27a); und die Toolbar des Bildbetrachters wird mit Auflösungs-/Zoom-Tooltips und einer verschobenen Fit-to-Screen-Aktion angepasst (734fec693).
Wiederhergestellte gebündelte Ressourcen. Flashing-Tools, DFU-Treiber, Firmware und der vollständige Beispiel-/Skriptbaum werden nach der Ausdünnung durch den Rebase in die Share-Ressourcen wiederhergestellt (33c8354bc), und OpenMVs benutzerdefinierte Logik für den Anwendungsstart wird erneut angewendet: Sie setzt das
TextEditor-Plugin zwingend voraus (die Prüfungen für die OpenMV- und TabbedEditor-Plugins sind vorhanden, aber deaktiviert), installiert einen benutzerdefinierten Qt-Message-Handler, entfernt die Befehlszeilenoptionen-client/-pid/-blockund erzwingt Single-Instance-Verhalten (06c788f3d).Fehler bei fehlendem Plugin. Die Anwendung bricht nun mit einer klaren Fehlermeldung hart ab, wenn die erforderlichen Plugins fehlen oder deaktiviert sind, das OpenMV-Plugin erhielt eine Copilot-Abhängigkeit, und mehrere Texteditor-Optionen (
Prefer single line commentsund die Kommentarpositions-Auswahl in den Behavior-Einstellungen sowieHighlight selectionin den Display-Einstellungen) sind ausgeblendet (1bc02b1f3).Kürzere serielle Timeouts. Die Timeouts des seriellen Protokolls wurden für schnelleres Fehler-Feedback verkürzt (Lesen von 10000 auf 5000 ms, Schreiben von 6000 auf 3000 ms), wobei der dokumentierte Standardwert
-override_read_timeoutentsprechend aktualisiert wurde (641385af4).Wiederherstellung blockierter Ports. Mitten in einem Befehl steckengebliebene serielle Ports werden nun mit einer
GET_STATE-Abfrage (konfigurierbar über die Get-State-Einstellung) statt mit einer Skript-Lauf-Abfrage wiederhergestellt (a8598f550).Reihenfolge im Einstellungsdialog. Der Einstellungsdialog blendet das Kontrollkästchen für die alphabetische Kategoriesortierung aus, sodass die Seitenliste in OpenMVs beabsichtigter Reihenfolge bleibt (1cb967c5a).
Vereinfachte Copilot-Einstellungen. Die Copilot-Einstellungsseite ist auf die Anmelde-/Auth- und Proxy-Steuerungen reduziert, wobei die Optionen Copilot aktivieren, Node.js-Pfad, Dist-Pfad und Autovervollständigung ausgeblendet sind (1cb967c5a).
Fehlerbehebungen¶
Behebt größere Probleme der seriellen Kommunikation, indem das Timeout für serielle Lese-Stalls verzehnfacht und ein
GET_STATE-basierter Unstuck-Pfad deaktiviert wurde, der den Text des seriellen Terminals verstümmelte (caeba6a16).Behebt zufällige serielle Verbindungsabbrüche bei TinyUSB-basierten Kameras, indem ein Frame-Dump-Unlock-Befehl ausgegeben und die Behandlung von Lese-Stalls überarbeitet wird, statt die Verbindung zu trennen (6cf122a3c).
Machte die
get_state-Behandlung der Kamera tolerant gegenüber kurzen/unvollständigen Antworten und stellte sicher, dass gepufferter Text des seriellen Terminals während der Fehlerwiederherstellung geleert wird, sodass Log-Ausgaben nicht verloren gehen (c8b4248a6, 247a779dd).Korrigierte die Flash-Partitions-/Alt-Setting-Nummern des DFU-Bootloaders für das Laden der OpenMV-Cam-Firmware (a8700d12d).
Stellte alle Bootloader wieder her, indem ein neues
hidden-Board-Flag berücksichtigt, die Seriennummernfilterung auf inverse Filter umgestellt und dem UF2-Eintrag des Arduino Nano RP2040 Connect eine funktionierende picotool-Konfiguration gegeben wurde (63cee629b).Behob, dass sich der Dialog zur Auswahl des Bootloader-Board-Typs den falschen Wert merkte, indem separate Verlaufsschlüssel für menschenlesbare und IMX-Board-Typ-Auswahlen verwendet werden (a3325af32).
Behob die Berechnung von Zeitstempel/Bildrate beim Video-Transcoding (Save Video), indem das durchschnittliche Bildintervall in Mikrosekunden berechnet, ein neues v21
ImageWriter-Zeitformat unterstützt und gegen Null-Pixmaps während der Konvertierung abgesichert wird (f5c75c749, f8f762b3e).Behob einen Absturz in der Histogramm-/Framebuffer-Ansicht, wenn eine leere (Null-)Pixmap empfangen wurde, indem
pixmapUpdate()gegen Null-Daten abgesichert wurde (622cf5ea8).Stellte Hover-Annotations-Tooltips im Texteditor wieder her, sodass das Überfahren von Textmarkierungen erneut den Annotations-Tooltip anzeigt (1852d18e1).
Verhinderte, dass die Info-Dialoge für GitHub Copilot und LED-Farben auftauchen, während die IDE mit Verbinden oder Flashen beschäftigt ist (f8f762b3e).
Fügte Absturzschutz im Language Client hinzu, sodass die Behandlung von Dokumentinhaltsänderungen die IDE in Grenzfällen nicht mehr zum Absturz bringt (7926ffe4c).
Behob, dass Prüfungen des Python-Language-Servers ein sauberes Herunterfahren der IDE verhinderten, indem das Python-Plugin asynchron auf laufende Prüfungen wartet, bevor es beendet wird (9ff6c7936).
Behob die Python-Autovervollständigung unter Linux: Der Language Client verwurzelt sich in den gebündelten
micropython-headers, und die redundante Vervollständigungs-Popup-Aktion in der Editor-Toolbar ist ausgeblendet (d37f66a9a, 56e748f9d, 016fa73eb).Behob die Behandlung temporärer/ungespeicherter Dateien, sodass Save As das Anfangsverzeichnis des Dateidialogs verwendet und der Dialog Save Items sowie der Diff-Editor keine internen temporären Dateipfade mehr anzeigen (b7f0bb378, c8e7b6b8f, 6b128c34c).
Beim Speichern eines unbenannten/temporären Puffers setzt der Save-As-Dialog nun standardmäßig einen ordnungsgemäßen
.py-Dateinamen statt eines leeren Namens (3001fdfff).Temporäre/unbenannte Dokumente werden nun bei Änderung zum Speichern angeboten, vom Autosave ausgeschlossen und korrekt über Save-As geleitet (f87b71cf0).
Behob die Reihenfolge im Menü Recent Files, sodass das erneute Öffnen einer bereits gelisteten Datei diese nicht mehr neu anordnet, und der Dateidialog verwendet nun standardmäßig das Projektverzeichnis (d49c0c993).
Behob die Textdarstellung in Meldungsfeldern, indem auf ankreuzbaren Meldungsfeldern nicht mehr das Rich-Text-Format erzwungen wird, sodass Rohtext korrekt angezeigt wird (0c565502f).
Behob die Tooltip-Farben, sodass Tooltips im hellen Theme korrekt dargestellt werden (35cbf077b).
Allgemeine Stabilitäts- und Bereinigungskorrekturen in Qt Creator über die Kerneinstellungen, den Language Client, die MSVC-Toolchain, den Project Explorer und die Python-Plugins hinweg (836b163dc, 134f43cb8).
Korrigierte den Ordnernamen der gebündelten Firmware für das Arduino Nano 33 BLE Sense (b1d8ac227) und behob die Linux-udev-Regel für die Produkt-ID des AE3-DFU-Bootloaders, indem
96E3zu kleingeschriebenem96e3korrigiert wurde, damit udevs case-sensitiveridProduct-Abgleich funktioniert (2cd43c96b). Die Linux-udev-Regel des AE3-DFU-Bootloaders wurde außerdem für denopenmvdfu-Symlink auf die Produkt-ID37c5:afe3aktualisiert (b99555637).
Plattform- und Tool-Unterstützung¶
Qt-Creator-Basis: 14.0.2 (von 10.0.1 rebased).
OpenMV Cam N6 wird nun unterstützt (VID:PID 37C5:1206, DFU-Bootloader 37C5:9206), einschließlich Firmware-Einstellungen, eines Windows-DFU-Treibers und einer Linux-udev-Regel (000ed8a87, 1b950c8c6).
OpenMV Cam RT1062 wird nun unter einer neuen benutzerdefinierten USB-VID/PID (37C5:1060) unterstützt, einschließlich DFU-Treibern, udev-Regeln und beibehaltener Legacy-Einträge 1209:ABD1 für ältere Geräte (f453bc945, d55d6441f).
OpenMV Cam AE3 wird nun unterstützt, einschließlich Windows-DFU-Treibern, ihres Firmware-/Config-Image-Baums und USB-VID/PID (aktualisiert auf 37C5:16E3 Runtime / 37C5:96E3 Bootloader) (4a16e04c2, cc52e76f5, 3f75e7de4, 8eb80b129).
Neues USB-VID/PID-System: OpenMV-Kameras wechseln auf die Vendor-ID
37C5mit neuen Bootloader-/DFU-IDs (z. B. 37C5:1202/9202 M4, 1203/9203 M7, 1204/9204 H7, 124A/924A H7 Plus, 1205/9205), wobei alte 1209:ABD1-Boards als Legacy umbenannt werden, während weiterhin sowohl alte als auch neue Firmware unterstützt wird (6d78d6571, 6a6a9351d, 500b1a0bf).Der Bildsensor PAG7936 wurde der Liste der erkannten Sensoren hinzugefügt (f9e3f3461).
Eingebetteter Python 3.13-Interpreter gebündelt für macOS, Linux x86_64, Linux arm64 und Linux arm (9133b1516), mit nativen
libpython3.13- undujson-Shared-Libraries (d3aa663d8, a2cb24e74).Gebündelter Language-Server:
pylspmit astroid 3.3.5 unter Windows, macOS und Linux x86_64 (257addee0). Der Windows-Build liefert ein eingebettetes CPython mit python-lsp-server 1.12.0, jedi 0.17.2, docstring_to_markdown 0.15, pip 24.2 und distlib 0.3.9 aus (9b6434602, 069807cd3, 5f2e45196, 3b6c6c312).Gebündelte Node.js 20.18.0 „Iron“ LTS-Laufzeitumgebung für Windows, macOS, Linux arm64, Linux x64 und Linux armv7, um GitHub Copilot auf allen Plattformen zu ermöglichen (bb07d582b, 6db78bf45, 1cb967c5a).
Alif Security Toolkit mit signierten Boot-/System-Package-Binärdateien und Benutzerhandbuch, gebündelt für Windows, macOS und Linux x86_64 zur Bereitstellung Alif-basierter OpenMV-Kameras (z. B. AE3) (f63851be3).
Linux-Desktop-Integration ist wiederhergestellt, installiert einen Anwendungs-Desktop-Eintrag und AppStream-Metadaten und registriert den Python-MIME-Typ (
.py) (3fa25f571).
Breaking changes¶
Es wurde keine Scripting-API geändert. Die folgenden für Benutzer sichtbaren Workflow- und Verhaltensänderungen können bemerkt werden:
Neue USB-Vendor-ID. OpenMV-Kameras migrieren auf die Vendor-ID
37C5mit neuen Produkt- und DFU-Bootloader-IDs; Boards mit der alten1209:ABD1-VID werden nun als „Legacy“ gekennzeichnet. Die IDE unterstützt alte und neue Firmware gleichzeitig, aber Linux-Benutzer müssen die aktualisierten udev-Regeln neu installieren, damit die neuen IDs erkannt werden.Legacy-Board-Einträge ausgeblendet. Legacy-Varianten der Boards OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal werden nun über ein neues
legacy-Board-Flag (verschieden vom bereits existierendenhidden-Flag) aus der Firmware-/Board-Auswahlliste ausgeblendet, sodass Benutzer, die speziell einen Legacy-Board-Eintrag benötigen, diesen nicht mehr im Dropdown sehen (6d78d6571).Kürzere serielle Timeouts. Das Standard-Lese-Timeout für Antworten sinkt von 10000 ms auf 5000 ms und das Schreib-Timeout von 6000 ms auf 3000 ms (der Standardwert
-override_read_timeoutist nun mit 5000 dokumentiert). Langsame Boards/Verbindungen, die auf die längeren Standardwerte angewiesen waren, können früher in ein Timeout laufen.
Der Rebase auf Qt Creator 14.0.2 ist eine große interne Modernisierung, bricht jedoch keine Benutzerprojekte.