13.1.14. 编辑 ROM 文件系统#
支持 ROMFS 的开发板在闪存中携带一个只读文件系统,挂载在摄像头的 /rom 上。它随附开发板默认的机器学习模型,也是产品模型和资产应当存放的地方:ROMFS 中的文件会直接从闪存中进行内存映射,因此加载大型模型时无需为副本消耗 RAM。IDE 的 Tools → ROM File System 子菜单就是它的编辑器。
13.1.14.1. 编辑器#
Edit ROMFS on OpenMV Cam 会读取所连接摄像头的 ROMFS 并在编辑器中打开它:一个文件树,外加用于添加文件、创建文件夹、删除和提取条目,以及直接从 模型库 拉取模型的按钮。一个用量读数会跟踪内容占用了开发板 ROMFS 分区的多少。在你按下 Commit 之前不会对摄像头做任何改动,按下后它会询问是将结果写回摄像头,还是保存为磁盘上的 .img 文件。
在你添加文件时会自动进行两种转换。.py 脚本会为目标开发板交叉编译为 .mpy 字节码,而当开发板带有 NPU 加速器且模型需要时,模型文件会为其进行转换。落入 ROMFS 的始终是摄像头可直接执行的形式。从文件管理器拖入的文件会经过同样的转换,放入你拖放到的文件夹——或者,拖放到空白处时放入根目录。

Edit ROMFS 对话框显示一块开发板的默认内容——其机器学习模型——右下角是用量读数。#
Open ROMFS File 会针对磁盘上的 .img 镜像文件而非所连接的摄像头运行同一个编辑器,而 New ROMFS File 则从空白开始——无论哪种方式,都是离线准备 ROMFS 镜像的途径,用于生产环境的烧录或随自定义固件构建一同发布。Reset ROMFS on OpenMV Cam 会将所连接摄像头的 ROMFS 恢复为开发板的默认值,撤销所有编辑。
读取和写入摄像头的 ROMFS 要经过其引导加载程序,并带有一个可取消的进度对话框。取消读取只是放弃读取;取消写入会让 ROMFS 处于部分写入状态,因此在依赖它之前请运行 Reset ROMFS 或再次提交。无论哪种情况,IDE 都会请求引导加载程序重启摄像头并等待它恢复——如果摄像头反而停留在引导加载程序模式,IDE 会如实告知,并且下次连接时的引导加载程序对话框会提供同样的重置和编辑操作。
参见
构建 ROMFS 镜像 介绍了 ROMFS 在发布应用程序中的作用——该放些什么,以及摄像头在运行时如何读取它。