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


Air780EHM核心板通過Type-C USB數據線連接電腦;支持USB口供電,使用時請將USB旁邊的開關撥到ON一端。

Air780EHM核心板通過杜邦線和SPI Flash模塊連接,對應管腳接線方式如下圖表所示:


二、最新源碼下載
最新demo已上傳源碼倉庫:https://gitee.com/openLuat/LuatOS/tree/master/module/Air780EHM_Air780EHV_Air780EGH/demo/sfud
sfud_test.lua代碼如下圖示,完整demo詳見源碼倉庫。




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

3.2 將Flash設備掛載為SFUD LFS文件系統:
我們將Flash設備成功掛載為SFUD LFS文件系統后,通過標準化文件管理接口對文件系統進行了全流程驗證。

日志輸出顯示,文件系統掛載過程順利完成,且測試文件讀寫、內容追加、文件刪除等核心操作均能穩定執行,整個交互過程無異常報錯信息,充分驗證了SFUD LFS文件系統在嵌入式存儲場景下的功能完整性。
今天的內容就分享到這里了~
審核編輯 黃宇
-
FlaSh
+關注
關注
10文章
1748瀏覽量
155529 -
SPI
+關注
關注
17文章
1885瀏覽量
101259 -
SFUD
+關注
關注
0文章
7瀏覽量
1286
發布評論請先 登錄
深入解析Rockchip SFC驅動:SPI Flash傳輸流程與問題排查指南
SPI NOR Flash和SPI NAND Flash存儲芯片的區別
FPGA實現基于SPI協議的Flash驅動控制芯片擦除
高性能SPI NOR FLASH芯片ZB25VQ系列推薦
ECU刷寫完全指南:從理論到實踐
通用bootloader無法使用45db161flash怎么解決?
RT-Thread 5.1.0版本中調用rt_sfud_flash_probe()函數報錯的原因?
SPI NOR FLASH是什么,與SPI NAND Flash的區別
基于LuatOS核心庫的實時操作系統開發:從理論到實踐~
UC3854 功率因數校正設計全攻略:從理論到實戰
串行SPI Flash通用驅動庫SFUD:從理論到實踐的完整示例
評論