v2.4.0

v2.4.0 以 Qt Creator 4.0.2 為基礎,重點在於全新的 V3 開機載入程式(韌體載入時查詢 QSPI 快閃記憶體配置,並在完整清除板載資料快閃記憶體時一併清除),於狀態列即時回報感測器與板子資訊,以及與隨附韌體相符的全新 32 位元 USB 偵錯通訊協定。此版本還新增了首次執行的 LED 指引,以及大量全新的 TensorFlow、Modbus 與 WiFi 範例。由於偵錯通訊協定有所變更,相機必須執行新的隨附韌體才能連線。

重點摘要

  • V3 開機載入程式支援 會在韌體載入時查詢板子外部 QSPI 快閃記憶體的配置,並在完整清除板載資料快閃記憶體時一併清除(d953df62f)。

  • 感測器與板子回報 會在連線時查詢相機的感測器模組並顯示於狀態列(OV2640、OV5640、OV7690、OV7725、OV9650、MT9V034、LEPTON),並附帶全新的板子類型標籤(0ffa82958)。

  • TensorFlow 模型複製 讓你不僅能複製 .network 神經網路檔案,還能將 .tflite 模型複製到相機(ad1aa98f0)。

  • Erase Onboard Data Flash 是新的 Tools 命令,可在確認提示後僅清除相機的板載檔案系統快閃記憶體,而不重新燒錄韌體(d953df62f98686ac46)。

  • 首次執行 LED 指引 是新的 OpenMV Cam LED Colors 對話方塊,說明板載 LED 的各種狀態,並可永久關閉(c2d00422f)。

新功能

  • V3 開機載入程式 會在韌體載入時查詢 QSPI 快閃記憶體配置,並僅在完整清除板載資料快閃記憶體時才清除外部 QSPI 快閃記憶體;connectClicked 在 V3 板上一律會驅動 bootloaderQSPIFLayout,但只有在設定 forceFlashFSErase 時才會執行 bootloaderQSPIFErase(QSPI 寫入/記憶體測試命令已在 IO 層實作,但載入程式並未實際使用)(d953df62f)。

  • 感測器與板子狀態 會在連線時查詢相機的感測器模組並顯示之(OV2640、OV5640、OV7690、OV7725、OV9650、MT9V034、LEPTON)於狀態列,並附帶全新的板子類型標籤,使用新的 sensors.txt id 對名稱對應表(0ffa82958)。

  • 首次執行 LED 指引 新增了一個 OpenMV Cam LED Colors 對話方塊,當首次執行且開啟的文件為 helloworld_1.py 時,會在短暫延遲後彈出,說明板載 LED 的各種狀態(綠燈閃爍 = 開機載入程式執行中、藍燈 = 執行 main.py、白燈 = 硬體故障緊急停止);勾選「Don't show this message again.」核取方塊後,會透過 DONT_SHOW_LED_STATES_AGAIN 設定永久保留此關閉狀態(c2d00422f)。

  • Open OpenMV Cam Drive folder 是新的 Tools 選單項目,可在系統檔案瀏覽器中開啟相機掛載的磁碟機(a49f54305)。

  • Erase Onboard Data Flash 是新的 Tools 命令,可在確認提示後僅清除板載檔案系統快閃記憶體,而不重新燒錄韌體(d953df62f98686ac46)。

  • TensorFlow 模型複製 讓模型複製對話方塊除了 .network 神經網路檔案外,也能將 .tflite 模型複製到相機;對話方塊篩選器還新增了 Label Files (*.txt)All Files 項目(ad1aa98f00ffa82958c0dbdd9e5)。

  • 偵錯通訊協定版本切換 在與韌體 3.5.3+ 通訊時,會將 GetAttributeSetAttributeFBEnableJPEGEnable 序列命令拆分以提高可靠性(83b9ca18f)。

  • 全新隨附範例 新增了 TensorFlow Lite mobilenet 與人物偵測滑動視窗指令碼,外加一個 STM32Cube.AI(nn_stm32cubeai.py)MNIST 範例、一個新的 32-modbus 資料夾(modbus_rtu_slave.pymodbus_apriltag.py)、WiFi 擴充板新增項目(http_client_sslstatic_ipmqtt_pubmqtt_sub)、Arduino UART/SPI 從屬,以及 CAN(e26b90d7942ba8f5c4)。

其他變更與改進

  • 將 USB 偵錯通訊協定更新為新韌體:屬性讀取改用新的 32 位元 ATTR_READ_2(0xCA)命令,且屬性、值與影格緩衝區啟用的酬載改以 32 位元長整數而非 16 位元字組傳送(55d7cfe70)。

  • Save open script to OpenMV Cam 重新命名為 Save open script to OpenMV Cam (as main.py),以釐清其寫入的是 main.pya49f54305)。

  • Run Bootloader 重新命名為 Run Bootloader (Load Firmware),以釐清其用途(ad1aa98f0)。

  • 範例選單現在會依其數字資料夾/檔案前綴排序,且顯示名稱會去掉開頭的 NN- 數字(ad1aa98f0)。

  • 輸出與序列終端機現在會使用文字編輯器設定中可設定的序列終端機 tab 寬度,將 tab 顯示為空格,而非寫死的寬度 8(98686ac46)。

  • Linux 磁碟機偵測在關聯相機磁碟機時,現在也接受以 fuseblk 掛載的檔案系統(例如 exFAT/NTFS 磁碟區)(c0dbdd9e5)。

  • 更新了 IDE 說明中顯示的隨附 MicroPython HTML 文件集(函式庫參考、esp8266/esp32 教學、產生的頁面與圖片)(e69d71f7c90b5c6eb597b0f645a)。

錯誤修正

  • 透過將累加器從 int 加寬為 64 位元,修正了直方圖統計(平均值、四分位數、中位數、標準差)中的數值溢位,避免在大型影像上產生錯誤的統計結果(55d7cfe70)。

  • 重新調整了 Linux 上的中斷連線/退出機制:移除了不可靠的 syncfsclosedir 清空動作,現在改以單純的 umount 命令卸載磁碟機,且不顯示進度對話方塊(b86d5c62cc0dbdd9e530d4a7d2d)。

  • 現在只有在韌體夠新或存在 .openmv_disk 標記檔案時,才會關聯板子的 USB 磁碟機,避免 IDE 抓取到錯誤的卸除式磁碟機(e464eaed4)。

  • 修正了重新連線邏輯,使得在已連線時觸發開機載入程式/清除操作時,現在會先乾淨地中斷連線再重試,避免卡在工作中的狀態(d953df62f)。

  • 將傳送指令碼至相機時使用的註解/空白移除器重寫為具備字串感知能力的狀態機,因此字串內的 # 字元不再被誤判為註解,並會正確處理尾端空白與 docstring(24dff1b2f)。

  • 修正了數個連線/終端機對話方塊訊息的翻譯字串處理,使內嵌的 shell 命令(sudo adduserpydfu 安裝步驟)不再成為可翻譯文字的一部分,並能正確顯示(b5705a57e)。

平台與工具支援

  • Qt Creator 基礎版本: 4.0.2。

  • 將 OpenMV Cam H7 Plus 板子/韌體從 OPENMV4R 重新命名為 OPENMV4POMV4P_H7_32768_SDRAM),並以新名稱隨附其韌體(c0dbdd9e5)。

  • 修正了 H7 Plus 板子的顯示名稱,改用底線而非空格(OpenMV_Cam_H7_Plus_(STM32H743_w/_SDRAM))(75764132c)。

  • 隨附韌體在整個版本期間經過更新,最終為 OPENMV2/3/4/4P 的 3.5.2 版(最後一次提升於 15c07498c;先前累計的提升包括 42ba8f5c4 提升至 3.4.2、a99c2e3e1 提升至 3.4.3、e26b90d79 提升至 3.5.0,以及 97b0f645a 提升至 3.5.1)。

  • 隨附韌體版本:OPENMV2(Cam M4)1.4.11、OPENMV3(Cam M7)1.4.11、OPENMV4(Cam H7)1.2.15、OPENMV4P(Cam H7 Plus)1.2.15。

  • OpenMV IDE 版本從 2.2.1 提升至 2.4.0。

破壞性變更

USB 偵錯屬性讀取通訊協定已從舊的 16 位元 ATTR_READ(0x8A)命令切換為新的 32 位元 ATTR_READ_2(0xCA)命令,且屬性、值與啟用酬載現在以 32 位元長整數傳送;IDE 還會在連線時查詢相機感測器 ID。這需要實作新通訊協定的韌體。隨附的 1.2.15 / 1.4.11 韌體已提供此功能,因此較舊的相機必須燒錄為新韌體才能連線。