找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2098|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

[MaixPy快速上手]存儲(chǔ)系統(tǒng)介紹

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
存儲(chǔ)系統(tǒng)介紹
MaixPy 存儲(chǔ)系統(tǒng)大致如下圖所示:



由上圖可知,MaixPy 中的存儲(chǔ)介質(zhì)主要由 Flash,SD 卡組成,分為三塊區(qū)域,分別是 MaixPy.bin 固件區(qū),xxx.kmodel 模型區(qū),文件系統(tǒng)區(qū):Flash 上為 spiffsSPI Flash File System),SD 卡為 FatfsFAT file system)。
1. MaixPy.bin 固件區(qū)

用來存儲(chǔ) MaixPy.bin 固件,起始于 0x000000,因?yàn)?/font> K210 會(huì)從 0x000000 地址開始運(yùn)行程序。

2. xxx.kmodel 模型區(qū)

通常起始于 0x300000,模型文件之所以不燒錄在 Flash 的文件系統(tǒng)(文件系統(tǒng)會(huì)后續(xù)解釋)中,原因有下
1
    1. Flash 中文件系統(tǒng)擁有的內(nèi)存并不夠大,不足以放入大模型,更大的模型可以放入 SD 卡中。

2.    2. 直接讀取模型文件比經(jīng)過文件系統(tǒng)讀取速率更快。

該區(qū)域沒有文件系統(tǒng)管理,需要根據(jù)燒錄時(shí)的起始地址操作文件,例如當(dāng)模型燒錄在 0x500000 時(shí)的讀取方法:
KpuTask = kpu.load(0x500000)
3. 文件系統(tǒng)區(qū)

通常從 0xD00000 開始,該區(qū)域交由文件系統(tǒng)管理,我們預(yù)留了 Flash 末尾的 3MiB 空間,交由 spiffs 管理, 另外也支持 FAT32Fatfs SD 卡。這些文件系統(tǒng)提供接口使我們通過 文件名 便可對(duì)文件進(jìn)行讀寫操作,而不必像模型區(qū)那樣使用 文件起始地址 操作。同時(shí)還能幫助我們有效管理存儲(chǔ)介質(zhì),例如磨損均衡(Flash 是有磨損壽命的,相關(guān)知識(shí)請(qǐng)自行搜索)可以充分發(fā)揮 Flash 的壽命。

3.1. MaixPy 文件系統(tǒng)的使用

由于 Flash SD 卡的文件系統(tǒng)各不相同,接口不一致,使得操作不同文件系統(tǒng)需要調(diào)用不同接口,此時(shí) MaixPy 中的虛擬文件系統(tǒng)(VFS)正是用于解決該問題,VFS 可以掛載多個(gè)不同類型文件系統(tǒng),并為用戶操作這些文件系統(tǒng)提供統(tǒng)一接口,用戶使用這些接口時(shí)可以忽略不同文件系統(tǒng)之間的差異。這些接口在 os 模塊中實(shí)現(xiàn),使用示例如下:

  1. import uos

  2. print("files:", uos.listdir("/flash"))

  3. with open("/flash/test.txt", "w") as f:

  4. f.write("hello text")

  5. print("files:", uos.listdir("/flash"))

  6. with open("/flash/test.txt", "r") as f:

  7. content = f.read()
  8. print("read:", content)
復(fù)制代碼

以上示例中,spiffs 文件系統(tǒng)開機(jī)被自動(dòng)掛載到 /flash 目錄,用戶只需要在使用 os 的接口時(shí)傳入 "/flash"目錄名作為參數(shù)便可訪問該文件系統(tǒng)。

解讀

  • 導(dǎo)入 uos 模塊
  • 列出 /flash 目錄下所有文件
  • /flash 目錄寫入一個(gè)名為 test.txt 的文件,內(nèi)容為 hello text,
  • 列出 /flash 目錄下所有文件,會(huì)發(fā)現(xiàn) test.txt 的存在
  • 讀取文件內(nèi)容到 content 變量
  • 打印 content 變量, 輸出 hello text,也就是剛剛寫入文件的內(nèi)容
  • 這個(gè)內(nèi)容在開發(fā)板斷電之后再上電,仍然能讀到正確的內(nèi)容(Flash 斷電后不會(huì)丟失內(nèi)容)
當(dāng)然也支持 SD 卡, 如果你需要使用, SD 卡需要滿足以下幾點(diǎn):

  • 支持 SPI 模式, 市面上大多數(shù)正版卡都支持
  • 分區(qū)為 MBR msdos
  • 格式化為 FAT32
  • 大小測試過最大 128GiB 可用 斷電插入 SD 后, 上電,SD 卡會(huì)被掛載在 /sd,如果有多個(gè)分區(qū),第二個(gè)分區(qū)名是/sd2

注意/(根目錄)不能寫入數(shù)據(jù),只能往/flash或者/sd寫入數(shù)據(jù) 開機(jī)如果有SD卡, 會(huì)自動(dòng)將當(dāng)前目錄切換到/sd, 如果沒有,則會(huì)自動(dòng)切換到/flash


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表