針對嵌入式系統中SPI Flash的多樣化需求,SFUD庫提供了靈活且通用的解決方案。本文將從環境配置、庫初始化、基本操作到高級特性,完整展示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瀏覽量
155514 -
驅動庫
+關注
關注
0文章
10瀏覽量
7358 -
SFUD
+關注
關注
0文章
7瀏覽量
1285
發布評論請先 登錄
1688 商品詳情 API 調用與數據解析 Python 實戰
深入解析Rockchip SFC驅動:SPI Flash傳輸流程與問題排查指南
RK?平臺?SPI?開發完全指南(驅動?+?配置?+?測試?+?優化)
SPI NOR Flash和SPI NAND Flash存儲芯片的區別
RK3506 MIPI轉HDMI顯示開發實戰:從硬件到驅動全解析
FSKV核心庫開發實戰:API詳解與Demo演示
LuatOS exgnss擴展庫實戰進階:GNSS功能開發全流程!
明晚8點|睿擎文件系統實戰:從開發到發布全流程解析
【直播預告】下周三晚8點|睿擎文件系統實戰:從開發到發布全流程解析
通用bootloader無法使用45db161flash怎么解決?
RT-Thread 5.1.0版本中調用rt_sfud_flash_probe()函數報錯的原因?
SPI NOR FLASH是什么,與SPI NAND Flash的區別
全棧開發進階指南:LuatOS-log庫從入門到實戰!
錫膏使用避坑指南:50 個實戰問答幫你解決 99% 的焊接難題(全流程解析)
SFUD驅動庫實戰手冊:串行SPI Flash開發全流程解析
評論