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 卡。