0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

串行SPI Flash通用驱动库SFUD:从理论到实践的完整示例

合宙LuatOS 来源:合宙LuatOS 作者:合宙LuatOS 2025-08-06 17:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

理解并应用SPI Flash驱动库是嵌入式开发中的重要技能。SFUD库通过模块化设计,将复杂的SPI Flash操作简化为标准接口调用。本文将通过理论与实践结合的方式,详细讲解SFUD库的使用步骤,并提供可运行的示例代码,帮助开发者快速上手。

SFUD(Serial Flash Universal Driver)是开源的串行SPI Flash通用驱动库。

旨在解决不同品牌及规格串行Flash的命令差异问题,通过统一接口实现跨硬件兼容,从而降低嵌入式系统的开发复杂度,提高软件的可重用性和可扩展性。

LuatOS为开发者提供了便捷的SFUD核心库API接口:

支持通过SFUD原生接口直接操作Flash存储单元,也支持将Flash设备挂载为SFUD LFS文件系统实现标准化文件管理,简化嵌入式存储管理并提升开发效率;

支持设置文件系统挂载的偏移量和大小,提供更灵活的配置选项,适用于物联网智能设备、工业控制等不同应用场景的需求。

本文将以Air780EHM核心板为例,分享的SFUD应用示例;此示例同样适用于Air780EHV、Air780EGH系列。

一、主要准备工作

Air780EHM核心板套件

SPI Flash模块

注:需要选用支持SFUD标准的SPI Flash模块,本文使用W25Q32演示。

Type-C USB数据线

Win10及其以上PC电脑

wKgZO2iIT4yAZGkuAAw5KTOuV5o425.pngwKgZO2iIT52AKsj9AAD8CrZJppY248.png

Air780EHM核心板通过Type-C USB数据线连接电脑;支持USB口供电,使用时请将USB旁边的开关拨到ON一端。

wKgZPGiIT9yADv1MAAxlu0KZkDk112.png

Air780EHM核心板通过杜邦线和SPI Flash模块连接,对应管脚接线方式如下图表所示:

wKgZO2iIUA2AGceZAAhWPLYrYVk561.pngwKgZPGiIUCqAZjdkAAGljKWOAvk216.png

二、最新源码下载

最新demo已上传源码仓库:https://gitee.com/openLuat/LuatOS/tree/master/module/Air780EHM_Air780EHV_Air780EGH/demo/sfud

sfud_test.lua代码如下图示,完整demo详见源码仓库。

wKgZO2iIUGOAZt24AAU7EFgwx_k940.pngwKgZPGiIUImAVEp8AAY7ai8Ooe4859.pngwKgZO2iIUKaAfvf0AAVa2ihWJKo681.pngwKgZPGiIUMGAMkswAAItLlJz4ZQ871.png

相关注意事项:

在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字节数据。

结果如下图所示:

wKgZPGiIUQiAe5FIAAJu4fI0JGk025.png

3.2 将Flash设备挂载为SFUD LFS文件系统:

我们将Flash设备成功挂载为SFUD LFS文件系统后,通过标准化文件管理接口对文件系统进行了全流程验证。

wKgZPGiIUTGAIA4UAAJ0vwjex4Q962.png

日志输出显示,文件系统挂载过程顺利完成,且测试文件读写、内容追加、文件删除等核心操作均能稳定执行,整个交互过程无异常报错信息,充分验证了SFUD LFS文件系统在嵌入式存储场景下的功能完整性。

今天的内容就分享到这里了~

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1715

    浏览量

    154715
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1866

    浏览量

    99844
  • SFUD
    +关注

    关注

    0

    文章

    7

    浏览量

    1264
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA实现基于SPI协议的Flash驱动控制芯片擦除

    本篇博客具体包括SPI协议的基本原理、模式选择以及时序逻辑要求,采用FPGA(EPCE4),通过SPI通信协议,对flash(W25Q16BV)存储的固化程序进行芯片擦除操作。
    的头像 发表于 12-02 10:00 1800次阅读
    FPGA实现基于<b class='flag-5'>SPI</b>协议的<b class='flag-5'>Flash</b><b class='flag-5'>驱动</b>控制芯片擦除

    高性能SPI NOR FLASH芯片ZB25VQ系列推荐

    在嵌入式系统、物联网设备及各类存储应用中,SPI NOR FLASH芯片因其接口简单、功耗低、读写速度快等特点,成为代码存储与数据缓存的常见选择。SPI NOR FLASH是一种基于
    的头像 发表于 12-01 14:52 199次阅读

    ECU刷写完全指南:理论到实践

    ECU刷写是现代汽车电子开发中的核心环节,基于UDS诊断协议实现控制器软件的更新与维护。本文将以USBCANFD-400U接口卡为例,详细介绍CANFD总线环境下ECU刷写的标准流程与实操要点。ECU刷写ECU(电子控制单元)是汽车的核心控制部件,相当于车辆的"行车电脑",负责发动机管理、变速箱控制、车身稳定等关键功能。随着汽车智能化程度不断提升,单个车型搭
    的头像 发表于 11-12 11:37 633次阅读
    ECU刷写完全指南:<b class='flag-5'>从</b><b class='flag-5'>理论到</b><b class='flag-5'>实践</b>

    通用bootloader无法使用45db161flash怎么解决?

    通用bootloader不选“支持spi flash”,download放于片内flash,正常启动,ota正常,app驱动at45db16
    发表于 09-18 08:23

    RT-Thread 5.1.0版本中调用rt_sfud_flash_probe()函数报错的原因?

    使用RT-Thread Studio编译器,RT-Thread版本5.1.0 三、配置过程 1、启用SPISFUD 2、修改sfud_cfg.h文件 3、修改sfud_flash
    发表于 09-18 06:08

    SPI NOR FLASH是什么,与SPI NAND Flash的区别

    SPI NOR FLASH是什么?   SPI NOR FLASH是一种非易失性存储器,它通过串行接口进行数据传输,具有读写速度快、可靠性高
    的头像 发表于 08-21 09:26 1118次阅读

    SFUD驱动实战手册:串行SPI Flash开发全流程解析

    针对嵌入式系统中SPI Flash的多样化需求,SFUD提供了灵活且通用的解决方案。本文将从环境配置、
    的头像 发表于 07-29 13:19 533次阅读
    <b class='flag-5'>SFUD</b><b class='flag-5'>驱动</b><b class='flag-5'>库</b>实战手册:<b class='flag-5'>串行</b><b class='flag-5'>SPI</b> <b class='flag-5'>Flash</b>开发全流程解析

    瑞萨RA8D1 MCU的OSPI Flash适配指南

    OSPI Flash(Octal SPI Flash)是一种基于SPI串行外设接口)扩展的高速串行
    的头像 发表于 07-17 11:24 2650次阅读
    瑞萨RA8D1 MCU的OSPI <b class='flag-5'>Flash</b>适配指南

    多个i.MXRT共享一颗Flash启动的方法与实践(下)

    在 《多个i.MXRT共享一颗Flash启动的方法与实践(上)》 一文里痞子衡给大家理论上介绍一种多 i.MXRT 共享 Flash 启动
    的头像 发表于 06-05 10:04 1033次阅读
    多个i.MXRT共享一颗<b class='flag-5'>Flash</b>启动的方法与<b class='flag-5'>实践</b>(下)

    基于LuatOS核心的实时操作系统开发:理论到实践~

    实时系统的开发挑战在于平衡响应时间与系统开销。LuatOS核心通过时间片轮转与优先级混合调度策略,既保证了高实时性任务的即时执行,又为低优先级任务提供了公平调度机会。其事件驱动架构还支持异步处理
    的头像 发表于 05-16 13:56 408次阅读
    基于LuatOS核心<b class='flag-5'>库</b>的实时操作系统开发:<b class='flag-5'>从</b><b class='flag-5'>理论到</b><b class='flag-5'>实践</b>~

    UC3854 功率因数校正设计全攻略:理论到实战

    【限时下载】UC3854 功率因数校正(PFC)设计全攻略:理论到实战,工程师必备技术手册 *附件:《UC3854 功率因数校正设计全攻略:理论到实战》.pdf 为什么工程师必须掌
    的头像 发表于 04-09 15:35 1128次阅读
    UC3854 功率因数校正设计全攻略:<b class='flag-5'>从</b><b class='flag-5'>理论到</b>实战

    串行通信接口SPI与QSPI的区别

    在嵌入式系统的世界里,选择正确的通信技术可以对项目的性能和可扩展性产生重大影响。让我们比较两个流行的串行通信接口:SPI串行外设接口)和QSPI(四路SPI)。
    的头像 发表于 04-09 15:24 2574次阅读
    <b class='flag-5'>串行</b>通信接口<b class='flag-5'>SPI</b>与QSPI的区别

    电子设备EMC测试整改:理论到实践的跨越

    深圳南柯电子|电子设备EMC测试整改:理论到实践的跨越
    的头像 发表于 02-20 14:46 958次阅读
    电子设备EMC测试整改:<b class='flag-5'>从</b><b class='flag-5'>理论到</b><b class='flag-5'>实践</b>的跨越

    迅为RK3568开发板驱动指南Linux中通用SPI设备驱动

    迅为RK3568开发板驱动指南Linux中通用SPI设备驱动
    的头像 发表于 01-23 11:02 3436次阅读
    迅为RK3568开发板<b class='flag-5'>驱动</b>指南Linux中<b class='flag-5'>通用</b><b class='flag-5'>SPI</b>设备<b class='flag-5'>驱动</b>

    KeyStone架构串行外设接口(SPI)手册

    SPI(Serial Peripheral Interface)是一种高速、全双工、同步的串行通信协议,它允许微控制器与一个或多个外围设备进行通信。SPI通信通常使用四根线:SCK(时钟线
    发表于 12-16 10:33 0次下载