v3.9.4¶
v3.9.4 新增了 buzzer 模块、Himax HM01B0 运动检测 ioctl(附带低功耗运动唤醒示例)、MT9V034 读出窗口控制、以太网低功耗功能、OV7670 摄像头驱动,以及 Arduino Nano 33 BLE Sense 摄像头。它还带来了一大批 JPEG / LCD / TV 提速。VSYNC 输出 API 已替换为回调,MT9V034 的增益/曝光计算也已修正——请阅读下方的破坏性变更。
亮点¶
蜂鸣器模块 —— 在 OpenMV Pure Thermal 上新增了
buzzer模块(freq()、duty()、RESONANT_FREQ)。HM01B0 运动检测 —— 新增 Himax 运动检测 ioctl,并附带低功耗运动唤醒示例。
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.freq()、buzzer.duty()以及buzzer.RESONANT_FREQ常量(OpenMV Pure Thermal)。HM01B0 运动检测 —— 新增
IOCTL_HIMAX_MD_ENABLE/MD_WINDOW/MD_THRESHOLD/MD_CLEAR以及IOCTL_HIMAX_OSC_ENABLEioctl,附带一个 Himax 运动检测示例和一个himax_wakeup_on_motion_detection.py低功耗唤醒示例。MT9V034 读出窗口 —— 新增
IOCTL_SET_READOUT_WINDOW/IOCTL_GET_READOUT_WINDOW,用于通过sensor.ioctl()控制 MT9V034 的读出窗口。以太网低功耗 —— 新增以太网下电 / 低功耗功能。
Portenta —— 新增启用/禁用外部振荡器的回调函数。
其他变更与改进¶
使用 SIMD 重写了 JPEG 编码器并加速了 Bayer→YCbCr 编码,在脚本执行期间保持硬件 JPEG 内核供电,加速了去拜耳处理(VGA 约 19.5 毫秒),将 JPEG 压缩卸载到 MDMA,使用 SIMD/高效 DMA 加速了 TV/LCD 传输路径,并大幅降低了 SPI LCD 总线占用。新增了用于高速 USB 的 USB3320 ULPI PHY 驱动。
错误修复¶
摄像头与传感器:
修复了 HM01B0 驱动的初始化/流式传输并调优了其 AE 目标 / 最大增益,修正了 MT9V034 的 AGC/AEC 增益钳位,并修复了 OV5640 自动对焦固件加载(字节顺序)。
显示:
修复了大于 64 KB 的 SPI LCD DMA 传输、LCD 输出极性以及 LCD 总线稳定性(AXI QOS)。
系统与连接:
修复了 CYW43 WiFi 驱动所使用的 SDMMC 实例(改用主板定义的 SDMMC 实例),提升了 FLIR Lepton 的 DMA 效率(在 H7 上将 VOSPI 提升至 20 MHz),修复了 Portenta 的低功耗 / 待机行为(PMIC SW1 电流限制、以太网和 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 变更¶
v3.9.3 与 v3.9.4 之间对用户可见的 API 破坏性变更。范围:modules/ 中的 Python C 模块和 scripts/libraries/ 中的 Python 库。
每项变更都标注了其影响:
major —— 影响大多数使用该功能的脚本;你需要移植代码。
behavior —— API 相同但结果不同;请重新检查已调优的脚本。
变更按影响程度依此顺序分组。如果你只想移植代码,可直接跳到末尾的 迁移清单。每个提交哈希都链接到 GitHub 上的对应 diff。
VSYNC 输出已替换为回调 (major)¶
sensor.set_vsync_output(pin) 已被移除并替换为 sensor.set_vsync_callback(callback)。VSYNC 线不再直接驱动 Pin;取而代之的是,以 VSYNC 状态调用一个 Python 可调用对象,由你的回调自行切换 Pin。使用了 sensor.set_vsync_output() 的代码必须移植(参见更新后的 vsync_gpio_output.py 示例)。
提交: 5bbe25c20
MT9V034 增益/曝光计算已修正 (behavior)¶
MT9V034 的时钟速度和增益/曝光计算已修正,因此 sensor.set_auto_gain() / sensor.set_auto_exposure() 现在产生的值更准确(也因此与以前不同)。那些为绕过 MT9V034 全局快门摄像头旧的错误计算而硬编码补偿性增益/曝光值的脚本,应当去掉这些变通方案并重新调优。
提交: 4420536c4
迁移清单¶
要顺利移植到 v4.0.0,通常需要做的工作是:
将
sensor.set_vsync_output(pin)替换为sensor.set_vsync_callback(callback),并在回调内部切换Pin(VSYNC 变更)。针对修正后的计算重新调优任何 MT9V034 增益/曝光的变通方案(MT9V034 变更)。
所有其他脚本无需改动即可运行。