v4.2.2

v4.2.2 adaugă suport pentru imagini PNG (decodare/codare prin lodepng), un încărcător de modele integrate bazat pe tabel, suport OV5640 pentru Portenta, o actualizare TensorFlow Edge Impulse și ulab 4.0. API-ul de configurare RPC CAN s-a schimbat — citiți modificările incompatibile de mai jos.

Aspecte importante

  • Suport PNGImage.to_png(), image.PNG și citire/scriere a fișierelor PNG.

  • tf.load_builtin_model() — modele integrate bazate pe tabel, care pot fi înlocuite sau adăugate în momentul compilării.

  • Portenta H7 — suport pentru camera OV5640 (cu autofocus).

  • MicroPython/ulab — ulab actualizat la 4.0.0.

  • Incompatibil: API-ul de configurare RPC CAN s-a schimbat — vedeți modificările incompatibile.

Funcționalități noi

  • Formatul de imagine PNG — o nouă metodă Image.to_png(), o constantă image.PNG / PIXFORMAT_PNG, încărcare/salvare a fișierelor PNG (citire/scriere .png) și ieșire PNG în conversiile image.to(), prin codecul lodepng integrat.

  • tf.load_builtin_model(path) — încarcă un model integrat în firmware și returnează un tuplu (labels, net); modelele integrate sunt acum bazate pe tabel, astfel încât pot fi înlocuite sau adăugate în momentul compilării.

Alte modificări și îmbunătățiri

  • TensorFlow / Edge Impulse — biblioteca de inferență inclusă a fost actualizată la Edge Impulse ei-V2.5.0, modelul person_detection a fost mutat în tabelul de modele integrate, iar operatorii TensorFlow lipsă au fost adăugați în toate compilările Cortex-M0+/M4/M7/M55, astfel încât rulează mai multe modele Edge Impulse.

  • ulab actualizat la 4.0.0.

  • Deschiderea portului serial virtual USB la 1200 bps declanșează acum o resetare prin atingere în stil Arduino, în bootloader.

  • Firmware-ul modulului WiFi WINC1500 a fost actualizat la 19.7.6 (împreună cu scriptul de actualizare), iar acum raportează versiunea reală a driverului gazdă.

  • Portul RP2 afișează „MPY: soft reboot” și a primit inițializare/de-inițializare UART.

Remedieri de erori

  • S-a corectat dimensiunea tamponului de cadre brut (frame buffer) al Arduino Nano RP2040 Connect și ID-ul de produs USB al Arduino Nicla Vision (enumerare USB corectă).

Suport hardware și plăci

  • Arduino Portenta H7 — suport pentru camera OV5640 (cu autofocus); GC2145 este dezactivat pe Portenta.

  • Arduino Nano RP2040 Connect — configurarea memoriei și șabloane pentru un sistem de fișiere nou.

  • WiFi Shield (WINC1500) — firmware actualizat la 19.7.6.

Modificări incompatibile de API

Modificări de API vizibile pentru utilizator între v4.2.1 și v4.2.2. Domeniu: module C Python din modules/ și biblioteci Python din scripts/libraries/.

Fiecare modificare este etichetată cu impactul său:

  • minor — API restrâns; afectează doar scripturile care l-au folosit.

  • comportament — același API, rezultate diferite; reverificați scripturile reglate.

Modificările sunt grupate după impact, în această ordine. Fiecare hash de commit trimite la diff-ul său pe GitHub.

API-ul de configurare RPC CAN (minor)

În biblioteca rpc, argumentul de tip cuvânt-cheie CAN sampling_point din rpc_can_master / rpc_can_slave a fost redenumit sample_point (pentru a corespunde cu MicroPython din amonte), iar funcția auxiliară de configurare manuală a temporizării de biți CAN a fost eliminată — magistrala CAN este acum configurată prin CAN(..., baudrate=, sample_point=). Scripturile care transmiteau sampling_point sau se bazau pe vechiul calcul al temporizării de biți trebuie actualizate.

Commit-uri: b565eca58, 06d716986

image.format() și imaginile comprimate (comportament)

Cu calea unificată pentru imagini comprimate adăugată pentru PNG, image.format() returnează acum PIXFORMAT_INVALID pentru un format necunoscut, iar indexarea / iterarea / afișarea imaginilor comprimate acoperă acum atât PNG, cât și JPEG. Codul care inspecta valoarea de retur anterioară pentru formate necunoscute ar trebui reverificat.

Commit: f12a4659c

Listă de verificare pentru migrare

Pentru o portare curată la v4.2.2: redenumiți RPC CAN sampling_pointsample_point și eliminați orice configurare manuală a temporizării de biți CAN (modificarea RPC CAN), și reverificați orice cod care inspecta image.format() pentru formate necunoscute (modificarea format()).