v2.4.0

v2.4.0 基于 Qt Creator 4.0.2 构建,核心在于全新的 V3 引导加载程序(在固件加载时查询 QSPI 闪存布局,并在完整清除板载数据闪存时进行擦除)、状态栏中的实时传感器与开发板信息显示,以及与捆绑固件相匹配的全新 32 位 USB 调试协议。本版本还新增了首次运行 LED 指南,以及大量新的 TensorFlow、Modbus 和 WiFi 示例。由于调试协议发生了变化,摄像头必须运行新的捆绑固件才能连接。

亮点

  • V3 引导加载程序支持会在固件加载时查询开发板外部 QSPI 闪存的布局,并在完整清除板载数据闪存时将其擦除(d953df62f)。

  • 传感器与开发板信息显示会在连接时查询所连摄像头的传感器模块,并在状态栏中显示(OV2640、OV5640、OV7690、OV7725、OV9650、MT9V034、LEPTON),同时还会显示新的开发板类型标签(0ffa82958)。

  • TensorFlow 模型拷贝让你不仅可以拷贝 .network 神经网络文件,还能将 .tflite 模型拷贝到摄像头(ad1aa98f0)。

  • 擦除板载数据闪存是一个新的 Tools 命令,它在确认提示后仅擦除摄像头的板载文件系统闪存,而不会重新烧写固件(d953df62f98686ac46)。

  • 首次运行 LED 指南是一个新的 OpenMV Cam LED Colors 对话框,用于说明板载 LED 的各种状态,并且可以永久关闭(c2d00422f)。

新功能

  • V3 引导加载程序会在固件加载时查询 QSPI 闪存布局,并仅在完整清除板载数据闪存时擦除外部 QSPI 闪存;connectClicked 在 V3 开发板上总是调用 bootloaderQSPIFLayout,但只有在设置了 forceFlashFSErase 时才运行 bootloaderQSPIFErase(QSPI 写入/内存测试命令已在 IO 层实现,但加载程序并未使用)(d953df62f)。

  • 传感器与开发板状态会在连接时查询摄像头的传感器模块并将其显示在状态栏中(OV2640、OV5640、OV7690、OV7725、OV9650、MT9V034、LEPTON),同时还会显示新的开发板类型标签,使用了新的 sensors.txt id 到名称的映射表(0ffa82958)。

  • 首次运行 LED 指南新增了一个 OpenMV Cam LED Colors 对话框,在首次运行时若打开的文档是 helloworld_1.py,则会在短暂延迟后弹出,用于说明板载 LED 的各种状态(绿灯闪烁 = 引导加载程序运行中,蓝灯 = 正在运行 main.py,白灯 = 硬件故障崩溃);勾选“不再显示此消息。”复选框会通过 DONT_SHOW_LED_STATES_AGAIN 设置持久保存关闭状态(c2d00422f)。

  • 打开 OpenMV Cam 驱动器文件夹是一个新的 Tools 菜单项,可在系统文件浏览器中打开摄像头已挂载的驱动器(a49f54305)。

  • 擦除板载数据闪存是一个新的 Tools 命令,它在确认提示后仅擦除板载文件系统闪存,而不会重新烧写固件(d953df62f98686ac46)。

  • TensorFlow 模型拷贝让模型拷贝对话框除了能拷贝 .network 神经网络文件外,还能将 .tflite 模型拷贝到摄像头;对话框的过滤器还新增了 Label Files (*.txt)All Files 条目(ad1aa98f00ffa82958c0dbdd9e5)。

  • 调试协议版本切换在与 3.5.3+ 固件通信时会拆分 GetAttributeSetAttributeFBEnableJPEGEnable 串行命令,以提高可靠性(83b9ca18f)。

  • 新增捆绑示例添加了 TensorFlow Lite mobilenet 和人物检测滑动窗口脚本,以及一个 STM32Cube.AI(nn_stm32cubeai.py)MNIST 示例、一个新的 32-modbus 文件夹(modbus_rtu_slave.pymodbus_apriltag.py)、WiFi 扩展板新增内容(http_client_sslstatic_ipmqtt_pub/mqtt_sub)、Arduino UART/SPI 从机以及 CAN(e26b90d7942ba8f5c4)。

其他变更与改进

  • 将 USB 调试协议更新为适配新固件:属性读取使用新的 32 位 ATTR_READ_2(0xCA)命令,属性、值和帧缓冲区启用载荷以 32 位长整型而非 16 位字发送(55d7cfe70)。

  • Save open script to OpenMV Cam 重新标记为 Save open script to OpenMV Cam (as main.py),以明确它写入的是 main.pya49f54305)。

  • Run Bootloader 重新标记为 Run Bootloader (Load Firmware),以明确其用途(ad1aa98f0)。

  • 示例菜单现在按其数字文件夹/文件前缀排序,并且显示名称中开头的 NN- 数字会被去除(ad1aa98f0)。

  • 输出和串行终端现在使用文本编辑器设置中可配置的串行终端制表符宽度(而非硬编码的宽度 8)将制表符渲染为空格(98686ac46)。

  • Linux 驱动器检测现在在关联摄像头驱动器时也接受以 fuseblk 挂载的文件系统(例如 exFAT/NTFS 卷)(c0dbdd9e5)。

  • 更新了 IDE 帮助中显示的捆绑 MicroPython HTML 文档集(库参考、esp8266/esp32 教程、生成的页面和图片)(e69d71f7c90b5c6eb597b0f645a)。

错误修复

  • 通过将累加器从 int 扩展为 64 位,修复了直方图统计(均值、四分位数、中位数、标准差)中的数值溢出问题,避免在大尺寸图像上得到错误的统计结果(55d7cfe70)。

  • 重做了 Linux 上的断开连接/弹出操作:移除了不可靠的 syncfs/closedir 刷新,现在改用普通的 umount 命令卸载驱动器,且不显示进度对话框(b86d5c62cc0dbdd9e530d4a7d2d)。

  • 现在只有在固件版本足够新或存在 .openmv_disk 标记文件时才会关联开发板的 USB 驱动器,从而防止 IDE 抓取到错误的可移动驱动器(e464eaed4)。

  • 修复了重连逻辑,使得在已连接状态下触发引导加载程序/擦除操作时现在会先干净地断开连接然后重试,从而避免卡在工作状态(d953df62f)。

  • 将向摄像头发送脚本时使用的注释/空白剥离器重写为一个能识别字符串的状态机,因此字符串内部的 # 字符不再被误认为注释,并且会正确处理尾随空白和文档字符串(24dff1b2f)。

  • 修复了若干连接/终端对话框消息的翻译字符串处理,使得其中内嵌的 shell 命令(sudo adduserpydfu 安装步骤)不再属于可翻译文本,并能正确渲染(b5705a57e)。

平台与工具支持

  • Qt Creator 基础版本: 4.0.2。

  • 将 OpenMV Cam H7 Plus 的开发板/固件名称从 OPENMV4R 重命名为 OPENMV4POMV4P_H7_32768_SDRAM),并以新名称捆绑其固件(c0dbdd9e5)。

  • 修正了 H7 Plus 开发板的显示名称,使用下划线而非空格(OpenMV_Cam_H7_Plus_(STM32H743_w/_SDRAM))(75764132c)。

  • 整个发布过程中更新了捆绑固件,最终 OPENMV2/3/4/4P 的版本为 3.5.2(最后一次提升在 15c07498c;此前的累积提升包括 42ba8f5c4 提升至 3.4.2、a99c2e3e1 提升至 3.4.3、e26b90d79 提升至 3.5.0,以及 97b0f645a 提升至 3.5.1)。

  • 捆绑固件版本:OPENMV2(Cam M4)1.4.11、OPENMV3(Cam M7)1.4.11、OPENMV4(Cam H7)1.2.15、OPENMV4P(Cam H7 Plus)1.2.15。

  • OpenMV IDE 版本从 2.2.1 提升至 2.4.0。

破坏性变更

USB 调试属性读取协议已从旧的 16 位 ATTR_READ(0x8A)命令切换为新的 32 位 ATTR_READ_2(0xCA)命令,属性、值和启用载荷现在以 32 位长整型发送;IDE 还会在连接时查询摄像头传感器 ID。这需要实现新协议的固件。捆绑的 1.2.15 / 1.4.11 固件已提供该协议,因此较旧的摄像头必须烧写新固件才能连接。