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 durchsensor.set_vsync_callback()ersetzt und die MT9V034-Verstärkungs-/Belichtungsberechnung wurde korrigiert — siehe die Änderungen mit Bruchpotenzial.
Neue Funktionen¶
Buzzer — ein
buzzer-Modul mitbuzzer.freq(),buzzer.duty()und einerbuzzer.RESONANT_FREQ-Konstante hinzugefügt (OpenMV Pure Thermal).HM01B0-Bewegungserkennung — die ioctls
IOCTL_HIMAX_MD_ENABLE/MD_WINDOW/MD_THRESHOLD/MD_CLEARundIOCTL_HIMAX_OSC_ENABLEhinzugefügt, mit einem Himax-Bewegungserkennungs-Beispiel und einem stromsparenden Wake-Beispielhimax_wakeup_on_motion_detection.py.MT9V034-Auslesefenster —
IOCTL_SET_READOUT_WINDOW/IOCTL_GET_READOUT_WINDOWfür die MT9V034-Auslesefenster-Steuerung übersensor.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- undPLAY Range-Header in falscher Reihenfolge toleriert (FFPLAY), die 8-Byte-EABI-Ausrichtung des Linker-Stacks behoben und einen fehlerhaften Import im Portenta-Beispielmqtt_sub.pybehoben.
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:
Ersetze
sensor.set_vsync_output(pin)durchsensor.set_vsync_callback(callback)und schalte denPininnerhalb des Callbacks um (die VSYNC-Änderung).Stimme alle MT9V034-Verstärkungs-/Belichtungs-Workarounds gegen die korrigierte Berechnung neu ab (die MT9V034-Änderung).
Alle anderen Skripte laufen unverändert weiter.