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 复位,进入引导加载程序。

  • WINC1500 WiFi 模块固件已更新至 19.7.6(含更新脚本),并且现在会报告实际的主机驱动版本。

  • RP2 端口现在会打印 "MPY: soft reboot",并新增了 UART 的初始化/反初始化。

错误修复

  • 修复了 Arduino Nano RP2040 Connect 的原始帧缓冲区大小以及 Arduino Nicla Vision 的 USB 产品 ID(确保正确的 USB 枚举)。

硬件与开发板支持

  • Arduino Portenta H7 —— OV5640 摄像头支持(含自动对焦);GC2145 在 Portenta 上被禁用。

  • 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 上的 diff。

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,并且压缩图像的索引 / 迭代 / 打印现在同时涵盖 PNG 与 JPEG。曾检查未知格式旧返回值的代码应重新检查。

提交: f12a4659c

迁移清单

若要顺利移植到 v4.2.2:将 RPC CAN 的 sampling_point 重命名为 sample_point 并删除任何手动 CAN 位定时设置(RPC CAN 变更),并重新检查任何曾针对未知格式检查 image.format() 的代码(format() 变更)。