v4.4.0

v4.4.0 是一次重大的現代化更新版本,將 OpenMV IDE 從長期沿用的 Qt Creator 10.0.1 基礎重新移植到 Qt Creator 14.0.2,並在新基礎上重新套用完整的 OpenMV 外掛及所有分支客製化內容。在此之上,本版本還內建了嵌入式 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 類別之下,而未使用的 REPL 及直譯器選擇器工具列按鈕在 Python 編輯器中也已隱藏(d89f5985f)。在 Windows 上,IDE 現在會自動將內建的嵌入式 python.exe 註冊為預設直譯器,並將內建的語言伺服器視為已安裝(1d9ca003ed89f5985f)。

  • 更簡潔的設定檔目錄。 IDE 不再寫入未使用的 Qt Creator 設定檔(裝置、kits、工具鏈、Qt 版本),並直接在編輯器中開啟檔案(3771b0107),不再掃描系統尋找 qmake/Qt 版本(42807f25f),並避免載入未使用的裝置/工具鏈/kit 機制及開機雜訊(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 設定頁面精簡為僅保留登入/驗證及 proxy 控制項,隱藏啟用 Copilot、Node.js 路徑、dist 路徑及自動完成等選項(1cb967c5a)。

錯誤修正

  • 透過將序列讀取停滯逾時提高 10 倍並停用一條會造成序列終端機文字亂碼的 GET_STATE 解卡路徑,修正了重大的序列通訊問題(caeba6a16)。

  • 透過發出影格傾印解鎖指令並改寫讀取停滯處理方式(而非直接斷線),修正了 TinyUSB 架構相機的隨機序列斷線問題(6cf122a3c)。

  • 讓相機 get_state 處理能容忍過短/不完整的回覆,並確保在錯誤復原期間沖出緩衝的序列終端機文字,使記錄輸出不致遺失(c8b4248a6247a779dd)。

  • 修正了 OpenMV Cam 韌體載入時的 DFU 開機載入程式快閃記憶體分割區/alt-setting 編號(a8700d12d)。

  • 透過遵循全新的 hidden 板子旗標、將序號篩選改為反向篩選器,並為 Arduino Nano RP2040 Connect UF2 項目提供可運作的 picotool 設定,恢復了所有開機載入程式(63cee629b)。

  • 透過為人類可讀及 IMX 板子類型選擇使用各自獨立的歷史記錄鍵,修正了開機載入程式板子類型選擇對話框記住錯誤值的問題(a3325af32)。

  • 透過以微秒計算平均影格間隔、支援全新的 v21 ImageWriter 時間格式,並在轉換期間防範 null pixmap,修正了影片轉碼(Save Video)的時間戳記/影格率計算(f5c75c749f8f762b3e)。

  • 透過讓 pixmapUpdate() 防範 null 資料,修正了直方圖/影格緩衝區檢視在收到空(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)。

  • 透過不再對可勾選的訊息方塊強制套用 rich-text 格式,修正了訊息方塊文字渲染問題,使原始文字能正確顯示(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 上的 pylsp 搭配 astroid 3.3.5(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(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 重新移植是一次大規模的內部現代化,但不會破壞使用者既有專案。