v3.9.4¶
v3.9.4 добавляет модуль buzzer, ioctl-вызовы для обнаружения движения HM01B0 от Himax (с примерами маломощного пробуждения по движению), управление окном считывания MT9V034, функции пониженного энергопотребления Ethernet, драйвер камеры OV7670 и камеру Arduino Nano 33 BLE Sense. Также реализован большой набор ускорений JPEG / LCD / TV. API вывода VSYNC заменён на функцию обратного вызова, а расчёт усиления/экспозиции MT9V034 был исправлен — ознакомьтесь с несовместимыми изменениями ниже.
Основные моменты¶
Модуль buzzer — новый модуль
buzzer(freq(),duty(),RESONANT_FREQ) на OpenMV Pure Thermal.Обнаружение движения HM01B0 — новые ioctl-вызовы обнаружения движения Himax плюс пример маломощного пробуждения по движению.
Окно считывания MT9V034 — управление окном считывания глобального затвора через
sensor.ioctl().Новые камеры / платы — базовый драйвер OV7670, камера Arduino Nano 33 BLE Sense и плата Bormio.
Более быстрый конвейер — переписанный SIMD-кодировщик JPEG, ускоренная дебайеризация и значительное ускорение передач LCD/TV.
Несовместимое:
sensor.set_vsync_output()заменён наsensor.set_vsync_callback(), а расчёт усиления/экспозиции MT9V034 был исправлен — см. несовместимые изменения.
Новые возможности¶
Buzzer — добавлен модуль
buzzerсbuzzer.freq(),buzzer.duty()и константойbuzzer.RESONANT_FREQ(OpenMV Pure Thermal).Обнаружение движения HM01B0 — добавлены ioctl-вызовы
IOCTL_HIMAX_MD_ENABLE/MD_WINDOW/MD_THRESHOLD/MD_CLEARиIOCTL_HIMAX_OSC_ENABLEвместе с примером обнаружения движения Himax и примером маломощного пробужденияhimax_wakeup_on_motion_detection.py.Окно считывания MT9V034 — добавлены
IOCTL_SET_READOUT_WINDOW/IOCTL_GET_READOUT_WINDOWдля управления окном считывания MT9V034 черезsensor.ioctl().Пониженное энергопотребление Ethernet — добавлены функции отключения питания / пониженного энергопотребления Ethernet.
Portenta — добавлены функции обратного вызова для включения/отключения внешнего осциллятора.
Прочие изменения и улучшения¶
Кодировщик JPEG переписан с использованием SIMD и ускорено кодирование Bayer→YCbCr, аппаратное ядро JPEG остаётся включённым во время выполнения скрипта, ускорена дебайеризация (~19,5 мс для VGA), сжатие JPEG перенесено на MDMA, пути передачи TV/LCD ускорены с помощью SIMD/эффективного DMA, а нагрузка на шину SPI LCD существенно снижена. Добавлен драйвер USB3320 ULPI PHY для высокоскоростного USB.
Исправления ошибок¶
Камеры и датчики:
Исправлены инициализация/потоковая передача драйвера HM01B0 и настроены его целевое значение AE / максимальное усиление, исправлено ограничение усиления AGC/AEC для MT9V034 и исправлена загрузка прошивки автофокуса OV5640 (порядок байтов).
Дисплей:
Исправлены передачи SPI LCD DMA размером более 64 КБ, полярность вывода LCD и стабильность шины LCD (AXI QOS).
Система и связь:
Исправлен экземпляр SDMMC, используемый драйвером CYW43 WiFi (с экземпляром SDMMC, определяемым платой), повышена эффективность DMA FLIR Lepton (VOSPI поднят до 20 МГц на H7), исправлено поведение Portenta при пониженном энергопотреблении / режиме ожидания (ограничение тока PMIC SW1, пониженное энергопотребление Ethernet и ULPI), сервер RTSP теперь допускает заголовки
CSeqиPLAY Rangeв неупорядоченном виде (FFPLAY), исправлено 8-байтовое выравнивание стека EABI в компоновщике и исправлен сломанный импорт в примере Portentamqtt_sub.py.
Оборудование и поддержка плат¶
Датчик камеры OV7670 — базовый драйвер.
Arduino Nano 33 BLE Sense — драйвер датчика камеры (порт nrf) с исправлениями вывода сброса и шины I2C.
HM01B0 — добавлено разрешение 320x320.
Bormio — конфигурация тактирования PLL, схема флеш-памяти и GPIO PORT K (также включён на Portenta).
USB3320 ULPI PHY — высокоскоростной USB.
Несовместимые изменения API¶
Видимые пользователю несовместимые изменения API между v3.9.3 и v3.9.4. Область: C-модули Python в modules/ и библиотеки Python в scripts/libraries/.
Каждое изменение помечено степенью его влияния:
major — затрагивает большинство скриптов, использующих эту возможность; вам потребуется адаптировать код.
behavior — тот же API, другие результаты; перепроверьте настроенные скрипты.
Изменения сгруппированы по влиянию в этом порядке. Если вы хотите просто адаптировать свой код, перейдите к контрольному списку миграции в конце. Каждый хэш коммита ведёт к его diff на GitHub.
Вывод VSYNC заменён функцией обратного вызова (major)¶
sensor.set_vsync_output(pin) был удалён и заменён на sensor.set_vsync_callback(callback). Линия VSYNC больше не управляет Pin напрямую; вместо этого вызывается объект Python с состоянием VSYNC, и ваша функция обратного вызова сама переключает Pin. Код, использовавший sensor.set_vsync_output(), должен быть адаптирован (см. обновлённый пример vsync_gpio_output.py).
Коммиты: 5bbe25c20
Исправлен расчёт усиления/экспозиции MT9V034 (behavior)¶
Тактовая частота MT9V034 и расчёт усиления/экспозиции были исправлены, поэтому sensor.set_auto_gain() / sensor.set_auto_exposure() теперь дают точные (и, следовательно, другие) значения, чем раньше. Скрипты, в которых были жёстко прописаны компенсирующие значения усиления/экспозиции для обхода старого неверного расчёта на камерах MT9V034 с глобальным затвором, должны убрать эти обходные решения и перенастроить.
Коммиты: 4420536c4
Контрольный список миграции¶
Для чистого переноса на v3.9.4 типичная работа такова:
Замените
sensor.set_vsync_output(pin)наsensor.set_vsync_callback(callback)и переключайтеPinвнутри функции обратного вызова (изменение VSYNC).Перенастройте любые обходные решения по усилению/экспозиции MT9V034 в соответствии с исправленным расчётом (изменение MT9V034).
Все остальные скрипты работают без изменений.