v3.8.0

v3.8.0 uppdaterar kärnan till MicroPython 1.13, fryser in en stor uppsättning hjälpbibliotek i den fasta programvaran, lägger till Portenta Ethernet (med nätverksexempel), HDMI CEC-stöd i lcd-modulen, konfiguration av baudhastighet/samplingspunkt för pyb.CAN, samt en våg av strömsnåla H7-rättningar och HAL-fixar. Modulerna time / utime slogs samman och DMA för F4 pyb.DAC inaktiverades — läs de brytande ändringarna nedan.

Höjdpunkter

  • MicroPython 1.13 — den medföljande MicroPython-kärnan uppdaterades.

  • Infrysta bibliotekuasyncio, mqtt, rpc, rtsp, modbus, bno055, pid, ssd1306 med flera är nu infrysta i den fasta programvaran.

  • Portenta Ethernet — Ethernet-stöd plus exempel för HTTP / SSL / peer-to-peer.

  • HDMI CEC — nytt CEC-API i lcd-modulen (Pure Thermal).

  • pyb.CAN — bittiming från nyckelorden baudrate / sampling_point.

  • Brytande: modulerna time / utime slogs samman och DMA-funktionerna för F4 pyb.DAC inaktiverades — se de brytande ändringarna.

Nya funktioner

  • Infryst manifestuasyncio, mqtt, rpc, rtsp, modbus, bno055, mutex, pid, ssd1306, tb6612 och vl53l1x är nu infrysta i den fasta programvaran på OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta.

  • Portenta Ethernet — aktiverade Ethernet med exemplen http_client, http_client_ssl och peer_to_peer.

  • HDMI CEC — lade till ett HDMI CEC-API i lcd-modulen (Pure Thermal).

  • pyb.CAN — konstruktorn / init() härleder nu bittiming från nyckelorden baudrate och sampling_point (den manuella prescaler-formen fungerar fortfarande); CAN-exemplen uppdaterades i enlighet med detta.

Övriga ändringar och förbättringar

  • REPL-bannern innehåller nu HAL-versionssträngen; Audio FFT-exemplet uppdaterades för det nyare ulab-API:et.

Buggrättningar

Kamera och sensorer:

  • Rättade OV2640-sensorns klocka och OV5640:s PCLK-frekvensskalning på STM32H7 rev Y-enheter; återhämtar FIR I2C-bussen från ett förlorat arbitreringstillstånd genom att pulsa SCL, och försöker initiera AMG8833 igen vid en mjuk återställning av F7.

Strömförsörjning och timrar:

  • Rättade strömsnål inträde på H7 (stop/standby) — spänningsskalning för rev V, återaktivering av oscillator/PLL vid uppvaknande, strömsnålt SDRAM med DRAM-bevarande, inaktivering av Systick vid stop-inträde, och aktivering av DBGMCU endast i felsökningsbyggen. Rättade tillståndet för machine.Timer i HAL efter H7 HAL-uppdateringen och återställde ändringen av IRQ-prioritet för SD-läsning/skrivning.

Skärm och anslutning:

  • Rättade konfigurationen av 8/16-bitars datastorlek för F4 SPI LCD (felaktig MCU_SERIES-definition), returnerade ett fel vid misslyckad initiering av WINC1500 SPI-bussen i stället för att tyst fortsätta, och använde ett statiskt SPI-handtag för att undvika SPI-busskonflikter med WINC1500. Rättade en bugg i MicroPythons GC-collect.

System:

  • unittests.py markerar inte längre sviten som misslyckad när ett test är inaktiverat eller otillgängligt; tog bort de trasiga camera_lcd-exemplen för Thermopile-skölden.

Hårdvaru- och kortstöd

  • OpenMV Pure Thermal — kortet uppdaterades och bytte namn (OPENMVPURETHERMALOPENMVPT), med HDMI CEC.

  • OpenMV 2 — drivrutinen för OV2640-kameran aktiverades.

  • Arduino Portenta H7 — Ethernet-stöd.

Brytande API-ändringar

Användarsynliga API-brott mellan v3.7.0 och v3.8.0. Omfattning: Python C-moduler i modules/ och Python-bibliotek i scripts/libraries/.

Varje ändring är märkt med sin påverkan:

  • minor — smalt API; påverkar endast skript som använde det.

  • behavior — samma API, andra resultat; kontrollera finjusterade skript igen.

Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migreringschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.

Modulerna time / utime sammanslagna (minor)

Modulerna time och utime slogs samman och OpenMV:s clock-klass flyttades till utime. Alla medföljande exempel uppdaterades till import utime / clock = utime.clock(). Skript som förlitade sig på import time för clock-klassen bör importera utime i stället.

Commits: 20587f308

DMA-funktionerna för F4 pyb.DAC inaktiverade (minor)

På F4-baserade kort inaktiverades de pyb.DAC-funktioner som kräver DMA eftersom F4-heapen ligger i CCM, vilket inte är DMA-åtkomligt. F4-skript som använde DAC-skrivningar till DMA-buffert måste undvika dessa funktioner.

Commits: d61f236f2

MicroPython uppdaterad till 1.13 (behavior)

Den medföljande MicroPython-kärnan uppdaterades till 1.13. Standardbiblioteks- och språkbeteende följer MicroPython 1.13 uppströms; kontrollera igen skript som beror på versionsspecifikt beteende hos micropython / standardmoduler.

Commits: fb0a5e26d

Frekvenser som stöds av cpufreq är revisionsberoende (behavior)

Fler CPU-frekvenser lades till och gjordes medvetna om kiselrevision: cpufreq.get_supported_frequencies() returnerar nu en revisionsberoende lista på H7 (50/100/200/400 MHz på rev X/Y, 60/120/240/480 MHz på rev V). Skript som hårdkodade en frekvens från den gamla fasta listan bör fråga efter den lista som stöds vid körning.

Commits: 825dd0742

Migreringschecklista

För en ren portning till v3.8.0 är det typiska arbetet:

  1. Ändra import time till import utime där du använder clock-klassen (time/utime-sammanslagningen).

  2. På F4-kort, sluta använda DMA-buffertfunktionerna för pyb.DAC (F4 DAC-ändringen).

  3. Validera om skript som beror på versionsspecifikt MicroPython-beteende mot 1.13 (MicroPython-uppgraderingen) och fråga efter cpufreq.get_supported_frequencies() vid körning i stället för att hårdkoda (cpufreq-ändringen).

Alla andra skript körs oförändrade.