?我們都知道芯片的儲存都是寸土寸金的,當你的產品需要存儲照片、音頻、文檔等資源的時候,有沒有眉頭一緊?
內部不夠只能外擴,但是外擴要編寫各種驅動,還有Flash替換,這都要消耗頭發啊!
但,當你使用合宙的LuatOS開發就全然不同了~
今天我們來介紹一下, LuatOS集成內部的一個開源SPI Flash通用驅動庫 ——little_flash
它可以讓你無需考慮不同Flash驅動差異,即可直接使用或者簡單配置參數即可使用。無需再編寫Flash驅動,真正的做到硬件隨意更改Flash軟件通用了。
特別說明:
本文檔以Air780EP+LuatOS作為示例,但此驅動庫為通用庫不限制型號,所有型號都可使用,甚至你可以在你其他C開發產品上自行移植使用。
一、SPI Flash分類
SPI Flash主流一般分為:
NOR Flash和NAND Flash。
TF我們這里不算在內,嚴格的說它屬于emmc,價格也高。
我們看下對比表:
?
這里就需要各位根據產品定義按需選擇了。
二、實現原理
這里我們簡單講解一下實現原理,不感興趣想直接使用的朋友,可以跳過直接看下一部分。
早期的Flash各個廠家指令不同,每家都要單獨寫驅動。
直到一個標準協議的出現:
SERIAL FLASH DISCOVERABLE PARAMETERS (SFDP) | JEDEC
詳細介紹參見:
https://www.jedec.org/standards-documents/docs/jesd216b#
該協議規定了一個指令來讀取Flash的所有參數,得益于它,目前市面上在產的NOR Flash基本都能直接驅動。
little_flash庫就是支持了此協議,實現了NOR Flash的通用驅動。
接下來,我們說一下NAND Flash:
很可惜,雖然新版SFDP協議有描述NAND Flash,但是實際上大部分NAND Flash廠商都沒有遵守。
市面上的NAND Flash一般是兩種設計,一種是純兼容NOR Flash指令,另一種是兼容部分NOR Flash指令,加一部分NAND Flash指令。
little_flash做了一套通用框架,只需要配置下產品幾個指令和儲存大小即可驅動NAND Flash,并且不支持SFDP協議的NOR Flash也可以通過配置參數方式進行支持。
**三、相關準備工作 **
?
3.1 硬件準備
3.2 軟件準備
我們使用云編譯方式編譯一份固件,記得勾選little_flash庫,其他功能按需選擇。
云編譯教程參考:
https://wiki.luatos.com/develop/compile/Cloud_compilation.html
?
四、API介紹
little_flash庫API非常簡單,只有兩個:一個初始化,一個掛載。掛載到文件系統之后,就可以用語言的原生IO操作直接使用了。
4.1 lf.init(spi_device)
初始化little_flash,會自動探測flash并初始化。
參數:
?
返回值:
?
4.2 lf.mount(flash, mount_point, offset, maxsize)
掛載little_flash lfs文件系統。
參數:
?
返回值:
?
五、腳本代碼
我們以Air780EP為例,下圖是代碼演示,并且做了相關注釋。
?
六、效果演示
我們把固件和腳本燒錄到開發板中,新朋友可參考相關教程。
LuatOS教程鏈接:
https://doc.openluat.com/wiki/26?wiki_page_id=3020
?
可以看到little_flash自動識別了NOR Flash,掛載成功后文件操作也都正常。
從此之后,告別SPI Flash驅動。
就算產品更換Flash,也無需修改代碼,爽!
?
-
FlaSh
+關注
關注
10文章
1643瀏覽量
148701 -
音頻
+關注
關注
29文章
2906瀏覽量
81964 -
指令
+關注
關注
1文章
611瀏覽量
35825
發布評論請先 登錄
相關推薦
霍爾開關的應用有哪些?矽睿半導體霍爾開關在產品計數的智能應用
ADS1292R有 \"1 ch ECG + 1 ch呼吸偵測\" 或 \"2 ch ECG\" 兩種模式,是否可以在產品上實現自行切換兩種使用模式?
如何在TMS320C6727 DSP上創建基于延遲的音頻效果
![如<b class='flag-5'>何在</b>TMS320C6727 DSP<b class='flag-5'>上</b>創建基于延遲的音頻效果](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何在TMS320DM643x器件上使用EDMA3驅動程序
![如<b class='flag-5'>何在</b>TMS320DM643x器件<b class='flag-5'>上</b>使用EDMA3驅動程序](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何在MSP430FR2311上使用智能模擬組合和跨阻抗放大器
![如<b class='flag-5'>何在</b>MSP430FR2311<b class='flag-5'>上</b>使用智能模擬組合和跨阻抗放大器](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用xtr111應用在產品設計中,運行一段時間過后設備不工作怎么解決?
MCXN947系列高性能微控制器產品介紹
![MCXN947系列高性能微控制器<b class='flag-5'>產品</b>介紹](https://file1.elecfans.com/web2/M00/00/CB/wKgZomax23OAY4CCAAK-0_NJxlg837.jpg)
如何在PSOC Creator上啟用BLE 5.0?
全開源高精度功率計,你的電力監控小助手!| VA Meter
![<b class='flag-5'>全開源</b>高精度功率計,你的電力監控小助手!| VA Meter](https://file.elecfans.com/web2/M00/7D/DA/pYYBAGN-zMaAF9QdAAAZUkbIjzU950.png)
4月19日-20日《產品EMC正向設計與檢視》公開課火熱報名中
![4月19日-20日《<b class='flag-5'>產品</b>EMC正向設計與檢視》公開課火熱報名中](https://file.elecfans.com/web2/M00/3F/CE/pYYBAGJqCX2AbtM8AAANJ1_N7GA875.jpg)
評論