OpenMV存储部分
OpenMV 开发板的存储部分可以简单理解为 “不同用途的存储器”,就像我们的电脑有硬盘(存文件)、内存(临时运行程序)一样,OpenMV 也有几个不同的存储区域,各自分工明确。下面用通俗易懂的方式介绍:
1. 内部闪存(Flash)—— 相当于 “系统盘”
作用:
这是 OpenMV 自带的 “固定硬盘”,主要用来存程序和系统文件。
你编写的 Python 代码(.py
文件)下载到 OpenMV 后,就存在这里;开发板的操作系统(固件)也存在这里。特点:
- 非易失性:断电后数据不会丢,下次上电还能直接运行里面的程序(所以脱机运行必须靠它)。
- 容量不大:一般是 2MB 或 4MB(不同型号略有差异),够存中小型程序,但存大量图片、视频就不够了。
- 不能随便改:擦写次数有限(虽然日常用基本够),而且每次修改程序都要 “重新下载”,就像给手机装新 app 一样。
通俗比喻:类似手机里的 “系统存储”,装操作系统和常用 app,断电后内容不变。
2. 内存(RAM)—— 相当于 “工作台”
作用:
程序运行时,临时数据都存在这里。比如摄像头实时采集的图像、代码里的变量、计算过程中的临时结果等,都在内存里快速处理。特点:
- 速度极快:比闪存快得多,适合临时存放正在处理的数据,保证程序流畅运行(比如实时识别物体时,图像数据必须快速读写)。
- 易失性:断电就清空,所以不能用来长期存数据。
- 容量小:通常是 128KB 或 256KB(不同型号不同),只能临时用,不能当 “仓库”。
通俗比喻:类似我们办公的 “桌面”,临时放正在处理的文件,用完(断电)就清空,下次重新拿出来用。
3. SD 卡(外部存储)—— 相当于 “移动硬盘”
作用:
这是可选的外部存储,需要自己插卡。主要用来存大量数据:比如拍摄的照片 / 视频、训练好的模型文件(如神经网络模型)、日志文件等。特点:
- 容量大:可以插 16GB、32GB 甚至更大的卡,适合存闪存装不下的东西。
- 灵活插拔:存满了可以拔下来插电脑上读取,方便数据转移。
- 非必需:OpenMV 没插 SD 卡也能运行程序,只有当程序里明确要 “存图片到 SD 卡”“读模型文件” 时,才必须插卡,否则会报错。
通俗比喻:类似手机的 “内存卡”,扩展存储空间,存照片、视频这些占地方的东西,可随时取下。
总结:三者的关系
- 程序 “住” 在内部闪存里,断电也不会丢,上电后自动跑到内存里运行。
- 运行时产生的临时数据(如图像)在内存里快速处理。
- 如果程序需要 “存档”(如拍照片),就把数据存到SD 卡里(如果插了的话)。
简单说:闪存是 “长期住宅”,内存是 “临时工作台”,SD 卡是 “额外仓库”。日常用 OpenMV 跑简单程序,有闪存和内存就够了;要存大量数据,才需要 SD 卡。
OpenMV脱机运行
OpenMV 并非必须插入 SD 卡才能脱机运行程序,其程序运行主要依赖内部的闪存(Flash),SD 卡更多是用于扩展存储功能,而非运行程序的必要条件。
具体说明:
程序存储与运行:
- OpenMV 开发板内部有自带的闪存(例如部分型号有 2MB 闪存),可以直接将程序(
.py
文件)存储在内部闪存中。 - 当开发板上电后,会自动从内部闪存加载并运行程序,实现脱机工作,无需依赖 SD 卡。
- OpenMV 开发板内部有自带的闪存(例如部分型号有 2MB 闪存),可以直接将程序(
SD 卡的作用:
- 扩展存储:用于保存拍摄的图片、视频,或存储较大的数据集(如训练好的模型文件)、日志文件等。
- 临时调试:在开发阶段,可能通过 SD 卡读取程序进行快速测试,但这并非脱机运行的必需方式。
特殊情况:
- 若程序中明确包含读取 / 写入 SD 卡的操作(如
sensor.snapshot().save("/sd/img.jpg")
),则脱机运行时必须插入 SD 卡,否则会因找不到存储路径而报错。 - 对于需要处理大量数据(如超过内部闪存容量的模型)的程序,可能需要 SD 卡来存储额外资源,但这是程序设计的特殊需求,而非开发板本身的限制。
- 若程序中明确包含读取 / 写入 SD 卡的操作(如
综上,仅运行基础程序时,OpenMV 无需 SD 卡即可脱机工作;但如果程序涉及 SD 卡操作或依赖外部存储资源,则必须插入 SD 卡。