1.参考文档
官方文档:https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/filesystem/filesystem
参考文档:https://www.cnblogs.com/happybirthdaytoyou/p/12301693.html
需要驱动的是片外FLASH,W25Q256先作为块设备类型,再虚拟成ELM FATFS文件系统,注意STM32F429没有QSPI,不需要开启QSPI
2.添加文件
主要添加SPI相关和DFS相关文件
3.添加头文件
rtconfig.h添加
#define RT_USING_SFUD
编译工程不报错,烧写程序后,串口显示如下,发现并没有SPI设备,所以接下来打开SPI,W25Q256管脚接的是SPI5
4.打开SPI总线
rtconfig.h添加
#define RT_USING_SPI
#define BSP_USING_SPI2
#define BSP_USING_SPI5
编译烧写,串口看打印信息,发现已经有SPI BUS,接下来需要在SPI总线上挂载设备
5.挂载SPI设备
新建一个文件thread_spi_w25q256.c
GPIOF_6为CS片选脚
函数不需要调用,会自动调用初始化
6.创建块设备
flash芯片信息是从SFUD_FLASH_CHIP_TABLE表读取的,所以在rtconfig.h中添加
#define SFUD_USING_FLASH_INFO_TABLE
thread_spi_w25q256.c添加代码
编译烧写,看串口信息,有块设备信息
7.配置DFS虚拟文件系统
rtconfig.h
可以查看官方文档,了解具体含义
8.挂载
thread_spi_w25q256.c添加代码
main.c中添加调用
编译烧写,看串口信息
挂载成功,块设备变成1
到这一步为止,文件系统已经初始化完成,接下来可以对文件和目录进行操作了。
9.文件与目录操作 shell 命令
在串口用 FinSH 控制台直接输入命令
mkdir 功能:创建文件夹
ls 功能:显示文件和目录的信息
cd 功能:切换到指定工作目录
echo 功能:将指定内容写入文件
cp 功能:copy 文件,示例如下图:
mv 功能:将文件移动位置或者改名,示例如下图:
rm 功能:删除文件或目录,示例如下图:
cat 功能:展示文件的内容,示例如下图:
pwd 功能:打印出当前目录地址,示例如下图:
目前为止,文件系统挂载成功,验证也都可以使用,接下来可以验证代码
10.读写文件代码验证
thread_spi_w25q.c
11.备注
可以使用 sf 命令对片外FLASH做 benchmark 测试。该功能由 sfud组件提供,可以通过检查存储设备的读、写和擦除功能来判断存储设备的驱动程序是否正常。 如果像下图一样提示成功,所示则认为该驱动工作正常。如果无法通过测试,则需要检查驱动程序,使用逻辑分析仪对存储设备的接口波形进行分析。测试过程如下图:
源码连接:https://download.csdn.net/download/u010915068/20261474