v3.9.4¶
v3.9.4 adaugă un modul buzzer, ioctl-uri Himax pentru detectarea mișcării HM01B0 (cu exemple de trezire la mișcare în consum redus), control al ferestrei de citire MT9V034, funcții Ethernet de consum redus, un driver de cameră OV7670 și camera Arduino Nano 33 BLE Sense. De asemenea, introduce un lot mare de optimizări JPEG / LCD / TV. API-ul de ieșire VSYNC a fost înlocuit cu o funcție de retroapelare (callback), iar calculele de amplificare/expunere ale MT9V034 au fost corectate — citește modificările incompatibile de mai jos.
Aspecte importante¶
Modul buzzer — un nou modul
buzzer(freq(),duty(),RESONANT_FREQ) pe OpenMV Pure Thermal.Detectarea mișcării HM01B0 — noi ioctl-uri Himax de detectare a mișcării plus un exemplu de trezire la mișcare în consum redus.
Fereastra de citire MT9V034 — control al ferestrei de citire cu obturator global prin
sensor.ioctl().Camere / plăci noi — driver de bază OV7670, camera Arduino Nano 33 BLE Sense și placa Bormio.
Pipeline mai rapid — encoder JPEG SIMD rescris, debayering mai rapid și optimizări mari ale transferului LCD/TV.
Incompatibil:
sensor.set_vsync_output()a fost înlocuit cusensor.set_vsync_callback(), iar calculele de amplificare/expunere ale MT9V034 au fost corectate — vezi modificările incompatibile.
Funcții noi¶
Buzzer — s-a adăugat un modul
buzzercubuzzer.freq(),buzzer.duty()și o constantăbuzzer.RESONANT_FREQ(OpenMV Pure Thermal).Detectarea mișcării HM01B0 — s-au adăugat ioctl-urile
IOCTL_HIMAX_MD_ENABLE/MD_WINDOW/MD_THRESHOLD/MD_CLEARșiIOCTL_HIMAX_OSC_ENABLE, cu un exemplu de detectare a mișcării Himax și un exemplu de trezire în consum redushimax_wakeup_on_motion_detection.py.Fereastra de citire MT9V034 — s-au adăugat
IOCTL_SET_READOUT_WINDOW/IOCTL_GET_READOUT_WINDOWpentru controlul ferestrei de citire MT9V034 prinsensor.ioctl().Ethernet în consum redus — s-au adăugat funcții Ethernet de oprire / consum redus.
Portenta — s-au adăugat funcții de retroapelare pentru activarea/dezactivarea oscilatorului extern.
Alte modificări și îmbunătățiri¶
S-a rescris encoderul JPEG cu SIMD și s-a accelerat codificarea Bayer→YCbCr, s-a menținut nucleul JPEG hardware alimentat în timpul execuției scriptului, s-a accelerat debayering-ul (~19,5 ms pentru VGA), s-a transferat compresia JPEG către MDMA, s-au accelerat căile de transfer TV/LCD cu SIMD/DMA eficient și s-a redus masiv utilizarea magistralei SPI LCD. S-a adăugat un driver USB3320 ULPI PHY pentru USB de mare viteză.
Remedieri de erori¶
Camere și senzori:
S-a remediat inițializarea/streamingul driverului HM01B0 și s-au reglat ținta sa AE / amplificarea maximă, s-a corectat limitarea amplificării AGC/AEC pentru MT9V034 și s-a remediat încărcarea firmware-ului de autofocus OV5640 (ordinea octeților).
Afișaj:
S-au remediat transferurile DMA SPI LCD mai mari de 64 KB, polaritatea ieșirii LCD și stabilitatea magistralei LCD (AXI QOS).
Sistem și conectivitate:
S-a remediat instanța SDMMC folosită de driverul WiFi CYW43 (cu o instanță SDMMC definită de placă), s-a îmbunătățit eficiența DMA a FLIR Lepton (VOSPI ridicat la 20 MHz pe H7), s-a remediat comportamentul de consum redus / standby al Portenta (limita de curent PMIC SW1, consum redus Ethernet și ULPI), s-a făcut ca serverul RTSP să tolereze anteturi
CSeqșiPLAY Rangeîn ordine greșită (FFPLAY), s-a remediat alinierea EABI de 8 octeți a stivei linkerului și s-a remediat un import defect în exemplul Portentamqtt_sub.py.
Hardware și suport pentru plăci¶
Senzor de cameră OV7670 — driver de bază.
Arduino Nano 33 BLE Sense — driver de senzor de cameră (portul nrf) cu remedieri ale pinului de reset și ale magistralei I2C.
HM01B0 — s-a adăugat o rezoluție de 320x320.
Bormio — configurarea ceasului PLL, dispunerea memoriei flash și GPIO PORT K (activat și pe Portenta).
USB3320 ULPI PHY — USB de mare viteză.
Modificări incompatibile ale API-ului¶
Modificări incompatibile ale API-ului vizibile pentru utilizator între v3.9.3 și v3.9.4. Domeniu: module C Python în modules/ și biblioteci Python în scripts/libraries/.
Fiecare modificare este etichetată cu impactul său:
major — afectează majoritatea scripturilor care foloseau funcția; va trebui să-ți portezi codul.
comportament — același API, rezultate diferite; reverifică scripturile reglate.
Modificările sunt grupate în ordinea impactului. Dacă vrei doar să-ți portezi codul, sari la lista de verificare pentru migrare de la final. Fiecare hash de commit trimite la diff-ul său pe GitHub.
Ieșirea VSYNC înlocuită cu o funcție de retroapelare (major)¶
sensor.set_vsync_output(pin) a fost eliminat și înlocuit cu sensor.set_vsync_callback(callback). Linia VSYNC nu mai comandă direct un Pin; în schimb, o funcție Python apelabilă este invocată cu starea VSYNC, iar funcția ta de retroapelare comută ea însăși Pin-ul. Codul care folosea sensor.set_vsync_output() trebuie portat (vezi exemplul actualizat vsync_gpio_output.py).
Commit-uri: 5bbe25c20
Calculele de amplificare/expunere MT9V034 corectate (comportament)¶
Viteza ceasului MT9V034 și calculele de amplificare/expunere au fost corectate, astfel încât sensor.set_auto_gain() / sensor.set_auto_exposure() produc acum valori precise (și, prin urmare, diferite față de înainte). Scripturile care fixau valori compensatorii de amplificare/expunere pentru a ocoli vechile calcule incorecte pe camerele cu obturator global MT9V034 ar trebui să renunțe la aceste soluții temporare și să se rerregleze.
Commit-uri: 4420536c4
Lista de verificare pentru migrare¶
Pentru o portare curată la v3.9.4, munca tipică este:
Înlocuiește
sensor.set_vsync_output(pin)cusensor.set_vsync_callback(callback)și comutăPin-ul din interiorul funcției de retroapelare (modificarea VSYNC).Rereglarea oricăror soluții temporare de amplificare/expunere MT9V034 în raport cu calculele corectate (modificarea MT9V034).
Toate celelalte scripturi rulează neschimbate.