v4.2.2

v4.2.2 dodaje obsługę obrazów PNG (dekodowanie/kodowanie za pomocą lodepng), tabelaryczny mechanizm ładowania modeli wbudowanych, obsługę OV5640 na Portenta, aktualizację Edge-Impulse TensorFlow oraz ulab 4.0. Zmieniło się API konfiguracji RPC CAN — przeczytaj poniższe zmiany łamiące zgodność.

Najważniejsze zmiany

  • Obsługa PNGImage.to_png(), image.PNG oraz odczyt/zapis plików PNG.

  • tf.load_builtin_model() — tabelaryczne modele wbudowane, które można podmieniać lub dodawać w czasie kompilacji.

  • Portenta H7 — obsługa kamery OV5640 (z autofokusem).

  • MicroPython/ulab — ulab zaktualizowany do 4.0.0.

  • Zmiana łamiąca zgodność: zmieniło się API konfiguracji RPC CAN — zobacz zmiany łamiące zgodność.

Nowe funkcje

  • Format obrazu PNG — nowa metoda Image.to_png(), stała image.PNG / PIXFORMAT_PNG, ładowanie/zapisywanie plików PNG (odczyt/zapis .png) oraz wyjście PNG w konwersjach image.to(), dzięki zintegrowanemu kodekowi lodepng.

  • tf.load_builtin_model(path) — ładuje model wbudowany w oprogramowanie układowe i zwraca krotkę (labels, net); modele wbudowane są teraz tabelaryczne, więc można je podmieniać lub dodawać w czasie kompilacji.

Inne zmiany i usprawnienia

  • TensorFlow / Edge Impulse — dołączona biblioteka wnioskowania została zaktualizowana do Edge Impulse ei-V2.5.0, model person_detection został przeniesiony do tabeli modeli wbudowanych, a brakujące operatory TensorFlow zostały dodane we wszystkich kompilacjach Cortex-M0+/M4/M7/M55, dzięki czemu działa więcej modeli Edge Impulse.

  • ulab zaktualizowany do 4.0.0.

  • Otwarcie wirtualnego portu szeregowego USB z prędkością 1200 b/s wyzwala teraz reset dotykowy w stylu Arduino do bootloadera.

  • Oprogramowanie układowe modułu WiFi WINC1500 zostało zaktualizowane do 19.7.6 (wraz ze skryptem aktualizującym) i raportuje teraz rzeczywistą wersję sterownika hosta.

  • Port RP2 wypisuje teraz „MPY: soft reboot” i otrzymał inicjalizację/deinicjalizację UART.

Poprawki błędów

  • Naprawiono rozmiar surowego bufora ramki w Arduino Nano RP2040 Connect oraz USB Product ID w Arduino Nicla Vision (poprawna enumeracja USB).

Obsługa sprzętu i płytek

  • Arduino Portenta H7 — obsługa kamery OV5640 (z autofokusem); GC2145 jest wyłączony na Portenta.

  • Arduino Nano RP2040 Connect — konfiguracja pamięci i szablony świeżego systemu plików.

  • WiFi Shield (WINC1500) — oprogramowanie układowe zaktualizowane do 19.7.6.

Zmiany API łamiące zgodność

Widoczne dla użytkownika zmiany API łamiące zgodność między v4.2.1 a v4.2.2. Zakres: moduły C Pythona w modules/ oraz biblioteki Pythona w scripts/libraries/.

Każda zmiana jest oznaczona swoim wpływem:

  • minor — wąskie API; dotyczy tylko skryptów, które go używały.

  • behavior — to samo API, inne wyniki; sprawdź ponownie dostrojone skrypty.

Zmiany są pogrupowane według wpływu w tej kolejności. Każdy skrót commita prowadzi do jego diffa na GitHubie.

API konfiguracji RPC CAN (minor)

W bibliotece rpc argument słowny CAN sampling_point funkcji rpc_can_master / rpc_can_slave został przemianowany na sample_point (dla zgodności z głównym MicroPythonem), a ręczny pomocnik taktowania bitów CAN został usunięty — magistrala CAN jest teraz konfigurowana przez CAN(..., baudrate=, sample_point=). Skrypty, które przekazywały sampling_point lub polegały na starym obliczaniu taktowania bitów, muszą zostać zaktualizowane.

Commity: b565eca58, 06d716986

image.format() i obrazy skompresowane (behavior)

Wraz z ujednoliconą ścieżką obrazów skompresowanych dodaną dla PNG, image.format() zwraca teraz PIXFORMAT_INVALID dla nieznanego formatu, a indeksowanie / iteracja / wypisywanie obrazów skompresowanych obejmuje teraz PNG, tak samo jak JPEG. Kod, który sprawdzał poprzednią wartość zwracaną dla nieznanych formatów, powinien zostać ponownie zweryfikowany.

Commit: f12a4659c

Lista kontrolna migracji

Dla czystego przejścia na v4.2.2: zmień nazwę RPC CAN sampling_pointsample_point i usuń wszelką ręczną konfigurację taktowania bitów CAN (zmiana RPC CAN) oraz ponownie sprawdź każdy kod, który sprawdzał image.format() pod kątem nieznanych formatów (zmiana format()).