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ützung —
Image.to_png(),image.PNGsowie 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, eineimage.PNG/PIXFORMAT_PNG-Konstante, das Laden/Speichern von PNG-Dateien (.pnglesen/schreiben) sowie PNG-Ausgabe beiimage.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.
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_point → sample_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).