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 Bibliothekenuasyncio, mqtt, rpc, rtsp, modbus, bno055, pid, ssd1306 und 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örtern baudrate / sampling_point.

  • Breaking: die Module time / utime wurden zusammengeführt und die F4-pyb.DAC-DMA-Funktionen wurden deaktiviert — siehe die Breaking Changes.

Neue Funktionen

  • Eingefrorenes Manifestuasyncio, mqtt, rpc, rtsp, modbus, bno055, mutex, pid, ssd1306, tb6612 und vl53l1x sind 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_ssl und peer_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örtern baudrate und sampling_point ab (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.py markiert die Suite nicht mehr als fehlgeschlagen, wenn ein Test deaktiviert oder nicht verfügbar ist; die defekten camera_lcd-Beispiele für das Thermopile-Shield wurden entfernt.

Hardware- und Board-Unterstützung

  • OpenMV Pure Thermal — Board aktualisiert und umbenannt (OPENMVPURETHERMALOPENMVPT), 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:

  1. Ändern Sie import time in import utime, wo Sie die clock-Klasse verwenden (die time/utime-Zusammenführung).

  2. Verwenden Sie auf F4-Boards keine pyb.DAC-DMA-Puffer-Funktionen mehr (die F4-DAC-Änderung).

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