理解并應(yīng)用SPI Flash驅(qū)動(dòng)庫(kù)是嵌入式開(kāi)發(fā)中的重要技能。SFUD庫(kù)通過(guò)模塊化設(shè)計(jì),將復(fù)雜的SPI Flash操作簡(jiǎn)化為標(biāo)準(zhǔn)接口調(diào)用。本文將通過(guò)理論與實(shí)踐結(jié)合的方式,詳細(xì)講解SFUD庫(kù)的使用步驟,并提供可運(yùn)行的示例代碼,幫助開(kāi)發(fā)者快速上手。
SFUD(Serial Flash Universal Driver)是開(kāi)源的串行SPI Flash通用驅(qū)動(dòng)庫(kù)。
旨在解決不同品牌及規(guī)格串行Flash的命令差異問(wèn)題,通過(guò)統(tǒng)一接口實(shí)現(xiàn)跨硬件兼容,從而降低嵌入式系統(tǒng)的開(kāi)發(fā)復(fù)雜度,提高軟件的可重用性和可擴(kuò)展性。
LuatOS為開(kāi)發(fā)者提供了便捷的SFUD核心庫(kù)API接口:
支持通過(guò)SFUD原生接口直接操作Flash存儲(chǔ)單元,也支持將Flash設(shè)備掛載為SFUD LFS文件系統(tǒng)實(shí)現(xiàn)標(biāo)準(zhǔn)化文件管理,簡(jiǎn)化嵌入式存儲(chǔ)管理并提升開(kāi)發(fā)效率;
支持設(shè)置文件系統(tǒng)掛載的偏移量和大小,提供更靈活的配置選項(xiàng),適用于物聯(lián)網(wǎng)智能設(shè)備、工業(yè)控制等不同應(yīng)用場(chǎng)景的需求。
本文將以Air780EHM核心板為例,分享的SFUD應(yīng)用示例;此示例同樣適用于Air780EHV、Air780EGH系列。
一、主要準(zhǔn)備工作
Air780EHM核心板套件
SPI Flash模塊
注:需要選用支持SFUD標(biāo)準(zhǔn)的SPI Flash模塊,本文使用W25Q32演示。
Win10及其以上PC電腦


Air780EHM核心板通過(guò)Type-C USB數(shù)據(jù)線連接電腦;支持USB口供電,使用時(shí)請(qǐng)將USB旁邊的開(kāi)關(guān)撥到ON一端。

Air780EHM核心板通過(guò)杜邦線和SPI Flash模塊連接,對(duì)應(yīng)管腳接線方式如下圖表所示:


二、最新源碼下載
最新demo已上傳源碼倉(cāng)庫(kù):https://gitee.com/openLuat/LuatOS/tree/master/module/Air780EHM_Air780EHV_Air780EGH/demo/sfud
sfud_test.lua代碼如下圖示,完整demo詳見(jiàn)源碼倉(cāng)庫(kù)。




相關(guān)注意事項(xiàng):
在sfud_test.lua中,通過(guò)test_sfud_raw和test_sfud_mountl兩個(gè)變量來(lái)控制,是通過(guò)SFUD接口去讀寫(xiě)Flash,還是掛載為SFUD LFS文件系統(tǒng),通過(guò)文件系統(tǒng)相關(guān)接口去操作SFUD LFS文件系統(tǒng)中的文件。
也可以同時(shí)使用這兩種方式,不過(guò)要注意同時(shí)使用SFUD直接寫(xiě)入時(shí)的地址和掛載SFUD LFS時(shí)的偏移量需要設(shè)計(jì)好(注意偏移量需要是64k的倍數(shù)),避免發(fā)生沖突。
三、示例運(yùn)行結(jié)果
Air780EHM核心板通過(guò)LuaTools燒錄內(nèi)核固件和demo腳本代碼。燒錄成功后開(kāi)機(jī)運(yùn)行,通過(guò)LuaTools日志查看運(yùn)行結(jié)果。
3.1 通過(guò)SFUD原生接口直接操作Flash:
寫(xiě)入字符串:luatos-sfud1234567890123456789012345678901234567890
然后讀取前4字節(jié)數(shù)據(jù)。
結(jié)果如下圖所示:

3.2 將Flash設(shè)備掛載為SFUD LFS文件系統(tǒng):
我們將Flash設(shè)備成功掛載為SFUD LFS文件系統(tǒng)后,通過(guò)標(biāo)準(zhǔn)化文件管理接口對(duì)文件系統(tǒng)進(jìn)行了全流程驗(yàn)證。

日志輸出顯示,文件系統(tǒng)掛載過(guò)程順利完成,且測(cè)試文件讀寫(xiě)、內(nèi)容追加、文件刪除等核心操作均能穩(wěn)定執(zhí)行,整個(gè)交互過(guò)程無(wú)異常報(bào)錯(cuò)信息,充分驗(yàn)證了SFUD LFS文件系統(tǒng)在嵌入式存儲(chǔ)場(chǎng)景下的功能完整性。
今天的內(nèi)容就分享到這里了~
審核編輯 黃宇
-
FlaSh
+關(guān)注
關(guān)注
10文章
1747瀏覽量
155486 -
SPI
+關(guān)注
關(guān)注
17文章
1885瀏覽量
101185 -
SFUD
+關(guān)注
關(guān)注
0文章
7瀏覽量
1285
發(fā)布評(píng)論請(qǐng)先 登錄
深入解析Rockchip SFC驅(qū)動(dòng):SPI Flash傳輸流程與問(wèn)題排查指南
SPI NOR Flash和SPI NAND Flash存儲(chǔ)芯片的區(qū)別
射頻測(cè)試線纜選型指南:從理論到實(shí)踐
FPGA實(shí)現(xiàn)基于SPI協(xié)議的Flash驅(qū)動(dòng)控制芯片擦除
高性能SPI NOR FLASH芯片ZB25VQ系列推薦
ECU刷寫(xiě)完全指南:從理論到實(shí)踐
通用bootloader無(wú)法使用45db161flash怎么解決?
RT-Thread 5.1.0版本中調(diào)用rt_sfud_flash_probe()函數(shù)報(bào)錯(cuò)的原因?
SPI NOR FLASH是什么,與SPI NAND Flash的區(qū)別
SFUD驅(qū)動(dòng)庫(kù)實(shí)戰(zhàn)手冊(cè):串行SPI Flash開(kāi)發(fā)全流程解析
多個(gè)i.MXRT共享一顆Flash啟動(dòng)的方法與實(shí)踐(下)
基于LuatOS核心庫(kù)的實(shí)時(shí)操作系統(tǒng)開(kāi)發(fā):從理論到實(shí)踐~
UC3854 功率因數(shù)校正設(shè)計(jì)全攻略:從理論到實(shí)戰(zhàn)
串行通信接口SPI與QSPI的區(qū)別
串行SPI Flash通用驅(qū)動(dòng)庫(kù)SFUD:從理論到實(shí)踐的完整示例
評(píng)論