v3.8.0¶
v3.8.0 aktualisiert den Kern auf MicroPython 1.13, friert eine große Menge an Hilfsbibliotheken in die Firmware ein, fügt Portenta Ethernet (mit Netzwerkbeispielen), HDMI-CEC-Unterstützung für das lcd-Modul, die Konfiguration von Baudrate/Abtastpunkt für pyb.CAN sowie eine Reihe von H7-Low-Power- und HAL-Fehlerbehebungen hinzu. Die Module time / utime wurden zusammengeführt und F4-pyb.DAC-DMA wurde deaktiviert — lesen Sie die nachstehenden Breaking Changes.
Höhepunkte¶
MicroPython 1.13 — der mitgelieferte MicroPython-Kern wurde aktualisiert.
Eingefrorene Bibliotheken —
uasyncio,mqtt,rpc,rtsp,modbus,bno055,pid,ssd1306und weitere sind nun in die Firmware eingefroren.Portenta Ethernet — Ethernet-Unterstützung plus HTTP-/SSL-/Peer-to-Peer-Beispiele.
HDMI-CEC — neue CEC-API im
lcd-Modul (Pure Thermal).pyb.CAN— Bit-Timing aus den Schlüsselwörternbaudrate/sampling_point.Breaking: die Module
time/utimewurden zusammengeführt und die F4-pyb.DAC-DMA-Funktionen wurden deaktiviert — siehe die Breaking Changes.
Neue Funktionen¶
Eingefrorenes Manifest —
uasyncio,mqtt,rpc,rtsp,modbus,bno055,mutex,pid,ssd1306,tb6612undvl53l1xsind nun auf OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta in die Firmware eingefroren.Portenta Ethernet — Ethernet aktiviert mit den Beispielen
http_client,http_client_sslundpeer_to_peer.HDMI-CEC — eine HDMI-CEC-API zum
lcd-Modul hinzugefügt (Pure Thermal).pyb.CAN— der Konstruktor /init()leitet das Bit-Timing nun aus den Schlüsselwörternbaudrateundsampling_pointab (die manuelle Prescaler-Form funktioniert weiterhin); die CAN-Beispiele wurden entsprechend aktualisiert.
Weitere Änderungen und Verbesserungen¶
Das REPL-Banner enthält nun die HAL-Versionszeichenkette; das Audio-FFT-Beispiel wurde für die neuere
ulab-API aktualisiert.
Fehlerbehebungen¶
Kamera und Sensoren:
Behoben: der OV2640-Sensortakt und die OV5640-PCLK-Frequenzskalierung auf STM32H7-rev-Y-Geräten; der FIR-I2C-Bus wird durch Pulsen von SCL aus einem Zustand mit verlorener Arbitrierung wiederhergestellt, und die AMG8833-Initialisierung wird bei einem F7-Soft-Reset erneut versucht.
Stromversorgung und Timer:
Behoben: der H7-Low-Power-Eintritt (Stop/Standby) — Spannungsskalierung für rev V, Wiederaktivierung des Oszillators/der PLL beim Aufwachen, SDRAM-Low-Power mit DRAM-Erhaltung, Deaktivierung von Systick beim Stop-Eintritt und Aktivierung von DBGMCU nur in Debug-Builds. Der
machine.Timer-HAL-Zustand wurde nach dem H7-HAL-Update korrigiert und die Änderung der SD-Lese-/Schreib-IRQ-Priorität wurde rückgängig gemacht.
Anzeige und Konnektivität:
Behoben: die F4-SPI-LCD-8/16-Bit-Datengrößenkonfiguration (falsches
MCU_SERIES-Define); bei einem WINC1500-SPI-Bus-Initialisierungsfehler wird nun ein Fehler zurückgegeben, statt stillschweigend fortzufahren, und ein statischer SPI-Handle wird verwendet, um WINC1500-SPI-Buskonflikte zu vermeiden. Ein MicroPython-GC-Collect-Fehler wurde behoben.
System:
unittests.pymarkiert die Suite nicht mehr als fehlgeschlagen, wenn ein Test deaktiviert oder nicht verfügbar ist; die defektencamera_lcd-Beispiele für das Thermopile-Shield wurden entfernt.
Hardware- und Board-Unterstützung¶
OpenMV Pure Thermal — Board aktualisiert und umbenannt (
OPENMVPURETHERMAL→OPENMVPT), mit HDMI-CEC.OpenMV 2 — OV2640-Kameratreiber aktiviert.
Arduino Portenta H7 — Ethernet-Unterstützung.
Breaking-API-Änderungen¶
Für den Benutzer sichtbare API-Brüche zwischen v3.7.0 und v3.8.0. Umfang: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.
Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:
minor — eng begrenzte API; betrifft nur Skripte, die sie verwendet haben.
behavior — gleiche API, andere Ergebnisse; überprüfen Sie abgestimmte Skripte erneut.
Die Änderungen sind in dieser Reihenfolge nach Auswirkung gruppiert. Wenn Sie lediglich Ihren Code portieren möchten, springen Sie zur Migrations-Checkliste am Ende. Jeder Commit-Hash verlinkt auf seinen Diff auf GitHub.
Module time / utime zusammengeführt (minor)¶
Die Module time und utime wurden zusammengeführt und die OpenMV-clock-Klasse nach utime verschoben. Alle mitgelieferten Beispiele wurden auf import utime / clock = utime.clock() aktualisiert. Skripte, die für die clock-Klasse auf import time angewiesen waren, sollten stattdessen utime importieren.
Commits: 20587f308
F4-pyb.DAC-DMA-Funktionen deaktiviert (minor)¶
Auf F4-basierten Boards wurden pyb.DAC-Funktionen, die DMA erfordern, deaktiviert, da der F4-Heap im CCM liegt, das nicht DMA-zugänglich ist. F4-Skripte, die DAC-DMA-Puffer-Schreibvorgänge verwendet haben, müssen diese Funktionen meiden.
Commits: d61f236f2
MicroPython auf 1.13 aktualisiert (behavior)¶
Der mitgelieferte MicroPython-Kern wurde auf 1.13 aktualisiert. Das Verhalten der Standardbibliothek und der Sprache folgt dem Upstream-MicroPython 1.13; überprüfen Sie Skripte erneut, die von versionsspezifischem micropython- / Standardmodul-Verhalten abhängen.
Commits: fb0a5e26d
Von cpufreq unterstützte Frequenzen sind revisionsabhängig (behavior)¶
Es wurden weitere CPU-Frequenzen hinzugefügt und silizium-revisionsbewusst gemacht: cpufreq.get_supported_frequencies() gibt auf dem H7 nun eine revisionsabhängige Liste zurück (50/100/200/400 MHz auf rev X/Y, 60/120/240/480 MHz auf rev V). Skripte, die eine Frequenz aus der alten festen Liste fest codiert haben, sollten die unterstützte Liste zur Laufzeit abfragen.
Commits: 825dd0742
Migrations-Checkliste¶
Für eine saubere Portierung auf v3.8.0 fällt typischerweise folgende Arbeit an:
Ändern Sie
import timeinimport utime, wo Sie dieclock-Klasse verwenden (die time/utime-Zusammenführung).Verwenden Sie auf F4-Boards keine
pyb.DAC-DMA-Puffer-Funktionen mehr (die F4-DAC-Änderung).Validieren Sie Skripte, die von versionsspezifischem MicroPython-Verhalten abhängen, erneut gegen 1.13 (die MicroPython-Aktualisierung) und fragen Sie
cpufreq.get_supported_frequencies()zur Laufzeit ab, anstatt fest zu codieren (die cpufreq-Änderung).
Alle anderen Skripte laufen unverändert.