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 // 定制项均在现代化的基础之上重新应用(d6c895be81fa75b397)。

  • 嵌入式 Python 语言服务器。 IDE 现已自带并自动使用内置的 pylsp(搭配 astroid 3.3.5),无需在 Windows、macOS 和 Linux x86_64 上单独执行 pip 安装即可获得离线 Python/MicroPython 代码补全(257addee05a2b3e72f94470798d)。

  • 所有平台上的 GitHub Copilot。 Copilot 已集成并默认启用,并为 Windows、macOS 和 Linux 内置了 Node.js 20.18.0 运行时,因此不再局限于特定机器,同时还提供了一个用于开启它的启动对话框(bb07d582b1cb967c5ab37e48040)。

  • 全新的 OpenMV DFU 引导加载程序。 一套完整实现的自定义 openmv_dfu 引导加载流程从 settings.json 驱动固件更新,其中包括一个"检测到处于 DFU 模式的开发板"对话框,提供安装最新发行版、加载特定固件和擦除文件系统等选项,并提供一条用于恢复变砖摄像头的回退引导加载程序路径(08b9d06766a6a9351d6d78d6571)。

  • 新摄像头支持。 新增对 OpenMV Cam N6、RT1062 和 AE3 开发板的支持,并将摄像头迁移到新的 37C5 USB 供应商 ID,同时更新了 DFU 驱动和 udev 规则(000ed8a87f453bc9454a16e04c26d78d6571)。

  • 更可靠的串口通信。 重大的串口通信修复解决了基于 TinyUSB 的摄像头出现的终端文本乱码和随机断连问题(caeba6a166cf122a3c)。

新功能

  • OpenMV DFU 引导加载程序。 全新的 openmv_dfu 引导加载系统配备专用的 DFU 驱动和回退引导加载机制,可在各类固件之间恢复变砖的摄像头(6a6a9351d6d78d6571)。该流程从 settings.json 驱动固件更新,并呈现一个"检测到处于 DFU 模式的开发板"对话框,提供安装最新发行版、加载特定固件和擦除文件系统等选项(08b9d0676ef19133b69c59d113c)。

  • 端口选择器中显示开发板名称。 串口选择对话框现在会探测每个端口,并在端口旁显示检测到的开发板名称(例如 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 开发板变砖(c5ce0ae1ae7cde1ec1)。

  • 自动、静默的 Python LSP 设置。 Python 语言服务器现在会自动安装和更新,不再弹出信息栏提示或刷屏控制台消息(d89f5985f),并且 Python 自动补全/文档悬停系统被重构为一个专用的 OpenMV 文档引擎,它解析内置的 HTML 库文档来驱动关键字高亮和工具提示(47e02873b4f9853f2182cefc931)。

  • Linux Python 解释器检测。 Linux 上的解释器检测现在是自动的,仅考虑来自 PATH 的 Python 3 解释器,并选择最新版本作为唯一默认项(214fdc758)。

  • Python 设置清理。 隐藏了按解释器管理的分组和 Interpreters 页面,Language Server Configuration 被归入 Python 类别下,并在 Python 编辑器中隐藏了未使用的 REPL 和解释器选择器工具栏按钮(d89f5985f)。在 Windows 上,IDE 现在会自动将内置的嵌入式 python.exe 注册为默认解释器,并将内置语言服务器视为已安装(1d9ca003ed89f5985f)。

  • 更整洁的配置目录。 IDE 不再写入未使用的 Qt Creator 设置文件(设备、套件、工具链、Qt 版本),而是直接在编辑器中打开文件(3771b0107),不再扫描系统中的 qmake/Qt 版本(42807f25f),并避免加载未使用的设备/工具链/套件相关机制以及启动时的杂项(902a357deb2666a35b)。

  • 更安全的更新。 更新 IDE 不再覆盖用户资源;只有受管理的资源文件夹(examples、firmware、html、models)会被删除并重新复制,此外 micropython-headers 也会被删除(它会单独安装,而不是通过此路径重新复制),并且在 firmware/settings.json 缺失或无效时会给出更清晰的错误提示(b4b8c208d3255ba4fb)。

  • 更快的 DFU 连接。 DFU 连接的等待时间已缩短,使刷写和连接更快(11d8c9fe34700bf678)。

  • 恢复 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 处理能够容忍较短/不完整的回复,并确保在错误恢复期间刷出已缓冲的串口终端文本,从而不丢失日志输出(c8b4248a6247a779dd)。

  • 修正了用于 OpenMV Cam 固件加载的 DFU 引导加载程序闪存分区/备用设置编号(a8700d12d)。

  • 通过遵循新的 hidden 开发板标志、将序列号过滤切换为反向过滤,并为 Arduino Nano RP2040 Connect 的 UF2 条目提供可用的 picotool 配置,恢复了所有引导加载程序(63cee629b)。

  • 通过为人类可读的开发板类型选择和 IMX 开发板类型选择使用各自独立的历史记录键,修复了引导加载程序开发板类型选择对话框记住错误值的问题(a3325af32)。

  • 通过以微秒为单位计算平均帧间隔、支持新的 v21 ImageWriter 时间格式,并在转换期间防范空 pixmap,修复了视频转码(Save Video)的时间戳/帧率计算问题(f5c75c749f8f762b3e)。

  • 通过让 pixmapUpdate() 防范空数据,修复了在直方图/帧缓冲区视图收到空(null)pixmap 时发生的崩溃(622cf5ea8)。

  • 恢复了文本编辑器中的悬停注解工具提示,使悬停在文本标记上时再次显示注解工具提示(1852d18e1)。

  • 阻止 GitHub Copilot 和 LED 颜色信息对话框在 IDE 正忙于连接或刷写时弹出(f8f762b3e)。

  • 在语言客户端中添加了崩溃保护,使文档内容变更处理不再在边缘情况下使 IDE 崩溃(7926ffe4c)。

  • 通过让 Python 插件在退出前异步等待进行中的检查,修复了 Python 语言服务器检查阻碍 IDE 干净退出的问题(9ff6c7936)。

  • 修复了 Linux 上的 Python 自动补全:语言客户端将自身根目录设为内置的 micropython-headers,并隐藏了冗余的编辑器工具栏补全弹出操作(d37f66a9a56e748f9d016fa73eb)。

  • 修复了临时/未保存文件的处理,使 Save As 使用文件对话框的初始目录,并且 Save Items 对话框和 Diff 编辑器不再显示内部临时文件路径(b7f0bb378c8e7b6b8f6b128c34c)。

  • 保存未命名/临时缓冲区时,Save-As 对话框现在默认使用合适的 .py 文件名,而不再是空名称(3001fdfff)。

  • 临时/未命名文档在被修改后现在会提示保存,被排除在自动保存之外,并正确地通过 Save-As 处理(f87b71cf0)。

  • 修复了 Recent Files 菜单的排序,使重新打开一个已列出的文件不再改变其顺序,并且文件对话框现在默认指向 projects 目录(d49c0c993)。

  • 通过不再对可勾选的消息框强制使用富文本格式,修复了消息框文本渲染问题,使原始文本能够正确显示(0c565502f)。

  • 修复了工具提示颜色,使工具提示在浅色主题下正确渲染(35cbf077b)。

  • 针对核心设置、语言客户端、MSVC 工具链、项目浏览器和 Python 插件的通用 Qt Creator 稳定性和清理修复(836b163dc134f43cb8)。

  • 修正了 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 规则(000ed8a871b950c8c6)。

  • OpenMV Cam RT1062 现已在新的自定义 USB VID/PID(37C5:1060)下受支持,包括 DFU 驱动、udev 规则,并为旧设备保留了 1209:ABD1 的旧版条目(f453bc945d55d6441f)。

  • OpenMV Cam AE3 现已受支持,包括 Windows DFU 驱动、其固件/配置镜像树,以及 USB VID/PID(已更新为运行时 37C5:16E3 / 引导加载程序 37C5:96E3)(4a16e04c2cc52e76f53f75e7de48eb80b129)。

  • 全新的 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,同时仍然支持新旧两种固件(6d78d65716a6a9351d500b1a0bf)。

  • PAG7936 图像传感器已添加到可识别的传感器列表中(f9e3f3461)。

  • 嵌入式 Python 3.13 解释器已为 macOS、Linux x86_64、Linux arm64 和 Linux arm 内置(9133b1516),并附带原生的 libpython3.13ujson 共享库(d3aa663d8a2cb24e74)。

  • 内置语言服务器: 在 Windows、macOS 和 Linux x86_64 上提供搭配 astroid 3.3.5 的 pylsp257addee0)。Windows 构建附带一个嵌入式 CPython,内含 python-lsp-server 1.12.0、jedi 0.17.2、docstring_to_markdown 0.15、pip 24.2 和 distlib 0.3.9(9b6434602069807cd35f2e451963b6c6c312)。

  • 内置 Node.js 20.18.0 "Iron" LTS 运行时,面向 Windows、macOS、Linux arm64、Linux x64 和 Linux armv7,以在所有平台上启用 GitHub Copilot(bb07d582b6db78bf451cb967c5a)。

  • 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:ABD1 VID 的开发板现在被标记为"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 的重置基础是一次大规模的内部现代化改造,但不会破坏用户项目。