v4.4.0¶
v4.4.0 是一次重大的现代化版本,它将 OpenMV IDE 从长期使用的 Qt Creator 10.0.1 基础迁移到 Qt Creator 14.0.2,并在更新的基础之上重新应用了完整的 OpenMV 插件以及所有 fork 定制项。在此之上,本次版本还内置了一个嵌入式 Python 语言服务器以支持离线代码补全,在所有平台上启用了 GitHub Copilot,引入了全新的自定义 OpenMV DFU 引导加载程序,并将 OpenMV 摄像头迁移到新的 37C5 USB 供应商 ID。基础版本的变更是一次大规模的内部现代化改造,但不会破坏用户项目;少数用户可见的工作流变更请参见 Breaking changes。
亮点¶
Qt Creator 14.0.2 重置基础。 IDE 从 Qt Creator 10.0.1 迁移到 14.0.2,整个 OpenMV 插件以及所有
// OPENMV-DIFF //定制项均在现代化的基础之上重新应用(d6c895be8、1fa75b397)。嵌入式 Python 语言服务器。 IDE 现已自带并自动使用内置的
pylsp(搭配 astroid 3.3.5),无需在 Windows、macOS 和 Linux x86_64 上单独执行 pip 安装即可获得离线 Python/MicroPython 代码补全(257addee0、5a2b3e72f、94470798d)。所有平台上的 GitHub Copilot。 Copilot 已集成并默认启用,并为 Windows、macOS 和 Linux 内置了 Node.js 20.18.0 运行时,因此不再局限于特定机器,同时还提供了一个用于开启它的启动对话框(bb07d582b、1cb967c5a、b37e48040)。
全新的 OpenMV DFU 引导加载程序。 一套完整实现的自定义
openmv_dfu引导加载流程从settings.json驱动固件更新,其中包括一个"检测到处于 DFU 模式的开发板"对话框,提供安装最新发行版、加载特定固件和擦除文件系统等选项,并提供一条用于恢复变砖摄像头的回退引导加载程序路径(08b9d0676、6a6a9351d、6d78d6571)。新摄像头支持。 新增对 OpenMV Cam N6、RT1062 和 AE3 开发板的支持,并将摄像头迁移到新的
37C5USB 供应商 ID,同时更新了 DFU 驱动和 udev 规则(000ed8a87、f453bc945、4a16e04c2、6d78d6571)。更可靠的串口通信。 重大的串口通信修复解决了基于 TinyUSB 的摄像头出现的终端文本乱码和随机断连问题(caeba6a16、6cf122a3c)。
新功能¶
OpenMV DFU 引导加载程序。 全新的
openmv_dfu引导加载系统配备专用的 DFU 驱动和回退引导加载机制,可在各类固件之间恢复变砖的摄像头(6a6a9351d、6d78d6571)。该流程从settings.json驱动固件更新,并呈现一个"检测到处于 DFU 模式的开发板"对话框,提供安装最新发行版、加载特定固件和擦除文件系统等选项(08b9d0676、ef19133b6、9c59d113c)。端口选择器中显示开发板名称。 串口选择对话框现在会探测每个端口,并在端口旁显示检测到的开发板名称(例如
COM3: OpenMV Cam H7),而不再只是一个裸的端口名称(9837d6cb5)。标签式编辑器。 恢复了标签式编辑器插件,在编辑区上方添加了一行文档标签,用于在打开的文件之间切换(c8519c09f),并且现在可以跨会话保存和恢复标签顺序(55ccfb207)。
Python 语法高亮。 为编辑器新增了专门的 Python 语法高亮定义,包含字符串格式化、浮点数和关键字规则(9be46c0c3)。
其他变更与改进¶
固件加载重构。 固件加载代码被拆分为各类型独立的引导加载处理器(OpenMV DFU、Arduino DFU、BOSSAC、i.MX、picotool),为 Arduino DFU 开发板添加了 touch-to-reset PID 处理,并为采用替代 VID/PID 的设备添加了显式的"Legacy"开发板变体(9f465f9f8)。
STM32 ROM 引导加载程序防护。 IDE 现在会在将
firmware.dfu/openmv.dfu加载到 STM32 ROM 恢复引导加载程序时发出警告或加以阻止,并建议仅使用bootloader.dfu,以避免因芯片 ROM 引导加载程序的缺陷而使 STM32H7 开发板变砖(c5ce0ae1a、e7cde1ec1)。自动、静默的 Python LSP 设置。 Python 语言服务器现在会自动安装和更新,不再弹出信息栏提示或刷屏控制台消息(d89f5985f),并且 Python 自动补全/文档悬停系统被重构为一个专用的 OpenMV 文档引擎,它解析内置的 HTML 库文档来驱动关键字高亮和工具提示(47e02873b、4f9853f21、82cefc931)。
Linux Python 解释器检测。 Linux 上的解释器检测现在是自动的,仅考虑来自
PATH的 Python 3 解释器,并选择最新版本作为唯一默认项(214fdc758)。Python 设置清理。 隐藏了按解释器管理的分组和 Interpreters 页面,Language Server Configuration 被归入
Python类别下,并在 Python 编辑器中隐藏了未使用的 REPL 和解释器选择器工具栏按钮(d89f5985f)。在 Windows 上,IDE 现在会自动将内置的嵌入式python.exe注册为默认解释器,并将内置语言服务器视为已安装(1d9ca003e、d89f5985f)。更整洁的配置目录。 IDE 不再写入未使用的 Qt Creator 设置文件(设备、套件、工具链、Qt 版本),而是直接在编辑器中打开文件(3771b0107),不再扫描系统中的 qmake/Qt 版本(42807f25f),并避免加载未使用的设备/工具链/套件相关机制以及启动时的杂项(902a357de、b2666a35b)。
更安全的更新。 更新 IDE 不再覆盖用户资源;只有受管理的资源文件夹(examples、firmware、html、models)会被删除并重新复制,此外
micropython-headers也会被删除(它会单独安装,而不是通过此路径重新复制),并且在firmware/settings.json缺失或无效时会给出更清晰的错误提示(b4b8c208d、3255ba4fb)。恢复 OpenMV 菜单和 UI 定制项。 重新应用了精简后的 OpenMV 菜单布局,隐藏了 Build 和 Debug 菜单并移除了项目管理操作(7503f2bec);代码补全引擎重新具备了类/方法感知能力以及用于 MicroPython 自动补全的 public/private 关键字作用域(55fc348ea);终端 ANSI 颜色渲染被重新应用,带有主题感知的亮/暗值以及对光标后退转义序列的支持(c6787a27a);图像查看器工具栏经过定制,加入了分辨率/缩放工具提示,并重新放置了 Fit-to-Screen 操作(734fec693)。
恢复内置资源。 在重置基础的精简之后,刷写工具、DFU 驱动、固件以及完整的示例/脚本树被恢复到共享资源中(33c8354bc),并重新应用了 OpenMV 的自定义应用启动逻辑:它强制要求
TextEditor插件(OpenMV 和 TabbedEditor 插件检查虽存在但被禁用),安装了自定义的 Qt 消息处理器,移除了-client/-pid/-block命令行选项,并强制单实例运行(06c788f3d)。插件缺失时的失败处理。 当所需插件缺失或被禁用时,应用现在会以清晰的错误硬性失败,OpenMV 插件新增了对 Copilot 的依赖,并隐藏了若干文本编辑器选项(Behavior 设置中的
Prefer single line comments和注释位置选择器,以及 Display 设置中的Highlight selection)(1bc02b1f3)。更短的串口超时。 串口协议超时已缩短(读取由 10000 缩短至 5000 毫秒,写入由 6000 缩短至 3000 毫秒)以更快地反馈失败,文档中记录的
-override_read_timeout默认值也已相应更新(641385af4)。卡死端口恢复。 在命令执行中途卡死的串口现在使用
GET_STATE查询(可通过 get-state 设置进行配置)来恢复,而不再使用脚本运行查询(a8598f550)。设置对话框顺序。 设置对话框隐藏了按字母排序类别的复选框,使页面列表保持 OpenMV 设定的顺序(1cb967c5a)。
简化的 Copilot 设置。 Copilot 设置页面被精简为仅保留登录/认证和代理控制项,隐藏了启用 Copilot、Node.js 路径、dist 路径和自动补全等选项(1cb967c5a)。
缺陷修复¶
通过将串口读取停滞超时增大 10 倍,并禁用一条会导致串口终端文本乱码的基于
GET_STATE的解卡路径,修复了重大的串口通信问题(caeba6a16)。通过发出帧转储解锁命令并重做读取停滞处理(而不是断开连接),修复了基于 TinyUSB 的摄像头出现的随机串口断连问题(6cf122a3c)。
使摄像头
get_state处理能够容忍较短/不完整的回复,并确保在错误恢复期间刷出已缓冲的串口终端文本,从而不丢失日志输出(c8b4248a6、247a779dd)。修正了用于 OpenMV Cam 固件加载的 DFU 引导加载程序闪存分区/备用设置编号(a8700d12d)。
通过遵循新的
hidden开发板标志、将序列号过滤切换为反向过滤,并为 Arduino Nano RP2040 Connect 的 UF2 条目提供可用的 picotool 配置,恢复了所有引导加载程序(63cee629b)。通过为人类可读的开发板类型选择和 IMX 开发板类型选择使用各自独立的历史记录键,修复了引导加载程序开发板类型选择对话框记住错误值的问题(a3325af32)。
通过以微秒为单位计算平均帧间隔、支持新的 v21
ImageWriter时间格式,并在转换期间防范空 pixmap,修复了视频转码(Save Video)的时间戳/帧率计算问题(f5c75c749、f8f762b3e)。通过让
pixmapUpdate()防范空数据,修复了在直方图/帧缓冲区视图收到空(null)pixmap 时发生的崩溃(622cf5ea8)。恢复了文本编辑器中的悬停注解工具提示,使悬停在文本标记上时再次显示注解工具提示(1852d18e1)。
阻止 GitHub Copilot 和 LED 颜色信息对话框在 IDE 正忙于连接或刷写时弹出(f8f762b3e)。
在语言客户端中添加了崩溃保护,使文档内容变更处理不再在边缘情况下使 IDE 崩溃(7926ffe4c)。
通过让 Python 插件在退出前异步等待进行中的检查,修复了 Python 语言服务器检查阻碍 IDE 干净退出的问题(9ff6c7936)。
修复了 Linux 上的 Python 自动补全:语言客户端将自身根目录设为内置的
micropython-headers,并隐藏了冗余的编辑器工具栏补全弹出操作(d37f66a9a、56e748f9d、016fa73eb)。修复了临时/未保存文件的处理,使 Save As 使用文件对话框的初始目录,并且 Save Items 对话框和 Diff 编辑器不再显示内部临时文件路径(b7f0bb378、c8e7b6b8f、6b128c34c)。
保存未命名/临时缓冲区时,Save-As 对话框现在默认使用合适的
.py文件名,而不再是空名称(3001fdfff)。临时/未命名文档在被修改后现在会提示保存,被排除在自动保存之外,并正确地通过 Save-As 处理(f87b71cf0)。
修复了 Recent Files 菜单的排序,使重新打开一个已列出的文件不再改变其顺序,并且文件对话框现在默认指向 projects 目录(d49c0c993)。
通过不再对可勾选的消息框强制使用富文本格式,修复了消息框文本渲染问题,使原始文本能够正确显示(0c565502f)。
修复了工具提示颜色,使工具提示在浅色主题下正确渲染(35cbf077b)。
针对核心设置、语言客户端、MSVC 工具链、项目浏览器和 Python 插件的通用 Qt Creator 稳定性和清理修复(836b163dc、134f43cb8)。
修正了 Arduino Nano 33 BLE Sense 内置固件文件夹的名称(b1d8ac227),并修复了 AE3 DFU 引导加载程序产品 ID 的 Linux udev 规则,将
96E3更正为小写的96e3,使 udev 区分大小写的idProduct匹配正常工作(2cd43c96b)。AE3 DFU 引导加载程序的 Linux udev 规则也已更新为openmvdfu符号链接使用的37c5:afe3产品 ID(b99555637)。
平台与工具支持¶
Qt Creator 基础版本: 14.0.2(从 10.0.1 重置基础而来)。
OpenMV Cam N6 现已受支持(VID:PID 37C5:1206,DFU 引导加载程序 37C5:9206),包括固件设置、Windows DFU 驱动和 Linux udev 规则(000ed8a87、1b950c8c6)。
OpenMV Cam RT1062 现已在新的自定义 USB VID/PID(37C5:1060)下受支持,包括 DFU 驱动、udev 规则,并为旧设备保留了 1209:ABD1 的旧版条目(f453bc945、d55d6441f)。
OpenMV Cam AE3 现已受支持,包括 Windows DFU 驱动、其固件/配置镜像树,以及 USB VID/PID(已更新为运行时 37C5:16E3 / 引导加载程序 37C5:96E3)(4a16e04c2、cc52e76f5、3f75e7de4、8eb80b129)。
全新的 USB VID/PID 体系: OpenMV 摄像头迁移到供应商 ID
37C5,并采用新的引导加载程序/DFU ID(例如 37C5:1202/9202 M4、1203/9203 M7、1204/9204 H7、124A/924A H7 Plus、1205/9205),将旧的 1209:ABD1 开发板重新标记为 Legacy,同时仍然支持新旧两种固件(6d78d6571、6a6a9351d、500b1a0bf)。PAG7936 图像传感器已添加到可识别的传感器列表中(f9e3f3461)。
嵌入式 Python 3.13 解释器已为 macOS、Linux x86_64、Linux arm64 和 Linux arm 内置(9133b1516),并附带原生的
libpython3.13和ujson共享库(d3aa663d8、a2cb24e74)。内置语言服务器: 在 Windows、macOS 和 Linux x86_64 上提供搭配 astroid 3.3.5 的
pylsp(257addee0)。Windows 构建附带一个嵌入式 CPython,内含 python-lsp-server 1.12.0、jedi 0.17.2、docstring_to_markdown 0.15、pip 24.2 和 distlib 0.3.9(9b6434602、069807cd3、5f2e45196、3b6c6c312)。内置 Node.js 20.18.0 "Iron" LTS 运行时,面向 Windows、macOS、Linux arm64、Linux x64 和 Linux armv7,以在所有平台上启用 GitHub Copilot(bb07d582b、6db78bf45、1cb967c5a)。
Alif Security Toolkit 经签名的 boot/system-package 二进制文件和用户指南已为 Windows、macOS 和 Linux x86_64 内置,用于配置基于 Alif 的 OpenMV 摄像头(例如 AE3)(f63851be3)。
Linux 桌面集成 已恢复,会安装应用程序桌面条目和 AppStream 元数据,并注册 Python(
.py)MIME 类型(3fa25f571)。
破坏性变更¶
脚本 API 没有任何变化。以下用户可见的工作流和行为变更可能会被注意到:
新的 USB 供应商 ID。 OpenMV 摄像头迁移到供应商 ID
37C5,并采用新的产品和 DFU 引导加载程序 ID;使用旧的1209:ABD1VID 的开发板现在被标记为"Legacy"。IDE 同时支持新旧两种固件,但 Linux 用户必须重新安装更新后的 udev 规则,新的 ID 才能被识别。旧版开发板条目被隐藏。 OpenMV Cam M4/M7/H7/H7 Plus/Pure Thermal 开发板的旧版变体现在会通过一个新的
legacy开发板标志(不同于已有的hidden标志)从固件/开发板选择列表中被抑制,因此特别需要旧版开发板条目的用户将不再在下拉列表中看到它(6d78d6571)。更短的串口超时。 默认响应读取超时从 10000 毫秒降至 5000 毫秒,写入超时从 6000 毫秒降至 3000 毫秒(
-override_read_timeout默认值现记录为 5000)。依赖较长默认值的慢速开发板/链路可能会更早超时。
Qt Creator 14.0.2 的重置基础是一次大规模的内部现代化改造,但不会破坏用户项目。