v3.8.0

v3.8.0 aktualizuje rdzeń do wersji MicroPython 1.13, zamraża duży zestaw bibliotek pomocniczych w oprogramowaniu układowym, dodaje Portenta Ethernet (z przykładami sieciowymi), obsługę HDMI CEC w module lcd, konfigurację szybkości transmisji / punktu próbkowania dla pyb.CAN oraz falę poprawek niskiego poboru mocy i HAL dla H7. Moduły time / utime zostały scalone, a obsługa DMA dla F4 pyb.DAC została wyłączona — przeczytaj poniżej o zmianach niekompatybilnych wstecznie.

Najważniejsze zmiany

  • MicroPython 1.13 — dołączony rdzeń MicroPython został zaktualizowany.

  • Zamrożone bibliotekiuasyncio, mqtt, rpc, rtsp, modbus, bno055, pid, ssd1306 i inne są teraz zamrożone w oprogramowaniu układowym.

  • Portenta Ethernet — obsługa Ethernet wraz z przykładami HTTP / SSL / peer-to-peer.

  • HDMI CEC — nowe API CEC w module lcd (Pure Thermal).

  • pyb.CAN — taktowanie bitów na podstawie słów kluczowych baudrate / sampling_point.

  • Niekompatybilne wstecznie: moduły time / utime zostały scalone, a funkcje DMA dla F4 pyb.DAC zostały wyłączone — zobacz zmiany niekompatybilne wstecznie.

Nowe funkcje

  • Zamrożony manifestuasyncio, mqtt, rpc, rtsp, modbus, bno055, mutex, pid, ssd1306, tb6612 i vl53l1x są teraz zamrożone w oprogramowaniu układowym na OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta.

  • Portenta Ethernet — włączono Ethernet z przykładami http_client, http_client_ssl i peer_to_peer.

  • HDMI CEC — dodano API HDMI CEC do modułu lcd (Pure Thermal).

  • pyb.CAN — konstruktor / init() wyprowadza teraz taktowanie bitów ze słów kluczowych baudrate i sampling_point (ręczna postać z preskalerem nadal działa); przykłady CAN odpowiednio zaktualizowano.

Inne zmiany i ulepszenia

  • Baner REPL zawiera teraz ciąg wersji HAL; przykład Audio FFT zaktualizowano pod nowsze API ulab.

Poprawki błędów

Kamera i sensory:

  • Naprawiono zegar sensora OV2640 oraz skalowanie częstotliwości PCLK OV5640 na urządzeniach STM32H7 rev Y; przywracanie magistrali I2C FIR ze stanu utraty arbitrażu poprzez impulsowanie SCL oraz ponawianie inicjalizacji AMG8833 po miękkim resecie F7.

Zasilanie i liczniki czasu:

  • Naprawiono wejście w tryb niskiego poboru mocy H7 (stop/standby) — skalowanie napięcia dla rev V, ponowne włączanie oscylatora/PLL przy wybudzeniu, niski pobór mocy SDRAM z zachowaniem zawartości DRAM, wyłączanie Systick przy wejściu w tryb stop oraz włączanie DBGMCU tylko w buildach debugowych. Naprawiono stan HAL machine.Timer po aktualizacji HAL dla H7 oraz cofnięto zmianę priorytetu przerwań odczytu/zapisu SD.

Wyświetlacz i łączność:

  • Naprawiono konfigurację rozmiaru danych 8/16-bit dla F4 SPI LCD (błędna definicja MCU_SERIES), zwracanie błędu przy niepowodzeniu inicjalizacji magistrali SPI WINC1500 zamiast cichego kontynuowania oraz użyto statycznego uchwytu SPI, aby uniknąć konfliktów magistrali SPI WINC1500. Naprawiono błąd w mechanizmie GC-collect MicroPython.

System:

  • unittests.py nie oznacza już zestawu jako nieudany, gdy test jest wyłączony lub niedostępny; usunięto uszkodzone przykłady camera_lcd dla nakładki Thermopile.

Sprzęt i obsługa płytek

  • OpenMV Pure Thermal — płytkę zaktualizowano i przemianowano (OPENMVPURETHERMALOPENMVPT), z HDMI CEC.

  • OpenMV 2 — włączono sterownik kamery OV2640.

  • Arduino Portenta H7 — obsługa Ethernet.

Niekompatybilne zmiany API

Widoczne dla użytkownika zmiany niekompatybilne wstecznie w API między v3.7.0 a v3.8.0. 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; ponownie sprawdź dostrojone skrypty.

Zmiany są pogrupowane według wpływu w tej kolejności. Jeśli chcesz po prostu przenieść swój kod, przejdź do listy kontrolnej migracji na końcu. Każdy skrót commita prowadzi do jego diffu na GitHubie.

moduły time / utime scalone (minor)

Moduły time i utime zostały scalone, a klasa clock OpenMV przeniesiona do utime. Wszystkie dołączone przykłady zaktualizowano do import utime / clock = utime.clock(). Skrypty polegające na import time dla klasy clock powinny zamiast tego importować utime.

Commity: 20587f308

funkcje DMA dla F4 pyb.DAC wyłączone (minor)

Na płytkach opartych o F4 funkcje pyb.DAC wymagające DMA zostały wyłączone, ponieważ sterta F4 znajduje się w CCM, która nie jest dostępna dla DMA. Skrypty F4 używające zapisów do buforów DMA DAC muszą unikać tych funkcji.

Commity: d61f236f2

MicroPython zaktualizowany do 1.13 (behavior)

Dołączony rdzeń MicroPython został zaktualizowany do 1.13. Zachowanie biblioteki standardowej i języka jest zgodne z bazowym MicroPython 1.13; ponownie sprawdź skrypty zależne od zachowania micropython / modułów standardowych specyficznego dla danej wersji.

Commity: fb0a5e26d

obsługiwane częstotliwości cpufreq zależą od rewizji (behavior)

Dodano więcej częstotliwości CPU i uzależniono je od rewizji krzemu: cpufreq.get_supported_frequencies() zwraca teraz na H7 listę zależną od rewizji (50/100/200/400 MHz na rev X/Y, 60/120/240/480 MHz na rev V). Skrypty, które na stałe wpisywały częstotliwość ze starej, ustalonej listy, powinny w czasie działania odpytywać listę obsługiwanych częstotliwości.

Commity: 825dd0742

Lista kontrolna migracji

Dla czystego przeniesienia do v3.8.0 typowa praca to:

  1. Zmień import time na import utime tam, gdzie używasz klasy clock (scalenie time/utime).

  2. Na płytkach F4 przestań używać funkcji buforów DMA pyb.DAC (zmiana F4 DAC).

  3. Ponownie zweryfikuj skrypty zależne od zachowania MicroPython specyficznego dla danej wersji względem 1.13 (aktualizacja MicroPython) i odpytuj cpufreq.get_supported_frequencies() w czasie działania zamiast wpisywać częstotliwość na stałe (zmiana cpufreq).

Wszystkie pozostałe skrypty działają bez zmian.