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 congelateuasyncio, mqtt, rpc, rtsp, modbus, bno055, pid, ssd1306 e 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 keyword baudrate / sampling_point.

  • Incompatibile: i moduli time / utime sono stati unificati e le funzioni DMA di pyb.DAC su F4 sono state disabilitate — vedi le modifiche incompatibili.

Nuove funzionalità

  • Manifest congelatouasyncio, mqtt, rpc, rtsp, modbus, bno055, mutex, pid, ssd1306, tb6612 e vl53l1x sono ora congelati nel firmware su OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta.

  • Portenta Ethernet — abilitato Ethernet con gli esempi http_client, http_client_ssl e peer_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 keyword baudrate e sampling_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.Timer dopo 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_SERIES errato), 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.py non segna più la suite come fallita quando un test è disabilitato o non disponibile; rimossi gli esempi camera_lcd malfunzionanti dello shield Thermopile.

Supporto hardware e schede

  • OpenMV Pure Thermal — scheda aggiornata e rinominata (OPENMVPURETHERMALOPENMVPT), 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 è:

  1. Cambiare import time in import utime dove usi la classe clock (l’unificazione di time/utime).

  2. Sulle schede F4, smettere di usare le funzioni su buffer DMA di pyb.DAC (la modifica del DAC su F4).

  3. 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.