?我們都知道芯片的儲存都是寸土寸金的,當你的產(chǎn)品需要存儲照片、音頻、文檔等資源的時候,有沒有眉頭一緊?
內(nèi)部不夠只能外擴,但是外擴要編寫各種驅(qū)動,還有Flash替換,這都要消耗頭發(fā)啊!
但,當你使用合宙的LuatOS開發(fā)就全然不同了~
今天我們來介紹一下, LuatOS集成內(nèi)部的一個開源SPI Flash通用驅(qū)動庫 ——little_flash
它可以讓你無需考慮不同F(xiàn)lash驅(qū)動差異,即可直接使用或者簡單配置參數(shù)即可使用。無需再編寫Flash驅(qū)動,真正的做到硬件隨意更改Flash軟件通用了。
特別說明:
本文檔以Air780EP+LuatOS作為示例,但此驅(qū)動庫為通用庫不限制型號,所有型號都可使用,甚至你可以在你其他C開發(fā)產(chǎn)品上自行移植使用。
一、SPI Flash分類
SPI Flash主流一般分為:
NOR Flash和NAND Flash。
TF我們這里不算在內(nèi),嚴格的說它屬于emmc,價格也高。
我們看下對比表:
?
這里就需要各位根據(jù)產(chǎn)品定義按需選擇了。
二、實現(xiàn)原理
這里我們簡單講解一下實現(xiàn)原理,不感興趣想直接使用的朋友,可以跳過直接看下一部分。
早期的Flash各個廠家指令不同,每家都要單獨寫驅(qū)動。
直到一個標準協(xié)議的出現(xiàn):
SERIAL FLASH DISCOVERABLE PARAMETERS (SFDP) | JEDEC
詳細介紹參見:
https://www.jedec.org/standards-documents/docs/jesd216b#
該協(xié)議規(guī)定了一個指令來讀取Flash的所有參數(shù),得益于它,目前市面上在產(chǎn)的NOR Flash基本都能直接驅(qū)動。
little_flash庫就是支持了此協(xié)議,實現(xiàn)了NOR Flash的通用驅(qū)動。
接下來,我們說一下NAND Flash:
很可惜,雖然新版SFDP協(xié)議有描述NAND Flash,但是實際上大部分NAND Flash廠商都沒有遵守。
市面上的NAND Flash一般是兩種設計,一種是純兼容NOR Flash指令,另一種是兼容部分NOR Flash指令,加一部分NAND Flash指令。
little_flash做了一套通用框架,只需要配置下產(chǎn)品幾個指令和儲存大小即可驅(qū)動NAND Flash,并且不支持SFDP協(xié)議的NOR Flash也可以通過配置參數(shù)方式進行支持。
**三、相關準備工作 **
?
3.1 硬件準備
3.2 軟件準備
我們使用云編譯方式編譯一份固件,記得勾選little_flash庫,其他功能按需選擇。
云編譯教程參考:
https://wiki.luatos.com/develop/compile/Cloud_compilation.html
?
四、API介紹
little_flash庫API非常簡單,只有兩個:一個初始化,一個掛載。掛載到文件系統(tǒng)之后,就可以用語言的原生IO操作直接使用了。
4.1 lf.init(spi_device)
初始化little_flash,會自動探測flash并初始化。
參數(shù):
?
返回值:
?
4.2 lf.mount(flash, mount_point, offset, maxsize)
掛載little_flash lfs文件系統(tǒng)。
參數(shù):
?
返回值:
?
五、腳本代碼
我們以Air780EP為例,下圖是代碼演示,并且做了相關注釋。
?
六、效果演示
我們把固件和腳本燒錄到開發(fā)板中,新朋友可參考相關教程。
LuatOS教程鏈接:
https://doc.openluat.com/wiki/26?wiki_page_id=3020
?
可以看到little_flash自動識別了NOR Flash,掛載成功后文件操作也都正常。
從此之后,告別SPI Flash驅(qū)動。
就算產(chǎn)品更換Flash,也無需修改代碼,爽!
?
-
FlaSh
+關注
關注
10文章
1668瀏覽量
151072 -
音頻
+關注
關注
29文章
3026瀏覽量
83095 -
指令
+關注
關注
1文章
615瀏覽量
36266
發(fā)布評論請先 登錄
【開源分享】:開源小巧的FPGA開發(fā)板——Icepi Zero
擁抱開源!一起來做FPGA開發(fā)板啦!
火力全開,ModbusTCP/RTU轉ethernet ip協(xié)議網(wǎng)關的不同應用大揭秘

上海 6月20日-21日《產(chǎn)品EMC正向設計與檢視》公開課火熱報名中!

直播|Tuya AI硬件開發(fā)平臺開源啦!搭載超強AI能力,助力個人開發(fā)者打破技術壁壘

開源的AI MPU
開源大模型DeepSeek的開放內(nèi)容詳析

霍爾開關的應用有哪些?矽睿半導體霍爾開關在產(chǎn)品計數(shù)的智能應用
ADS1292R有 \"1 ch ECG + 1 ch呼吸偵測\" 或 \"2 ch ECG\" 兩種模式,是否可以在產(chǎn)品上實現(xiàn)自行切換兩種使用模式?
如何在DRA821U上使用Linux實現(xiàn)快速引導

使用xtr111應用在產(chǎn)品設計中,運行一段時間過后設備不工作怎么解決?
MCXN947系列高性能微控制器產(chǎn)品介紹

評論