v3.9.4

v3.9.4 voegt een buzzer-module toe, Himax HM01B0-bewegingsdetectie-ioctls (met voorbeelden voor stroombesparend wake-on-motion), MT9V034-uitleesvenstercontrole, Ethernet-stroombesparingsfuncties, een OV7670-cameradriver en de Arduino Nano 33 BLE Sense-camera. Het levert ook een grote reeks JPEG-/LCD-/TV-versnellingen. De VSYNC-uitvoer-API is vervangen door een callback en de MT9V034 versterkings-/belichtingsberekening is gecorrigeerd — lees de ingrijpende wijzigingen hieronder.

Hoogtepunten

  • Buzzer-module — een nieuwe buzzer-module (freq(), duty(), RESONANT_FREQ) op de OpenMV Pure Thermal.

  • HM01B0-bewegingsdetectie — nieuwe Himax-bewegingsdetectie-ioctls plus een stroombesparend wake-on-motion-voorbeeld.

  • MT9V034-uitleesvenster — beheer het global-shutter-uitleesvenster via sensor.ioctl().

  • Nieuwe camera’s / boards — basis-OV7670-driver, Arduino Nano 33 BLE Sense-camera en het Bormio-board.

  • Snellere pipeline — herschreven SIMD JPEG-encoder, snellere debayering en grote LCD-/TV-overdrachtsversnellingen.

  • Ingrijpend: sensor.set_vsync_output() is vervangen door sensor.set_vsync_callback() en de MT9V034 versterkings-/belichtingsberekening is gecorrigeerd — zie de ingrijpende wijzigingen.

Nieuwe functies

  • Buzzer — een buzzer-module toegevoegd met buzzer.freq(), buzzer.duty() en een buzzer.RESONANT_FREQ-constante (OpenMV Pure Thermal).

  • HM01B0-bewegingsdetectie — de ioctls IOCTL_HIMAX_MD_ENABLE / MD_WINDOW / MD_THRESHOLD / MD_CLEAR en IOCTL_HIMAX_OSC_ENABLE toegevoegd, met een Himax-bewegingsdetectievoorbeeld en een stroombesparend wake-voorbeeld himax_wakeup_on_motion_detection.py.

  • MT9V034-uitleesvensterIOCTL_SET_READOUT_WINDOW / IOCTL_GET_READOUT_WINDOW toegevoegd voor MT9V034-uitleesvenstercontrole via sensor.ioctl().

  • Ethernet-stroombesparing — Ethernet power-down-/stroombesparingsfuncties toegevoegd.

  • Portenta — callbackfuncties toegevoegd om de externe oscillator in/uit te schakelen.

Overige wijzigingen en verbeteringen

  • De JPEG-encoder herschreven met SIMD en de Bayer→YCbCr-encodering versneld, de hardware-JPEG-kern ingeschakeld gehouden tijdens scriptuitvoering, debayering versneld (~19,5 ms voor VGA), JPEG-compressie verplaatst naar MDMA, de TV-/LCD-overdrachtspaden versneld met SIMD/efficiënte DMA en het SPI LCD-busgebruik enorm verminderd. Een USB3320 ULPI PHY-driver toegevoegd voor high-speed USB.

Bugfixes

Camera en sensoren:

  • De HM01B0-driver-init/-streaming gerepareerd en het AE-doel / de maximale versterking afgesteld, de MT9V034 AGC/AEC-versterkingsbegrenzing gecorrigeerd en het laden van de OV5640-autofocusfirmware (byte-volgorde) gerepareerd.

Display:

  • SPI LCD DMA-overdrachten groter dan 64 KB, de LCD-uitvoerpolariteit en de LCD-busstabiliteit (AXI QOS) gerepareerd.

Systeem en connectiviteit:

  • De door de CYW43 WiFi-driver gebruikte SDMMC-instance gerepareerd (met een board-gedefinieerde SDMMC-instance), de FLIR Lepton DMA-efficiëntie verbeterd (VOSPI verhoogd naar 20 MHz op H7), het Portenta stroombesparings-/standby-gedrag gerepareerd (PMIC SW1-stroomlimiet, Ethernet- en ULPI-stroombesparing), de RTSP-server bestand gemaakt tegen out-of-order CSeq- en PLAY Range-headers (FFPLAY), de 8-byte EABI-uitlijning van de linker-stack gerepareerd en een kapotte import in het Portenta-voorbeeld mqtt_sub.py gerepareerd.

Hardware- en boardondersteuning

  • OV7670-camerasensor — basisdriver.

  • Arduino Nano 33 BLE Sense — camerasensordriver (nrf-port) met reset-pin- en I2C-busfixes.

  • HM01B0 — een resolutie van 320x320 toegevoegd.

  • Bormio — PLL-klokconfiguratie, flash-indeling en GPIO PORT K (ook ingeschakeld op Portenta).

  • USB3320 ULPI PHY — high-speed USB.

Ingrijpende API-wijzigingen

Voor de gebruiker zichtbare API-wijzigingen tussen v3.9.3 en v3.9.4. Scope: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.

Elke wijziging is gemarkeerd met de impact ervan:

  • major — treft de meeste scripts die de functie gebruikten; je zult code moeten porten.

  • behavior — dezelfde API, andere resultaten; controleer afgestelde scripts opnieuw.

Wijzigingen zijn in die volgorde gegroepeerd op impact. Als je alleen je code wilt porten, ga dan naar de migratiechecklist aan het eind. Elke commit-hash linkt naar de bijbehorende diff op GitHub.

VSYNC-uitvoer vervangen door een callback (major)

sensor.set_vsync_output(pin) is verwijderd en vervangen door sensor.set_vsync_callback(callback). De VSYNC-lijn stuurt niet langer rechtstreeks een Pin aan; in plaats daarvan wordt een Python-callable aangeroepen met de VSYNC-status, en je callback schakelt de Pin zelf. Code die sensor.set_vsync_output() gebruikte, moet worden geport (zie het bijgewerkte voorbeeld vsync_gpio_output.py).

Commits: 5bbe25c20

MT9V034 versterkings-/belichtingsberekening gecorrigeerd (behavior)

De MT9V034-kloksnelheid en versterkings-/belichtingsberekening zijn gecorrigeerd, zodat sensor.set_auto_gain() / sensor.set_auto_exposure() nu nauwkeurige (en daarom andere) waarden produceren dan voorheen. Scripts die compenserende versterkings-/belichtingswaarden hard hadden gecodeerd om de oude onjuiste berekening op MT9V034 global-shutter-camera’s te omzeilen, moeten die workarounds laten vallen en opnieuw afstellen.

Commits: 4420536c4

Migratiechecklist

Voor een schone port naar v3.9.4 is het typische werk:

  1. Vervang sensor.set_vsync_output(pin) door sensor.set_vsync_callback(callback) en schakel de Pin van binnenuit de callback (de VSYNC-wijziging).

  2. Stel eventuele MT9V034 versterkings-/belichtingsworkarounds opnieuw af tegen de gecorrigeerde berekening (de MT9V034-wijziging).

Alle andere scripts draaien ongewijzigd.