当前位置: 首页 > news >正文

嵌入式硬件篇---OpenMV存储

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 卡更多是用于扩展存储功能,而非运行程序的必要条件。

具体说明:

  1. 程序存储与运行

    • OpenMV 开发板内部有自带的闪存(例如部分型号有 2MB 闪存),可以直接将程序(.py 文件)存储在内部闪存中。
    • 当开发板上电后,会自动从内部闪存加载并运行程序,实现脱机工作,无需依赖 SD 卡。
  2. SD 卡的作用

    • 扩展存储:用于保存拍摄的图片、视频,或存储较大的数据集(如训练好的模型文件)、日志文件等。
    • 临时调试:在开发阶段,可能通过 SD 卡读取程序进行快速测试,但这并非脱机运行的必需方式。
  3. 特殊情况

    • 若程序中明确包含读取 / 写入 SD 卡的操作(如 sensor.snapshot().save("/sd/img.jpg")),则脱机运行时必须插入 SD 卡,否则会因找不到存储路径而报错。
    • 对于需要处理大量数据(如超过内部闪存容量的模型)的程序,可能需要 SD 卡来存储额外资源,但这是程序设计的特殊需求,而非开发板本身的限制。

综上,仅运行基础程序时,OpenMV 无需 SD 卡即可脱机工作;但如果程序涉及 SD 卡操作或依赖外部存储资源,则必须插入 SD 卡。

http://www.dtcms.com/a/313891.html

相关文章:

  • 精品PPT | 企业数字化运营平台总体规划建设方案
  • LeetCode热题100——42. 接雨水
  • AI绘画-Stable Diffusion-WebUI的ControlNet用法
  • 设计模式(一)——抽象工厂模式
  • 蓝河操作系统(BlueOS)内核 (VIVO开源)
  • [spring-cloud: 负载均衡]-源码分析
  • Nginx服务做负载均衡网关
  • Rust ⽣成 .wasm 的极致瘦⾝之道
  • 旧物回收小程序:开启绿色生活新篇章
  • SpringBoot3.x入门到精通系列:3.2 整合 RabbitMQ 详解
  • Ethereum:智能合约开发者的“瑞士军刀”OpenZeppelin
  • 白杨SEO:百度搜索开放平台发布AI计划是什么?MCP网站红利来了?顺带说说其它
  • 剧本杀小程序系统开发:开启沉浸式推理社交新纪元
  • 力扣 hot100 Day65
  • 《Python 实用项目与工具制作指南》 · 前言
  • [自动化Adapt] GUI交互(窗口/元素) | 系统配置 | 非侵入式定制化
  • [特殊字符]️ 整个键盘控制无人机系统框架
  • Qt按键响应
  • 更智能的 RibbonBar Spread.NET 18.2Crack
  • QT:交叉编译mysql驱动库
  • 基于鼠标位置的相机缩放和平移命令的实现(原理+源码)
  • Prompt Engineering
  • 赛博威携手Dify,助力AI在企业的场景化落地
  • 【数据库】使用Sql Server创建索引优化查询速度,一般2万多数据后,通过非索引时间字段排序查询出现超时情况
  • Linux(centos)安全狗
  • Linux 用户与组管理全解析
  • 采购管理工具的实施方法论:三阶段框架与常见问题解决方案
  • RHCA02
  • How To Say - AI多语言表达工具
  • 【前端:Html】--1.3.基础语法