v4.5.9

v4.5.9 bringt Roh-Vorschau-Streaming für Boards ohne Hardware-JPEG-Encoder, Hardware-Sensor-Cropping zur Freigabe von mehr RAM, schnelleres Helium-beschleunigtes Debayering und eine Reihe von Kamera-/USB-Debug-Korrekturen. Es ändert außerdem die AprilTag-Ergebnis-API und den Standardsatz der AprilTag-Familien, lesen Sie daher die Breaking Changes weiter unten.

Höhepunkte

  • Roh-Vorschau-Streaming — Boards ohne Hardware-JPEG-Encoder können jetzt herunterskalierte Roh-Einzelbilder an die IDE/den Host senden, statt bei der Vorschau zu scheitern.

  • Hardware-Sensor-Cropping — das Setzen einer kleineren Frame-Größe reduziert jetzt den Speicher pro Puffer und gibt RAM für fb_alloc() frei.

  • Schnelleres Debayering — die Bayer→RGB-/Graustufen-Konvertierung ist jetzt auf Cortex-M55-Boards mit Helium-SIMD beschleunigt.

  • Breaking: das AprilTag-Ergebnisobjekt wurde auf Attributzugriff umgestellt und der Standardsatz der AprilTag-Familien wurde reduziert (siehe die AprilTag-Änderungen und die AprilTag-Familien-Änderung).

Neue Funktionen

  • Roh-Vorschau-Streaming — Boards ohne Hardware-JPEG-Encoder können JPEG umgehen und herunterskalierte Roh-Einzelbilder (begrenzt auf ~60 KB) an die IDE/den Host streamen, sodass die Live-Vorschau auf diesen Boards funktioniert.

Weitere Änderungen und Verbesserungen

  • Hardware-Cropping ist jetzt auf allen STM32-/NXP-Boards aktiviert (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). Wenn eine Frame-Größe oder ein Fenster gesetzt wird, wird der Speicher pro Puffer auf die zugeschnittene Größe reduziert, wodurch mehr RAM für fb_alloc() frei wird.

  • Schnelleres Debayering — die Bayer→RGB565-/Graustufen-Konvertierung ist jetzt auf Cortex-M55-Boards (z. B. RT1060) mit ARM Helium/MVE-SIMD beschleunigt, mit einem gemeinsam genutzten SIMD-JPEG-Encoder-Pfad.

  • Schnelleres IDE-Debugging — der Debugger überträgt Daten jetzt nach Möglichkeit direkt aus dem USB-Stack und vermeidet so eine zusätzliche Kopie.

  • MicroPython-Submodul aktualisiert — Boards können den TinyUSB-CDC-Puffer in der Größe anpassen, dazu GC- und Build-Regel-Korrekturen.

Fehlerbehebungen

Kamera und Sensoren:

  • Korrektur des OV7725-Bayer-/CFA-Musters (GBRG → BGGR), wodurch die debayerte Farbausgabe auf OV7725-Kameras korrigiert wird; die OV7725 meldet jetzt das Bayer-Pixelformat, und Bayer-only-Sensoren melden jetzt eine Quelltiefe von 1 Byte pro Pixel.

  • Behebung der Berechnung der Roh-/Bayer-Framebuffer-Größe.

Maschinelles Lernen:

  • TensorFlow Lite Micro verwendet jetzt den freien Speicher des GC-Heaps bei der Dimensionierung der temporären Tensor-Arena, wodurch Allokationsfehler beim Modell-Laden auf Boards mit begrenztem Framebuffer-Speicher verhindert werden.

Host / IDE:

  • Behebung der USB-Debug-CDC-Pufferbehandlung auf TinyUSB-Boards für zuverlässigeren seriellen/Debug-Durchsatz.

  • tools/pyopenmv: RGB565-Bytereihenfolge korrigiert, ein scale-Argument hinzugefügt, und das Framebuffer-Tool meldet jetzt Bildgröße/-format.

Hardware- und Board-Unterstützung

  • OV7725 meldet jetzt das Bayer-Pixelformat (korrekte Roh-/CFA-Behandlung).

  • Hardware-Cropping über die gesamte STM32-/NXP-Board-Reihe aktiviert.

Breaking-API-Änderungen

Für Benutzer sichtbare API-Brüche zwischen v4.5.8 und v4.5.9. Umfang: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.

Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:

  • minor — schmale API; betrifft nur Skripte, die es verwendet haben.

  • behavior — gleiche API, andere Ergebnisse; getunte Skripte erneut prüfen.

Die Änderungen sind in dieser Reihenfolge nach Auswirkung gruppiert. Wenn Sie nur Ihren Code portieren möchten, springen Sie zur Migrations-Checkliste am Ende. Jeder Commit-Hash verlinkt auf seinen Diff auf GitHub.

AprilTag-Ergebnisobjekte und set_buffers (minor)

AprilTag-Ergebnisse von find_apriltags() stellen ihre Daten jetzt als Attribute statt als Methoden bereit — verwenden Sie tag.cx, tag.cy, tag.rotation, tag.family, tag.corners statt tag.cx(), tag.family() usw. Neue Accessoren name (Familienname als String) und Float-genaue cxf / cyf wurden hinzugefügt.

Davon getrennt änderte sich die automatische Video-Puffer-Konfiguration: set_buffers ersetzt auto_adjust — übergeben Sie -1, um bis zu drei Puffer in Frame-Größe zu verwenden (oder so viele, wie passen), und 1, um den gesamten Framebuffer zu verwenden. Die Puffer-Dimensionierung ist jetzt Bits-pro-Pixel-bewusst, sodass für 1-bpp-Formate mehr Puffer allokiert werden können.

Commits: c0d4759f8, 7b36e4ef6

ble_advertising und RPC-über-Netzwerk entfernt (minor)

Die Hilfsbibliothek ble_advertising und das Beispiel ble_temperature.py wurden entfernt — verwenden Sie stattdessen aioble (ein aioble-Temperaturbeispiel ist beigefügt). Die RPC-Netzwerk-Master-/Slave-Klassen wurden aus rpc.py entfernt.

Commits: 6513276c1, 44a7e579d

AprilTag-Familien standardmäßig deaktiviert (behavior)

AprilTag-Familien sind jetzt einzeln zur Compile-Zeit auswählbar, und die ungenutzten sind standardmäßig deaktiviert. Auf Standard-Boards erkennt find_apriltags() jetzt nur noch die Familie TAG36H11, sofern die Firmware nicht mit aktivierten anderen Familien neu gebaut wird. Skripte, die auf einem Standard-Build auf andere Familien (TAG16H5, TAG25H9, …) angewiesen sind, hören stillschweigend auf, sie zu erkennen.

Commit: effe12f2c

Migrations-Checkliste

Für eine saubere Portierung auf v4.5.9 ist typischerweise folgende Arbeit nötig:

  1. Den AprilTag-Ergebniszugriff von Methodenaufrufen auf Attribute umstellen (tag.cx()tag.cx) und auto_adjust auf set_buffers umstellen (die AprilTag-/Puffer-Änderungen).

  2. ble_advertising durch aioble ersetzen und jegliche RPC-Netzwerk-Master-/Slave-Nutzung entfernen (die Entfernungen).

  3. Wenn Sie auf einem Standard-Build andere AprilTag-Familien als TAG36H11 verwenden, beachten Sie, dass sie standardmäßig nicht mehr erkannt werden (die AprilTag-Familien-Änderung).