Hi,各位小伙伴,DIY 活动已经来到了第三周!前两周的任务大家都完成了吗?本周将会迎来新的挑战——文件系统。本文将从 SPI Flash 和 SD Card 两方面给大家讲解如何使用文件系统,以及针对本次 DIY 做出的一些优化,会大大增强系统性能,一起来看看吧~
回顾上期:
1、智能家居DIY连载教程(1)——如何正确使用 Sensor 框架
2、智能家居DIY连载教程(2)——在实际项目中运用消息队列与邮箱
正文共:7308 字 14 图
预计阅读时间:20分钟
1.第三周任务概览
我们来看一下第三周的任务:
了解 RT-Thread 文件系统,在接收节点中使用文件系统,存放来自发送节点发送过来的数据。
上述任务比较单一,只是文件系统而已。不过,能巧妙灵活的把文件系统用好用对,可不是一件轻松的事情。
2.RT-Thread 文件系统简要介绍
DFS 是 RT-Thread 提供的虚拟文件系统组件,全称为 Device File System,即设备虚拟文件系统,文件系统的名称使用类似 UNIX 文件、文件夹的风格。
RT-Thread DFS 组件的主要功能特点有:
为应用程序提供统一的 POSIX 文件和目录操作接口:read、write、poll/select 等。
支持多种类型的文件系统,如 FatFS、RomFS、DevFS 等,并提供普通文件、设备文件、网络文件描述符的管理。
支持多种类型的存储设备,如 SD Card、SPI Flash、Nand Flash 等。
DFS 的层次架构如下图所示,主要分为 POSIX 接口层、虚拟文件系统层和设备抽象层。如下图:
DFS 的更多内容,请在 RT-Thread 文档中心中查看:https://www.rt-thread.org/document/site/ (由于微信无法插入外部链接,请将以上链接复制至外部浏览器打开)
3. 在 SPI Flash 上使用文件系统
3.1 准备工作
以正点原子的潘多拉开发板 (Iot Board) 为例,教大家在 SPI Flash 上使用文件系统。
值得一提的是,RT-Thread 已经将 libc 那套文件系统接口对接到 DSF 上了,在 env 工具中开启 libc 和 DFS 即可,本次教程使用 libc 的那套接口进行文件的打开/关闭、读取/写入。
在 menuconfig 中开启 libc:
1RT-Thread Components --->
2 POSIX layer and C standard library --->
3 [*] Enable libc APIs from toolchain
在 meunconfig 中开启 DFS,本教程使用 elmfatfs 文件系统,需要将 elmfatfs 挂载到 RT-Thread 的 DFS 上,所以 elmfatfs 也要开启:
1RT-Thread Components --->
2 Device virtual file system --->
3 [*] Using device virtual file system
4 [*] Enable elm-chan fatfs
当然,不要忘记在 meunconfig 中开启 SPI Flash:
1