v3.9.4

v3.9.4 lägger till en buzzer-modul, Himax HM01B0-rörelsedetektering-ioctls (med strömsnåla exempel för väckning vid rörelse), styrning av MT9V034:s utläsningsfönster, strömsnåla Ethernet-funktioner, en OV7670-kameradrivrutin och kameran Arduino Nano 33 BLE Sense. Den innehåller även en stor samling hastighetsförbättringar för JPEG / LCD / TV. VSYNC-utgångs-API:t ersattes med ett återanrop och MT9V034:s matematik för förstärkning/exponering rättades — läs de brytande ändringarna nedan.

Höjdpunkter

  • Buzzer-modul — en ny buzzer-modul (freq(), duty(), RESONANT_FREQ) på OpenMV Pure Thermal.

  • HM01B0-rörelsedetektering — nya ioctls för Himax-rörelsedetektering plus ett strömsnålt exempel för väckning vid rörelse.

  • MT9V034-utläsningsfönster — styr utläsningsfönstret för global slutare via sensor.ioctl().

  • Nya kameror / kort — grundläggande OV7670-drivrutin, kameran Arduino Nano 33 BLE Sense och Bormio-kortet.

  • Snabbare pipeline — omskriven SIMD-baserad JPEG-kodare, snabbare debayering och stora hastighetsförbättringar för LCD/TV-överföringar.

  • Brytande: sensor.set_vsync_output() ersattes med sensor.set_vsync_callback() och MT9V034:s matematik för förstärkning/exponering rättades — se de brytande ändringarna.

Nya funktioner

  • Buzzer — lade till en buzzer-modul med buzzer.freq(), buzzer.duty() och en konstant buzzer.RESONANT_FREQ (OpenMV Pure Thermal).

  • HM01B0-rörelsedetektering — lade till ioctls IOCTL_HIMAX_MD_ENABLE / MD_WINDOW / MD_THRESHOLD / MD_CLEAR och IOCTL_HIMAX_OSC_ENABLE, med ett exempel på Himax-rörelsedetektering och ett strömsnålt väckningsexempel himax_wakeup_on_motion_detection.py.

  • MT9V034-utläsningsfönster — lade till IOCTL_SET_READOUT_WINDOW / IOCTL_GET_READOUT_WINDOW för styrning av MT9V034:s utläsningsfönster via sensor.ioctl().

  • Strömsnål Ethernet — lade till funktioner för avstängning / låg strömförbrukning för Ethernet.

  • Portenta — lade till återanropsfunktioner för att aktivera/inaktivera den externa oscillatorn.

Övriga ändringar och förbättringar

  • Skrev om JPEG-kodaren med SIMD och snabbade upp Bayer→YCbCr-kodning, höll hårdvarans JPEG-kärna strömsatt under skriptkörning, snabbade upp debayering (~19,5 ms för VGA), avlastade JPEG-komprimering till MDMA, accelererade överföringsvägarna för TV/LCD med SIMD/effektiv DMA och minskade kraftigt användningen av SPI LCD-bussen. Lade till en USB3320 ULPI PHY-drivrutin för höghastighets-USB.

Buggrättningar

Kamera och sensorer:

  • Rättade HM01B0-drivrutinens initiering/strömning och justerade dess AE-mål / maxförstärkning, korrigerade MT9V034:s AGC/AEC-förstärkningsbegränsning och rättade laddning av OV5640:s autofokus-fasta programvara (byteordning).

Skärm:

  • Rättade SPI LCD DMA-överföringar större än 64 KB, LCD-utgångens polaritet och LCD-bussens stabilitet (AXI QOS).

System och anslutningar:

  • Rättade vilken SDMMC-instans CYW43 WiFi-drivrutinen använder (med en kortdefinierad SDMMC-instans), förbättrade FLIR Leptons DMA-effektivitet (VOSPI höjt till 20 MHz på H7), rättade Portentas beteende vid låg strömförbrukning / standby (PMIC SW1-strömgräns, låg strömförbrukning för Ethernet och ULPI), fick RTSP-servern att tolerera CSeq- och PLAY Range-headers i fel ordning (FFPLAY), rättade länkarens 8-byte EABI-stackjustering och rättade en trasig import i Portentas exempel mqtt_sub.py.

Hårdvaru- och kortstöd

  • OV7670-kamerasensor — grundläggande drivrutin.

  • Arduino Nano 33 BLE Sense — kamerasensordrivrutin (nrf-port) med rättningar för reset-stift och I2C-buss.

  • HM01B0 — lade till en upplösning på 320x320.

  • Bormio — PLL-klockkonfiguration, flash-layout och GPIO PORT K (aktiverat även på Portenta).

  • USB3320 ULPI PHY — höghastighets-USB.

Brytande API-ändringar

Användarsynliga API-brott mellan v3.9.3 och v3.9.4. Omfattning: Python-C-moduler i modules/ och Python-bibliotek i scripts/libraries/.

Varje ändring är märkt med sin påverkan:

  • major — påverkar de flesta skript som använde funktionen; du behöver porta kod.

  • behavior — samma API, andra resultat; kontrollera trimmade skript igen.

Ändringar är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migreringschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.

VSYNC-utgång ersatt med ett återanrop (major)

sensor.set_vsync_output(pin) togs bort och ersattes med sensor.set_vsync_callback(callback). VSYNC-linjen driver inte längre ett Pin direkt; i stället anropas en anropbar Python-funktion med VSYNC-tillståndet, och ditt återanrop växlar Pin själv. Kod som använde sensor.set_vsync_output() måste portas (se det uppdaterade exemplet vsync_gpio_output.py).

Commits: 5bbe25c20

MT9V034:s matematik för förstärkning/exponering rättad (behavior)

MT9V034:s klockhastighet och matematik för förstärkning/exponering rättades, så sensor.set_auto_gain() / sensor.set_auto_exposure() ger nu korrekta (och därmed andra) värden än tidigare. Skript som hårdkodade kompenserande värden för förstärkning/exponering för att kringgå den gamla felaktiga matematiken på MT9V034-kameror med global slutare bör ta bort dessa lösningar och trimma om.

Commits: 4420536c4

Migreringschecklista

För en ren portning till v3.9.4 är det typiska arbetet:

  1. Ersätt sensor.set_vsync_output(pin) med sensor.set_vsync_callback(callback) och växla Pin inifrån återanropet (VSYNC-ändringen).

  2. Trimma om eventuella lösningar för MT9V034:s förstärkning/exponering mot den rättade matematiken (MT9V034-ändringen).

Alla andra skript körs oförändrade.