針對嵌入式系統(tǒng)中SPI Flash的多樣化需求,SFUD庫提供了靈活且通用的解決方案。本文將從環(huán)境配置、庫初始化、基本操作到高級特性,完整展示SFUD庫的應用流程,并通過具體示例幫助開發(fā)者深入理解其工作原理與實戰(zhàn)技巧。
SFUD(Serial Flash Universal Driver)是開源的串行SPI Flash通用驅動庫。
旨在解決不同品牌及規(guī)格串行Flash的命令差異問題,通過統(tǒng)一接口實現跨硬件兼容,從而降低嵌入式系統(tǒng)的開發(fā)復雜度,提高軟件的可重用性和可擴展性。
LuatOS為開發(fā)者提供了便捷的SFUD核心庫API接口:
支持通過SFUD原生接口直接操作Flash存儲單元,也支持將Flash設備掛載為SFUD LFS文件系統(tǒng)實現標準化文件管理,簡化嵌入式存儲管理并提升開發(fā)效率;
支持設置文件系統(tǒng)掛載的偏移量和大小,提供更靈活的配置選項,適用于物聯網智能設備、工業(yè)控制等不同應用場景的需求。
本文將以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文件系統(tǒng),通過文件系統(tǒng)相關接口去操作SFUD LFS文件系統(tǒng)中的文件。
也可以同時使用這兩種方式,不過要注意同時使用SFUD直接寫入時的地址和掛載SFUD LFS時的偏移量需要設計好(注意偏移量需要是64k的倍數),避免發(fā)生沖突。
三、示例運行結果
Air780EHM核心板通過LuaTools燒錄內核固件和demo腳本代碼。燒錄成功后開機運行,通過LuaTools日志查看運行結果。
3.1 通過SFUD原生接口直接操作Flash:
寫入字符串:luatos-sfud1234567890123456789012345678901234567890
然后讀取前4字節(jié)數據。
結果如下圖所示:

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

日志輸出顯示,文件系統(tǒng)掛載過程順利完成,且測試文件讀寫、內容追加、文件刪除等核心操作均能穩(wěn)定執(zhí)行,整個交互過程無異常報錯信息,充分驗證了SFUD LFS文件系統(tǒng)在嵌入式存儲場景下的功能完整性。
今天的內容就分享到這里了~
審核編輯 黃宇
-
FlaSh
+關注
關注
10文章
1757瀏覽量
155809 -
驅動庫
+關注
關注
0文章
10瀏覽量
7367 -
SFUD
+關注
關注
0文章
7瀏覽量
1295
發(fā)布評論請先 登錄
JL杰理AC696N系列芯片SPI接口實戰(zhàn):驅動Flash、LCD與RGB燈
深入解析Rockchip SFC驅動:SPI Flash傳輸流程與問題排查指南
RK?平臺?SPI?開發(fā)完全指南(驅動?+?配置?+?測試?+?優(yōu)化)
SPI NOR Flash和SPI NAND Flash存儲芯片的區(qū)別
RK3506 MIPI轉HDMI顯示開發(fā)實戰(zhàn):從硬件到驅動全解析
FSKV核心庫開發(fā)實戰(zhàn):API詳解與Demo演示
LuatOS exgnss擴展庫實戰(zhàn)進階:GNSS功能開發(fā)全流程!
明晚8點|睿擎文件系統(tǒng)實戰(zhàn):從開發(fā)到發(fā)布全流程解析
【直播預告】下周三晚8點|睿擎文件系統(tǒng)實戰(zhàn):從開發(fā)到發(fā)布全流程解析
Air8000-LuatOS exvib擴展庫使用全流程:實戰(zhàn)驅動的操作解析
通用bootloader無法使用45db161flash怎么解決?
RT-Thread 5.1.0版本中調用rt_sfud_flash_probe()函數報錯的原因?
SPI NOR FLASH是什么,與SPI NAND Flash的區(qū)別
全棧開發(fā)進階指南:LuatOS-log庫從入門到實戰(zhàn)!
錫膏使用避坑指南:50 個實戰(zhàn)問答幫你解決 99% 的焊接難題(全流程解析)
SFUD驅動庫實戰(zhàn)手冊:串行SPI Flash開發(fā)全流程解析
評論