v4.2.2

v4.2.2 fügt PNG-Bildunterstützung (Dekodierung/Kodierung über lodepng), einen tabellengesteuerten Loader für integrierte Modelle, OV5640-Unterstützung für das Portenta, ein Edge-Impulse-TensorFlow-Update und ulab 4.0 hinzu. Die RPC-CAN-Konfigurations-API hat sich geändert — lesen Sie die nachfolgenden Breaking Changes.

Höhepunkte

  • PNG-UnterstützungImage.to_png(), image.PNG sowie das Lesen/Schreiben von PNG-Dateien.

  • tf.load_builtin_model() — tabellengesteuerte integrierte Modelle, die zur Build-Zeit ersetzt oder ergänzt werden können.

  • Portenta H7 — OV5640-Kameraunterstützung (mit Autofokus).

  • MicroPython/ulab — ulab auf 4.0.0 aktualisiert.

  • Breaking: Die RPC-CAN-Konfigurations-API hat sich geändert — siehe die Breaking Changes.

Neue Funktionen

  • PNG-Bildformat — eine neue Image.to_png()-Methode, eine image.PNG / PIXFORMAT_PNG-Konstante, das Laden/Speichern von PNG-Dateien (.png lesen/schreiben) sowie PNG-Ausgabe bei image.to()-Konvertierungen, über den integrierten lodepng-Codec.

  • tf.load_builtin_model(path) — lädt ein in der Firmware integriertes Modell und gibt ein (labels, net)-Tupel zurück; integrierte Modelle sind jetzt tabellengesteuert, sodass sie zur Build-Zeit ersetzt oder ergänzt werden können.

Weitere Änderungen und Verbesserungen

  • TensorFlow / Edge Impulse — die mitgelieferte Inferenzbibliothek wurde auf Edge Impulse ei-V2.5.0 aktualisiert, das person_detection-Modell wurde in die Tabelle der integrierten Modelle verschoben, und fehlende TensorFlow-Operatoren wurden über alle Cortex-M0+/M4/M7/M55-Builds hinweg ergänzt, sodass mehr Edge-Impulse-Modelle lauffähig sind.

  • ulab auf 4.0.0 aktualisiert.

  • Das Öffnen des virtuellen seriellen USB-Ports mit 1200 bps löst jetzt einen Reset im Arduino-Stil in den Bootloader aus.

  • Die Firmware des WINC1500-WiFi-Moduls wurde auf 19.7.6 aktualisiert (mit dem Updater-Skript), und sie meldet jetzt die tatsächliche Host-Treiber-Version.

  • Der RP2-Port gibt „MPY: soft reboot“ aus und hat UART-Init/De-Init erhalten.

Fehlerbehebungen

  • Behebung der Rohgröße des Framebuffers beim Arduino Nano RP2040 Connect und der USB-Produkt-ID der Arduino Nicla Vision (korrekte USB-Enumeration).

Hardware- und Board-Unterstützung

  • Arduino Portenta H7 — OV5640-Kameraunterstützung (mit Autofokus); der GC2145 ist auf dem Portenta deaktiviert.

  • Arduino Nano RP2040 Connect — Speicherkonfiguration und Vorlagen für ein frisches Dateisystem.

  • WiFi Shield (WINC1500) — Firmware auf 19.7.6 aktualisiert.

Breaking API-Änderungen

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

Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:

  • minor — eng begrenzte API; betrifft nur Skripte, die sie verwendet haben.

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

Die Änderungen sind in dieser Reihenfolge nach Auswirkung gruppiert. Jeder Commit-Hash verlinkt auf seinen Diff auf GitHub.

RPC-CAN-Konfigurations-API (minor)

In der rpc-Bibliothek wurde das CAN-Schlüsselwortargument sampling_point von rpc_can_master / rpc_can_slave in sample_point umbenannt (passend zum vorgelagerten MicroPython), und der manuelle Helfer für das CAN-Bit-Timing wurde entfernt — der CAN-Bus wird jetzt über CAN(..., baudrate=, sample_point=) konfiguriert. Skripte, die sampling_point übergeben oder sich auf die alte Bit-Timing-Berechnung verlassen haben, müssen aktualisiert werden.

Commits: b565eca58, 06d716986

image.format() und komprimierte Bilder (behavior)

Mit dem für PNG hinzugefügten vereinheitlichten Pfad für komprimierte Bilder gibt image.format() jetzt PIXFORMAT_INVALID für ein unbekanntes Format zurück, und die Indizierung / Iteration / Ausgabe komprimierter Bilder deckt nun PNG sowie JPEG ab. Code, der den bisherigen Rückgabewert für unbekannte Formate ausgewertet hat, sollte erneut geprüft werden.

Commit: f12a4659c

Migrations-Checkliste

Für eine saubere Portierung auf v4.2.2: Benennen Sie RPC-CAN sampling_pointsample_point um und entfernen Sie jede manuelle CAN-Bit-Timing-Einrichtung (die RPC-CAN-Änderung), und prüfen Sie jeden Code erneut, der image.format() auf unbekannte Formate hin ausgewertet hat (die format()-Änderung).