
DFS 是 RT-Thread 提供的虚拟文件系统组件,全称为 Device FileSystem,即设备虚拟文件系统。文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型(Abstract data type),是一种用于向用户提供底层数据访问的机制。文件系统通常存储的基本单位是文件,即数据是按照一个个文件的方式进行组织。当文件比较多时,将导致文件繁多,不易分类、重名的问题。而文件夹作为一个容纳多个文件的容器而存在。 rtthreadDFS组件特点: 为应用程序提供统一的 POSIX 文件和目录操作接口:read、write、poll/select等。 支持多种类型的文件系统,如 FatFS、RomFS、DevFS 等,并提供普通文件、设备文件、网络文件描述符的管理。 支持多种类型的存储设备,如 SD Card、SPI Flash、Nand Flash 等。 本章实验用W25Q16作为存储设备 DFS文件系统结构框架:
![]() 使用辅助开发工具移植DFS组件 1、 使能文件系统 ![]() 2、设置elm-chan's FatFs, Generic FATFilesystem Module 选项中修改关于长文件名支持的选项,否则在后面使用文件系统的过程中,创建的文件或者文件夹的名称不能超过 8 个字符。修改方式如下图所示: ![]() 3、设置长文件名支持 ![]() 4、因为要使用一些 C 库函数,所以需要打开 libc 功能: ![]() 5、在 RT-Thread Components → Device Drivers 界面中选中 Using SPI Bus/Device device drivers 以及 Using Serial Flash Universal Driver 选项,如下图所示: ![]() 6、(38)SPI NOR flash ce pin index ,是SPI的CS管脚,第38个管脚 ![]() 7、在RT-ThreadKernel路径,将内核时间片设置到1000 ![]() 8、保存配置,scons --target=mdk5,生成工程。编译无错误后,下载程序。可以看到系统启动成功,但是flash没有读取成功,原因软件配置生成的代码SPI2的管脚与开发板的SPI2复用的管脚不同。如下图所示: ![]() 9、修改如下: ![]() 10、重新编译,下载。Flash读取成功 ![]() 11、通过 list_device指令,查看当前系统中的设备 ![]() 12、可以使用 sf prode norspi命令对该设备做 benchmark 测试。如下图 ![]() 13、通过mkfs –t mle flash0指令,挂载文件系统 ![]() 14、可以通过ls 指令,可以查询当前文件系统下面的文件;通过cd 可以跳转目录;通过cp可以拷贝数据;通过cat可以某个文件内容;rm删除特定文件;mkdir创建文件夹;mv移动文件 ![]() 15、通过cd 指令跳转目录 ![]() 16、通过cat 指令查看文件内容 ![]() 17、经过以上步骤,DFS就移植完成 18、程序示例
源码参考:https://www.stmcu.org.cn/module/forum/thread-621278-1-1.html里面的资料 |
![]() |
![]() |