针对嵌入式系统中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文章
1683浏览量
152190 -
驱动库
+关注
关注
0文章
10浏览量
7268 -
SFUD
+关注
关注
0文章
6浏览量
1180
发布评论请先 登录
全栈开发进阶指南:LuatOS-log库从入门到实战!

解锁LuatOS-log库:全栈工程师的日志管理实战课!

锡膏使用避坑指南:50 个实战问答帮你解决 99% 的焊接难题(全流程解析)

《手把手教你做PC-KaihongOS笔记本电脑开发实战》课件汇总
DLPC410使用官方推荐SPI-FLASH引脚冲突怎么解决?
KeyStone架构串行外设接口(SPI)手册
物联网行业存储方案详解_SPI NOR Flash

评论