v4.2.2

v4.2.2 新增 PNG 影像支援(透過 lodepng 解碼/編碼)、表格驅動的內建模型載入器、Portenta OV5640 支援、Edge-Impulse TensorFlow 更新以及 ulab 4.0。RPC CAN 設定 API 有所變動——請閱讀下方的破壞性變更。

重點摘要

  • PNG 支援 —— Image.to_png()image.PNG 以及 PNG 檔案讀寫。

  • tf.load_builtin_model() —— 表格驅動的內建模型,可於建置時替換或新增。

  • Portenta H7 —— OV5640 相機支援(含自動對焦)。

  • MicroPython/ulab —— ulab 更新至 4.0.0。

  • 破壞性變更: RPC CAN 設定 API 有所變動 —— 請參閱破壞性變更。

新功能

  • PNG 影像格式 —— 新增 Image.to_png() 方法、image.PNG / PIXFORMAT_PNG 常數、PNG 檔案載入/儲存(讀寫 .png),並透過整合的 lodepng 編解碼器在 image.to() 轉換中支援 PNG 輸出。

  • tf.load_builtin_model(path) —— 載入韌體內建模型並回傳 (labels, net) 元組;內建模型現已採表格驅動,可於建置時替換或新增。

其他變更與改進

  • TensorFlow / Edge Impulse —— 內附的推論函式庫更新至 Edge Impulse ei-V2.5.0,person_detection 模型移入內建模型表,並在所有 Cortex-M0+/M4/M7/M55 建置中補上缺少的 TensorFlow 運算子,讓更多 Edge Impulse 模型得以執行。

  • ulab 更新至 4.0.0。

  • 以 1200 bps 開啟 USB 虛擬序列埠現在會觸發 Arduino 風格的觸碰重置(touch reset)進入開機載入程式。

  • WINC1500 WiFi 模組韌體更新至 19.7.6(含更新器指令碼),現在會回報實際的主機驅動程式版本。

  • RP2 連接埠現在會印出「MPY: soft reboot」,並新增 UART 初始化/反初始化功能。

錯誤修正

  • 修正 Arduino Nano RP2040 Connect 的原始影格緩衝區大小,以及 Arduino Nicla Vision 的 USB 產品 ID(修正 USB 列舉)。

硬體與開發板支援

  • Arduino Portenta H7 —— OV5640 相機支援(含自動對焦);在 Portenta 上停用 GC2145。

  • Arduino Nano RP2040 Connect —— 記憶體設定與全新檔案系統範本。

  • WiFi Shield (WINC1500) —— 韌體更新至 19.7.6。

破壞性 API 變更

v4.2.1 與 v4.2.2 之間使用者可見的 API 破壞性變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 函式庫。

每項變更都標示其影響程度:

  • minor —— 範圍狹窄的 API;僅影響使用到它的指令碼。

  • behavior —— 相同 API、不同結果;請重新檢查已調校的指令碼。

變更依影響程度依此順序分組。每個提交雜湊都連結至其在 GitHub 上的差異。

RPC CAN 設定 API (minor)

rpc 函式庫中,rpc_can_master / rpc_can_slave 的 CAN 關鍵字引數 sampling_point 已重新命名為 sample_point(以符合上游 MicroPython),且手動 CAN 位元時序輔助函式已移除 —— CAN 匯流排現在透過 CAN(..., baudrate=, sample_point=) 進行設定。傳入 sampling_point 或依賴舊有位元時序計算的指令碼必須更新。

提交: b565eca5806d716986

image.format() 與壓縮影像 (behavior)

隨著為 PNG 新增的統一壓縮影像路徑,image.format() 現在對未知格式會回傳 PIXFORMAT_INVALID,而壓縮影像的索引/迭代/列印現在除了 JPEG 之外也涵蓋 PNG。對未知格式檢查先前回傳值的程式碼應重新檢查。

提交: f12a4659c

遷移檢查清單

若要乾淨地移植到 v4.2.2:將 RPC CAN 的 sampling_point 重新命名為 sample_point 並移除任何手動 CAN 位元時序設定(RPC CAN 變更),並重新檢查任何對未知格式檢查 image.format() 的程式碼(format() 變更)。