v3.9.4

v3.9.4 ergänzt ein buzzer-Modul, Himax-HM01B0-Bewegungserkennungs-ioctls (mit stromsparenden Wake-on-Motion-Beispielen), MT9V034-Auslesefenster-Steuerung, Ethernet-Stromsparfunktionen, einen OV7670-Kameratreiber sowie die Arduino Nano 33 BLE Sense-Kamera. Außerdem bringt es eine große Reihe von JPEG-/LCD-/TV-Beschleunigungen. Die VSYNC-Ausgabe-API wurde durch einen Callback ersetzt und die MT9V034-Verstärkungs-/Belichtungsberechnung wurde korrigiert — lies die nachstehenden Änderungen mit Bruchpotenzial.

Highlights

  • Buzzer-Modul — ein neues buzzer-Modul (freq(), duty(), RESONANT_FREQ) auf dem OpenMV Pure Thermal.

  • HM01B0-Bewegungserkennung — neue Himax-Bewegungserkennungs-ioctls plus ein stromsparendes Wake-on-Motion-Beispiel.

  • MT9V034-Auslesefenster — Steuerung des Global-Shutter-Auslesefensters über sensor.ioctl().

  • Neue Kameras / Boards — grundlegender OV7670-Treiber, Arduino Nano 33 BLE Sense-Kamera und das Bormio-Board.

  • Schnellere Pipeline — neu geschriebener SIMD-JPEG-Encoder, schnelleres Debayering und große LCD-/TV-Übertragungsbeschleunigungen.

  • Mit Bruchpotenzial: sensor.set_vsync_output() wurde durch sensor.set_vsync_callback() ersetzt und die MT9V034-Verstärkungs-/Belichtungsberechnung wurde korrigiert — siehe die Änderungen mit Bruchpotenzial.

Neue Funktionen

  • Buzzer — ein buzzer-Modul mit buzzer.freq(), buzzer.duty() und einer buzzer.RESONANT_FREQ-Konstante hinzugefügt (OpenMV Pure Thermal).

  • HM01B0-Bewegungserkennung — die ioctls IOCTL_HIMAX_MD_ENABLE / MD_WINDOW / MD_THRESHOLD / MD_CLEAR und IOCTL_HIMAX_OSC_ENABLE hinzugefügt, mit einem Himax-Bewegungserkennungs-Beispiel und einem stromsparenden Wake-Beispiel himax_wakeup_on_motion_detection.py.

  • MT9V034-AuslesefensterIOCTL_SET_READOUT_WINDOW / IOCTL_GET_READOUT_WINDOW für die MT9V034-Auslesefenster-Steuerung über sensor.ioctl() hinzugefügt.

  • Ethernet-Stromsparmodus — Ethernet-Power-down-/Stromsparfunktionen hinzugefügt.

  • Portenta — Callback-Funktionen zum Aktivieren/Deaktivieren des externen Oszillators hinzugefügt.

Weitere Änderungen und Verbesserungen

  • Den JPEG-Encoder mit SIMD neu geschrieben und die Bayer→YCbCr-Codierung beschleunigt, den Hardware-JPEG-Kern während der Skriptausführung mit Strom versorgt gehalten, das Debayering beschleunigt (~19,5 ms für VGA), die JPEG-Komprimierung auf MDMA ausgelagert, die TV-/LCD-Übertragungspfade mit SIMD/effizientem DMA beschleunigt und die SPI-LCD-Bus-Auslastung massiv reduziert. Einen USB3320-ULPI-PHY-Treiber für High-Speed-USB hinzugefügt.

Fehlerbehebungen

Kamera und Sensoren:

  • Init/Streaming des HM01B0-Treibers behoben und dessen AE-Ziel / maximale Verstärkung abgestimmt, das AGC/AEC-Verstärkungs-Clamping des MT9V034 korrigiert und das Laden der OV5640-Autofokus-Firmware (Byte-Reihenfolge) behoben.

Anzeige:

  • SPI-LCD-DMA-Übertragungen größer als 64 KB, die LCD-Ausgabepolarität und die LCD-Bus-Stabilität (AXI QOS) behoben.

System und Konnektivität:

  • Die vom CYW43-WiFi-Treiber verwendete SDMMC-Instanz behoben (mit einer board-definierten SDMMC-Instanz), die FLIR-Lepton-DMA-Effizienz verbessert (VOSPI auf dem H7 auf 20 MHz angehoben), das Portenta-Stromspar-/Standby-Verhalten behoben (PMIC-SW1-Strombegrenzung, Ethernet- und ULPI-Stromsparmodus), den RTSP-Server so angepasst, dass er CSeq- und PLAY Range-Header in falscher Reihenfolge toleriert (FFPLAY), die 8-Byte-EABI-Ausrichtung des Linker-Stacks behoben und einen fehlerhaften Import im Portenta-Beispiel mqtt_sub.py behoben.

Hardware- und Board-Unterstützung

  • OV7670-Kamerasensor — grundlegender Treiber.

  • Arduino Nano 33 BLE Sense — Kamerasensor-Treiber (nrf-Port) mit Korrekturen für Reset-Pin und I2C-Bus.

  • HM01B0 — eine 320x320-Auflösung hinzugefügt.

  • Bormio — PLL-Taktkonfiguration, Flash-Layout und GPIO PORT K (auch auf dem Portenta aktiviert).

  • USB3320 ULPI PHY — High-Speed-USB.

API-Änderungen mit Bruchpotenzial

Für Benutzer sichtbare API-Brüche zwischen v3.9.3 und v3.9.4. Umfang: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.

Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:

  • major — betrifft die meisten Skripte, die die Funktion verwendet haben; du musst Code portieren.

  • behavior — gleiche API, andere Ergebnisse; überprüfe abgestimmte Skripte erneut.

Die Änderungen sind in dieser Reihenfolge nach Auswirkung gruppiert. Wenn du nur deinen Code portieren möchtest, springe zur Migrations-Checkliste am Ende. Jeder Commit-Hash verlinkt auf seinen Diff auf GitHub.

VSYNC-Ausgabe durch einen Callback ersetzt (major)

sensor.set_vsync_output(pin) wurde entfernt und durch sensor.set_vsync_callback(callback) ersetzt. Die VSYNC-Leitung steuert nicht mehr direkt einen Pin an; stattdessen wird ein aufrufbares Python-Objekt mit dem VSYNC-Zustand aufgerufen, und dein Callback schaltet den Pin selbst um. Code, der sensor.set_vsync_output() verwendet hat, muss portiert werden (siehe das aktualisierte Beispiel vsync_gpio_output.py).

Commits: 5bbe25c20

MT9V034-Verstärkungs-/Belichtungsberechnung korrigiert (behavior)

Die MT9V034-Taktrate und die Verstärkungs-/Belichtungsberechnung wurden korrigiert, sodass sensor.set_auto_gain() / sensor.set_auto_exposure() nun korrekte (und daher andere) Werte als zuvor liefern. Skripte, die kompensierende Verstärkungs-/Belichtungswerte fest codiert hatten, um die alte fehlerhafte Berechnung auf MT9V034-Global-Shutter-Kameras zu umgehen, sollten diese Workarounds entfernen und neu abstimmen.

Commits: 4420536c4

Migrations-Checkliste

Für eine saubere Portierung auf v3.9.4 fällt typischerweise folgende Arbeit an:

  1. Ersetze sensor.set_vsync_output(pin) durch sensor.set_vsync_callback(callback) und schalte den Pin innerhalb des Callbacks um (die VSYNC-Änderung).

  2. Stimme alle MT9V034-Verstärkungs-/Belichtungs-Workarounds gegen die korrigierte Berechnung neu ab (die MT9V034-Änderung).

Alle anderen Skripte laufen unverändert weiter.