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 über settings.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 37C5 USB-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 über settings.json und 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.dfu auf den STM32-ROM-Wiederherstellungs-Bootloader und empfiehlt ausschließlich bootloader.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 PATH und 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 eingebettete python.exe als 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-headers zusätzlich entfernt wird (es wird separat installiert statt über diesen Pfad neu kopiert), sowie eine klarere Fehlermeldung, falls firmware/settings.json fehlt 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/-block und 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 comments und die Kommentarpositions-Auswahl in den Behavior-Einstellungen sowie Highlight selection in 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_timeout entsprechend 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 96E3 zu kleingeschriebenem 96e3 korrigiert wurde, damit udevs case-sensitiver idProduct-Abgleich funktioniert (2cd43c96b). Die Linux-udev-Regel des AE3-DFU-Bootloaders wurde außerdem für den openmvdfu-Symlink auf die Produkt-ID 37c5:afe3 aktualisiert (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 37C5 mit 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- und ujson-Shared-Libraries (d3aa663d8, a2cb24e74).

  • Gebündelter Language-Server: pylsp mit 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 37C5 mit neuen Produkt- und DFU-Bootloader-IDs; Boards mit der alten 1209: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 existierenden hidden-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_timeout ist 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.