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 開機載入程式進行升級,並引導你加裝 BOOTRST 跳線。

新功能

  • IDE 內更新程式。 會向 openmv.io 檢查是否有更新的 IDE 版本,並提供開啟 openmv.io/downloadDownload 按鈕,同時直接將 openmv-ide-resources-X.Y.Z.zip 資源套件下載、解壓並安裝至 IDE,然後提示重新啟動(8a1f92bb1194acd828b0be97e3e)。

  • 可點擊的韌體版本按鈕。 狀態列上的版本標籤改為串接到 updateCam() 流程的 QToolButton,該流程會讀取隨附的 firmware/firmware.txt,將其與已連線的相機進行比對,並在有更新版本時提供 Firmware Update,可選擇是否清除內部檔案系統(b2ac8defe)。

  • DFU 檔案支援。 開機載入程式/韌體燒錄對話方塊現在除了 .bin 之外也接受 .dfu 檔案,並在燒錄 .dfu 時強制執行完整的內部檔案系統清除。韌體選擇器篩選器已擴充為 Firmware Binary (*.bin *.dfu).dfu 強制清除流程於 4ad2be5f9 中引入,而 b2ac8defe 則加入了預設勾選且停用、會依所選檔案副檔名自動切換的清除核取方塊(4ad2be5f9b2ac8defe)。

  • 開機載入程式失敗時的自動 DFU 後備機制。.bin 韌體更新無法啟動序列開機載入程式時,IDE 現在會回報 Unable to connect to the bootloader!,然後改為提供使用相機的 DFU 開機載入程式進行升級,並警告 DFU 會清除內部快閃記憶體檔案系統,同時引導你加裝 BOOTRST 跳線並重新連線,之後才執行 DfuSeCommand.exe(Windows)(4ad2be5f9)。

  • HoG 範例。 新增了使用 img.find_hog() 的方向梯度直方圖視覺化範例(09-Feature-Detection/hog.py)(b03a707f7)。

其他變更與改進

  • OpenMVPluginSerialPortCommandResult 類別、__USBDBG_*__BOOTLDR_* 運算碼,以及 command()commandResult() 輔助函式取代了舊的臨時鮑率/封包程式碼,不再使用 write()readAll()isOpen()b03a707f7141122e21b2ac8defe1d72fe4bfb4cf2fe43c60936d5f)。

  • Windows 序列埠驅動程式安裝現在改為靜默/無人值守,將 openmv.cmdpybcdc.cmd 驅動程式指令碼從互動式的 InfDefaultInstall 切換為以 dpinst 為基礎的安裝程式,並新增與修正了 Visual C++ 可轉散發套件安裝程式(vcr.cmd,靜默執行 vcredist_x86.exevcredist_x64.exe)(a5a6e0590754d0776db0be97e3e452a29f0dc051c6e30ad1b674ef565f1eccd)。

錯誤修正

  • 修正了在虛擬機器內韌體燒錄與通訊中斷的問題,並放寬了各種命令逾時以及影格緩衝區/傳送緩衝區的輪詢,使連線與執行更為穩健。重新燒錄對話方塊現在會註明「最多可能需要 5 分鐘」,且 DFU 程序逾時已在 324f243f9 中從 240 秒提高至 300 秒(c051c6e30b0be97e3e1d72fe4bfb4cf2fe43324f243f9c60936d5f)。

  • 修正了韌體/IDE 更新可用性比對,使較新的次版本號或修補版本號在較高欄位相等時不再錯誤觸發,並要求開機載入程式對話方塊在燒錄前必須有有效的已選取檔案(4ad2be5f9)。

  • 在讀取後關閉了檔案控制代碼(板卡清單、韌體/版本檔案),並修正了韌體燒錄區塊的填補,使其填補至 FLASH_WRITE_CHUNK_SIZE,避免韌體更新期間發生控制代碼洩漏與最終區塊填補錯誤(4ad2be5f9)。

  • 修正了 OpenMV 的 Help 選單與輸出窗格:About OpenMV Cam 項目不再與平台的 About 角色衝突(AboutRoleApplicationSpecificRole),且輸出窗格不再搶占 AltCmd + 數字快捷鍵(a0694eac7)。

  • 開啟外部 OpenMV 網路連結(論壇、下載、支援)時,當無法啟動該 URL,現在會回報「Failed to open」錯誤對話方塊,而不再無聲無息地不做任何事(b0be97e3e)。

平台與工具支援

  • Qt Creator 基礎版本: 4.0.2。

  • 隨附相機韌體: 更新至 2.0.0,包含新的 firmware.binopenmv.bin,以及為 OMV2 與 OMV7 新增的 firmware.dfubootloader.dfufirmware.elfbootloader.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-utildfu-prefixdfu-suffix 二進位檔,但 324f243f9 隨後將其全部移除,改用 pydfu.py。最終發行版本不包含任何 dfu-util 二進位檔;static.pro 會為所有非 Windows 主機隨附 pydfu 資料目錄,而 Windows 則使用隨附的 DfuSe 流程(ac248c0ec324f243f97837a07da)。

  • 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 基礎版本維持不變。