v1.3.0¶
v1.3.0 围绕结构化的命令/响应协议重写了摄像头通信层,并为 IDE 及其捆绑资源都添加了 IDE 内自动更新功能。它基于 Qt Creator 4.0.2 构建,并捆绑了 OpenMV 摄像头固件 2.0.0。在 macOS 和 Linux 上,DFU 固件烧录现在需要一次性安装 Python 以及 libusb 和 pyusb;详见“重大变更”。
亮点¶
重写的通信层。 串口/USB 调试代码围绕结构化的命令/响应协议重建,每条命令都带有响应长度以及开始/结束等待延迟,使连接、运行脚本、帧缓冲区和引导加载程序操作更加可靠。
IDE 内自动更新器。 IDE 现在会向
openmv.io检查是否有更新版本并提供一个 Download 按钮,同时单独下载并安装更新的资源包(示例、固件、文档),然后提示重启。一键固件更新。 状态栏中的固件版本现在是一个可点击的按钮,它会将已连接的摄像头与捆绑的固件进行比较,并在有更新版本时提供一键更新。
所有平台均支持 DFU 固件烧录。 现在可以在 Windows、macOS、Linux x86 和 Linux x86_64 上通过 DFU 烧录固件,固件选择器除
.bin外还接受.dfu文件。DFU 自动回退。 当固件更新期间无法访问串口引导加载程序时,IDE 现在会改为提供通过摄像头的 DFU 引导加载程序进行升级,并引导你添加
BOOT/RST跳线。
新功能¶
IDE 内更新器。 向
openmv.io检查是否有更新的 IDE 版本,并提供一个打开openmv.io/download的 Download 按钮,同时直接将openmv-ide-resources-X.Y.Z.zip资源包下载、解压并安装到 IDE 中,然后提示重启(8a1f92bb1、194acd828、b0be97e3e)。可点击的固件版本按钮。 状态栏中的版本标签变成了一个
QToolButton,连接到updateCam()流程,该流程读取捆绑的firmware/firmware.txt,将其与已连接的摄像头进行比较,并在有更新版本时提供 Firmware Update,可选择擦除内部文件系统(b2ac8defe)。DFU 文件支持。 引导加载程序/固件烧录对话框现在除
.bin外还接受.dfu文件,并在烧录.dfu时强制完整擦除内部文件系统。固件选择器过滤器扩展为Firmware Binary (*.bin *.dfu),.dfu强制擦除流程在4ad2be5f9中引入,b2ac8defe中添加了始终勾选但禁用的擦除复选框,它会根据所选文件扩展名自动切换(4ad2be5f9、b2ac8defe)。引导加载程序失败时自动回退到 DFU。 当
.bin固件更新无法启动串口引导加载程序时,IDE 现在会报告Unable to connect to the bootloader!,然后改为提供使用摄像头的 DFU 引导加载程序进行升级,警告 DFU 会擦除内部闪存文件系统,并引导你添加BOOT/RST跳线并重新连接,之后才运行DfuSeCommand.exe(Windows)(4ad2be5f9)。HoG 示例。 添加了一个使用
img.find_hog()的方向梯度直方图(Histogram of Oriented Gradients)可视化示例(09-Feature-Detection/hog.py)(b03a707f7)。
其他变更与改进¶
用
OpenMVPluginSerialPortCommand/Result类、__USBDBG_*和__BOOTLDR_*操作码以及command()/commandResult()辅助函数替换了旧的临时波特率/数据包代码,取代了write()/readAll()/isOpen()(b03a707f7、141122e21、b2ac8defe、1d72fe4bf、b4cf2fe43、c60936d5f)。Windows 串口驱动安装现在是静默/无人值守的,将
openmv.cmd/pybcdc.cmd驱动脚本从交互式的InfDefaultInstall切换为基于dpinst的安装程序,并添加并修复了 Visual C++ 可再发行组件安装程序(vcr.cmd,静默运行vcredist_x86.exe和vcredist_x64.exe)(a5a6e0590、754d0776d、b0be97e3e、452a29f0d、c051c6e30、ad1b674ef、565f1eccd)。
缺陷修复¶
修复了虚拟机内固件烧录和通信中断的问题,并放宽了各种命令超时以及帧缓冲区/发送缓冲区轮询,使连接和运行更加稳健。重新编程对话框现在提示“可能需要长达 5 分钟”,DFU 进程超时在
324f243f9中从 240s 提高到 300s(c051c6e30、b0be97e3e、1d72fe4bf、b4cf2fe43、324f243f9、c60936d5f)。修复了固件/IDE 更新可用性的比较逻辑,使得当较高字段相等时,较新的次版本号或补丁号不再错误地触发更新,并要求引导加载程序对话框在烧录前必须选定一个有效文件(4ad2be5f9)。
在读取后关闭了文件句柄(板卡列表、固件/版本文件),并修正了固件烧录块的填充,使其填充到
FLASH_WRITE_CHUNK_SIZE,从而防止固件更新期间出现句柄泄漏和最后一块填充错误(4ad2be5f9)。修复了 OpenMV
Help菜单和输出窗格:About OpenMV Cam 条目不再与平台的 About 角色冲突(AboutRole→ApplicationSpecificRole),输出窗格也不再抢占Alt/Cmd+ 数字快捷键(a0694eac7)。打开外部 OpenMV 网页链接(论坛、下载、支持)时,现在当无法启动 URL 时会报告“Failed to open”错误对话框,而不是默默地什么都不做(b0be97e3e)。
平台与工具支持¶
Qt Creator 基础版本: 4.0.2。
捆绑的摄像头固件: 更新至 2.0.0,为 OMV2 和 OMV7 提供了新的
firmware.bin/openmv.bin,以及新增的firmware.dfu/bootloader.dfu/firmware.elf/bootloader.elf。Windows DFU 烧录 使用捆绑的 ST
DfuSeCommand.exe、ST DfuSe USB 驱动包(Win7/Win8 上为 DfuSe v3.0.4.0,Win8.1 上为 v3.0.5.0)以及一个dfuse.cmd驱动安装程序新增(4ad2be5f9)。macOS 和 Linux DFU 烧录 从预构建的
dfu-util二进制文件迁移到捆绑的pydfu.py烧录器,IDE 会显示所需的 libusb/pyusb 安装命令。ac248c0ec曾短暂添加了 Linux x86_64 的dfu-util/dfu-prefix/dfu-suffix二进制文件,但324f243f9随后将它们全部移除,改用pydfu.py。最终版本不再附带任何dfu-util二进制文件;static.pro为所有非 Windows 主机捆绑pydfu数据目录,而 Windows 使用捆绑的 DfuSe 流程(ac248c0ec、324f243f9、7837a07da)。Linux udev 规则 更新为使用
SUBSYSTEM匹配(摄像头 VID 1209/PID abd1 tty 和 STM DFU 0483/df11),使设备和 DFU 符号链接在 32 位 Linux 上正常工作,并为较旧的 Qt 对跟随重定向的网络请求进行了保护(194acd828)。
重大变更¶
用于 macOS 和 Linux 的捆绑独立 dfu-util 二进制文件已被移除,由 Python pydfu.py 烧录器取代。在 macOS 和 Linux 上,固件 DFU 烧录现在需要一次性安装 Python 以及 libusb 和 pyusb(IDE 会显示确切的 MacPorts/HomeBrew/apt-get 命令)。Windows 继续使用捆绑的基于 DfuSe 的流程。没有脚本 API 方面的破坏性变更,Qt Creator 4.0.2 基础版本保持不变。