v3.8.0

v3.8.0 actualizează nucleul la MicroPython 1.13, integrează (freeze) un set mare de biblioteci auxiliare în firmware, adaugă Portenta Ethernet (cu exemple de rețea), suport HDMI CEC în modulul lcd, configurarea ratei baud / punctului de eșantionare pentru pyb.CAN și un val de remedieri pentru consumul redus al H7 și pentru HAL. Modulele time / utime au fost unificate, iar DMA pentru F4 pyb.DAC a fost dezactivat — citiți modificările incompatibile de mai jos.

Aspecte importante

  • MicroPython 1.13 — nucleul MicroPython inclus a fost actualizat.

  • Biblioteci integrateuasyncio, mqtt, rpc, rtsp, modbus, bno055, pid, ssd1306 și altele sunt acum integrate (frozen) în firmware.

  • Portenta Ethernet — suport Ethernet plus exemple HTTP / SSL / peer-to-peer.

  • HDMI CEC — un nou API CEC în modulul lcd (Pure Thermal).

  • pyb.CAN — temporizarea biților din cuvintele-cheie baudrate / sampling_point.

  • Incompatibil: modulele time / utime au fost unificate, iar funcțiile DMA pentru F4 pyb.DAC au fost dezactivate — consultați modificările incompatibile.

Funcționalități noi

  • Manifest integratuasyncio, mqtt, rpc, rtsp, modbus, bno055, mutex, pid, ssd1306, tb6612 și vl53l1x sunt acum integrate (frozen) în firmware pe OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta.

  • Portenta Ethernet — Ethernet activat cu exemplele http_client, http_client_ssl și peer_to_peer.

  • HDMI CEC — adăugat un API HDMI CEC în modulul lcd (Pure Thermal).

  • pyb.CAN — constructorul / init() derivă acum temporizarea biților din cuvintele-cheie baudrate și sampling_point (forma manuală cu prescaler funcționează în continuare); exemplele CAN au fost actualizate în consecință.

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

  • Bannerul REPL include acum șirul versiunii HAL; exemplul Audio FFT a fost actualizat pentru noul API ulab.

Remedieri de erori

Cameră și senzori:

  • S-au remediat ceasul senzorului OV2640 și scalarea frecvenței PCLK pentru OV5640 pe dispozitivele STM32H7 rev Y; recuperarea magistralei I2C a FIR dintr-o stare de arbitraj pierdut prin pulsarea SCL și reîncercarea inițializării AMG8833 la o resetare soft pe F7.

Alimentare și temporizatoare:

  • S-a remediat intrarea în modul de consum redus al H7 (stop/standby) — scalarea tensiunii pentru rev V, reactivarea oscilatorului/PLL la trezire, consumul redus al SDRAM cu retenția DRAM, dezactivarea Systick la intrarea în stop și activarea DBGMCU doar în compilările de depanare. S-a remediat starea HAL a machine.Timer după actualizarea HAL pentru H7 și s-a revenit la modificarea priorității IRQ pentru citirea/scrierea pe SD.

Afișaj și conectivitate:

  • S-a remediat configurarea dimensiunii datelor de 8/16 biți pentru LCD-ul SPI al F4 (definirea MCU_SERIES greșită), s-a returnat o eroare la eșecul inițializării magistralei SPI WINC1500 în loc de continuarea silențioasă și s-a folosit un descriptor SPI static pentru a evita conflictele pe magistrala SPI WINC1500. S-a remediat o eroare de colectare GC în MicroPython.

Sistem:

  • unittests.py nu mai marchează suita ca eșuată atunci când un test este dezactivat sau indisponibil; s-au eliminat exemplele defecte camera_lcd pentru shield-ul Thermopile.

Hardware și suport pentru plăci

  • OpenMV Pure Thermal — placa actualizată și redenumită (OPENMVPURETHERMALOPENMVPT), cu HDMI CEC.

  • OpenMV 2 — driverul camerei OV2640 activat.

  • Arduino Portenta H7 — suport Ethernet.

Modificări incompatibile ale API-ului

Modificări incompatibile ale API-ului vizibile pentru utilizator între v3.7.0 și v3.8.0. 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 utilizat.

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

Modificările sunt grupate după impact, în această ordine. Dacă doriți doar să vă portați codul, treceți la lista de verificare pentru migrare de la final. Fiecare hash de commit are link către diff-ul său pe GitHub.

Modulele time / utime unificate (minor)

Modulele time și utime au fost unificate, iar clasa OpenMV clock a fost mutată în utime. Toate exemplele incluse au fost actualizate la import utime / clock = utime.clock(). Scripturile care se bazau pe import time pentru clasa clock ar trebui să importe în schimb utime.

Commit-uri: 20587f308

Funcțiile DMA pentru F4 pyb.DAC dezactivate (minor)

Pe plăcile bazate pe F4, funcțiile pyb.DAC care necesită DMA au fost dezactivate deoarece heap-ul F4 se află în CCM, care nu este accesibil prin DMA. Scripturile F4 care foloseau scrierile DAC în tampon DMA trebuie să evite aceste funcții.

Commit-uri: d61f236f2

MicroPython actualizat la 1.13 (comportament)

Nucleul MicroPython inclus a fost actualizat la 1.13. Comportamentul bibliotecii standard și al limbajului urmează MicroPython 1.13 din amonte; reverificați scripturile care depind de comportamentul specific versiunii pentru micropython / modulele standard.

Commit-uri: fb0a5e26d

Frecvențele acceptate de cpufreq depind de revizie (comportament)

S-au adăugat mai multe frecvențe CPU, conștiente de revizia siliciului: cpufreq.get_supported_frequencies() returnează acum o listă dependentă de revizie pe H7 (50/100/200/400 MHz pe rev X/Y, 60/120/240/480 MHz pe rev V). Scripturile care codificau fix o frecvență din vechea listă fixă ar trebui să interogheze lista acceptată în timpul execuției.

Commit-uri: 825dd0742

Lista de verificare pentru migrare

Pentru o portare curată la v3.8.0, lucrul tipic este:

  1. Schimbați import time în import utime acolo unde folosiți clasa clock (unificarea time/utime).

  2. Pe plăcile F4, încetați să folosiți funcțiile DAC în tampon DMA pyb.DAC (modificarea DAC pentru F4).

  3. Revalidați scripturile care depind de comportamentul MicroPython specific versiunii față de 1.13 (actualizarea MicroPython) și interogați cpufreq.get_supported_frequencies() în timpul execuției în loc să codificați fix (modificarea cpufreq).

Toate celelalte scripturi rulează neschimbate.