v3.8.0¶
v3.8.0 aggiorna il core a MicroPython 1.13, congela nel firmware un ampio set di librerie helper, aggiunge Portenta Ethernet (con esempi di rete), il supporto HDMI CEC al modulo lcd, la configurazione di baudrate/sampling-point di pyb.CAN e un’ondata di correzioni HAL e di basso consumo per l’H7. I moduli time / utime sono stati unificati e la DMA di pyb.DAC su F4 è stata disabilitata: leggi le modifiche incompatibili qui sotto.
In evidenza¶
MicroPython 1.13 — il core MicroPython incluso è stato aggiornato.
Librerie congelate —
uasyncio,mqtt,rpc,rtsp,modbus,bno055,pid,ssd1306e altre sono ora congelate nel firmware.Portenta Ethernet — supporto Ethernet più esempi HTTP / SSL / peer-to-peer.
HDMI CEC — nuova API CEC nel modulo
lcd(Pure Thermal).pyb.CAN— temporizzazione dei bit dalle keywordbaudrate/sampling_point.Incompatibile: i moduli
time/utimesono stati unificati e le funzioni DMA dipyb.DACsu F4 sono state disabilitate — vedi le modifiche incompatibili.
Nuove funzionalità¶
Manifest congelato —
uasyncio,mqtt,rpc,rtsp,modbus,bno055,mutex,pid,ssd1306,tb6612evl53l1xsono ora congelati nel firmware su OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta.Portenta Ethernet — abilitato Ethernet con gli esempi
http_client,http_client_sslepeer_to_peer.HDMI CEC — aggiunta un’API HDMI CEC al modulo
lcd(Pure Thermal).pyb.CAN— il costruttore /init()deriva ora la temporizzazione dei bit dalle keywordbaudrateesampling_point(la forma con prescaler manuale funziona ancora); gli esempi CAN sono stati aggiornati di conseguenza.
Altre modifiche e miglioramenti¶
Il banner del REPL include ora la stringa di versione dell’HAL; l’esempio Audio FFT è stato aggiornato per la nuova API di
ulab.
Correzioni di bug¶
Camera e sensori:
Corretto il clock del sensore OV2640 e lo scaling della frequenza PCLK dell’OV5640 sui dispositivi STM32H7 rev Y; ripristino del bus I2C FIR da uno stato di arbitrato perso pulsando SCL e ripetizione dell’init AMG8833 dopo un soft-reset su F7.
Alimentazione e timer:
Corretto l’ingresso in basso consumo (stop/standby) dell’H7 — voltage scaling per la rev V, riabilitazione dell’oscillatore/PLL al risveglio, basso consumo della SDRAM con ritenzione della DRAM, disabilitazione del Systick all’ingresso in stop e abilitazione del DBGMCU solo nelle build di debug. Corretto lo stato HAL di
machine.Timerdopo l’aggiornamento dell’HAL dell’H7 e annullata la modifica alla priorità dell’IRQ di lettura/scrittura SD.
Display e connettività:
Corretta la configurazione della dimensione dati 8/16-bit dell’LCD SPI su F4 (define
MCU_SERIESerrato), restituito un errore in caso di fallimento dell’init del bus SPI del WINC1500 invece di proseguire silenziosamente e usato un handle SPI statico per evitare conflitti sul bus SPI del WINC1500. Corretto un bug della garbage collection di MicroPython.
Sistema:
unittests.pynon segna più la suite come fallita quando un test è disabilitato o non disponibile; rimossi gli esempicamera_lcdmalfunzionanti dello shield Thermopile.
Supporto hardware e schede¶
OpenMV Pure Thermal — scheda aggiornata e rinominata (
OPENMVPURETHERMAL→OPENMVPT), con HDMI CEC.OpenMV 2 — abilitato il driver della camera OV2640.
Arduino Portenta H7 — supporto Ethernet.
Modifiche incompatibili dell’API¶
Rotture dell’API visibili all’utente tra la v3.7.0 e la v3.8.0. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.
Ogni modifica è contrassegnata dal suo impatto:
minor — API ristretta; interessa solo gli script che la usavano.
behavior — stessa API, risultati diversi; ricontrolla gli script calibrati.
Le modifiche sono raggruppate per impatto in quest’ordine. Se vuoi solo portare il tuo codice, vai direttamente alla checklist di migrazione in fondo. Ogni hash di commit rimanda al suo diff su GitHub.
Moduli time / utime unificati (minor)¶
I moduli time e utime sono stati unificati e la classe OpenMV clock è stata spostata in utime. Tutti gli esempi inclusi sono stati aggiornati a import utime / clock = utime.clock(). Gli script che si affidavano a import time per la classe clock dovrebbero importare utime al suo posto.
Commit: 20587f308
Funzioni DMA di pyb.DAC su F4 disabilitate (minor)¶
Sulle schede basate su F4, le funzioni di pyb.DAC che richiedono la DMA sono state disabilitate perché l’heap dell’F4 risiede nella CCM, che non è accessibile alla DMA. Gli script F4 che usavano le scritture su buffer DMA del DAC devono evitare queste funzioni.
Commit: d61f236f2
MicroPython aggiornato alla 1.13 (behavior)¶
Il core MicroPython incluso è stato aggiornato alla 1.13. Il comportamento della libreria standard e del linguaggio segue MicroPython 1.13 upstream; ricontrolla gli script che dipendono dal comportamento specifico per versione di micropython / dei moduli standard.
Commit: fb0a5e26d
Le frequenze supportate da cpufreq dipendono dalla revisione (behavior)¶
Sono state aggiunte altre frequenze CPU, rese consapevoli della revisione del silicio: cpufreq.get_supported_frequencies() restituisce ora una lista dipendente dalla revisione sull’H7 (50/100/200/400 MHz su rev X/Y, 60/120/240/480 MHz su rev V). Gli script che codificavano in modo fisso una frequenza dalla vecchia lista dovrebbero interrogare la lista supportata a runtime.
Commit: 825dd0742
Checklist di migrazione¶
Per un porting pulito alla v3.8.0 il lavoro tipico è:
Cambiare
import timeinimport utimedove usi la classeclock(l’unificazione di time/utime).Sulle schede F4, smettere di usare le funzioni su buffer DMA di
pyb.DAC(la modifica del DAC su F4).Rivalidare gli script che dipendono dal comportamento di MicroPython specifico per versione rispetto alla 1.13 (l’aggiornamento di MicroPython) e interrogare
cpufreq.get_supported_frequencies()a runtime invece di codificarla in modo fisso (la modifica di cpufreq).
Tutti gli altri script funzionano senza modifiche.