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 //客製化內容(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類別之下,而未使用的 REPL 及直譯器選擇器工具列按鈕在 Python 編輯器中也已隱藏(d89f5985f)。在 Windows 上,IDE 現在會自動將內建的嵌入式python.exe註冊為預設直譯器,並將內建的語言伺服器視為已安裝(1d9ca003e、d89f5985f)。更簡潔的設定檔目錄。 IDE 不再寫入未使用的 Qt Creator 設定檔(裝置、kits、工具鏈、Qt 版本),並直接在編輯器中開啟檔案(3771b0107),不再掃描系統尋找 qmake/Qt 版本(42807f25f),並避免載入未使用的裝置/工具鏈/kit 機制及開機雜訊(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 設定頁面精簡為僅保留登入/驗證及 proxy 控制項,隱藏啟用 Copilot、Node.js 路徑、dist 路徑及自動完成等選項(1cb967c5a)。
錯誤修正¶
透過將序列讀取停滯逾時提高 10 倍並停用一條會造成序列終端機文字亂碼的
GET_STATE解卡路徑,修正了重大的序列通訊問題(caeba6a16)。透過發出影格傾印解鎖指令並改寫讀取停滯處理方式(而非直接斷線),修正了 TinyUSB 架構相機的隨機序列斷線問題(6cf122a3c)。
讓相機
get_state處理能容忍過短/不完整的回覆,並確保在錯誤復原期間沖出緩衝的序列終端機文字,使記錄輸出不致遺失(c8b4248a6、247a779dd)。修正了 OpenMV Cam 韌體載入時的 DFU 開機載入程式快閃記憶體分割區/alt-setting 編號(a8700d12d)。
透過遵循全新的
hidden板子旗標、將序號篩選改為反向篩選器,並為 Arduino Nano RP2040 Connect UF2 項目提供可運作的 picotool 設定,恢復了所有開機載入程式(63cee629b)。透過為人類可讀及 IMX 板子類型選擇使用各自獨立的歷史記錄鍵,修正了開機載入程式板子類型選擇對話框記住錯誤值的問題(a3325af32)。
透過以微秒計算平均影格間隔、支援全新的 v21
ImageWriter時間格式,並在轉換期間防範 null pixmap,修正了影片轉碼(Save Video)的時間戳記/影格率計算(f5c75c749、f8f762b3e)。透過讓
pixmapUpdate()防範 null 資料,修正了直方圖/影格緩衝區檢視在收到空(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)。
透過不再對可勾選的訊息方塊強制套用 rich-text 格式,修正了訊息方塊文字渲染問題,使原始文字能正確顯示(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 上的
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(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 重新移植是一次大規模的內部現代化,但不會破壞使用者既有專案。