RT-Thread在文件系统提出完整的方案:虚拟文件系统

描述

FAT 文件系统是微软 (Microsoft) 从 MS-DOS 时代开始使用的,因应储存装置容量和功能增加而数次改版,由于架构简单使得广泛的被各种操作系统支持。因此使用 FAT文件系统让储存装置在不同操作系统上具备良好的交换性。譬如 SD 记忆卡采用 FAT 文件系统,相机拍摄照片存入 SD 卡,SD 卡插到 Windows PC、Linux PC 或 Mac 都可以存取。所以微控制器接 SD 卡或快闪硬盘,除了对应的接口外,必须支持 FAT 文件系统才能正常存取。

RT-Thread 在文件系统提出完整的方案 – 虚拟文件系统 (DFS, Device FileSystem) , 提供 POSIX 的操作接口, 支持多种类型文件系统, 支持多种类型的储存设备. 架构图如下

RT-Thread

(来源: RT-Thread 文文件中心 – 虚拟文件系统. https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/filesystem/filesystem)

从架构图可以了解 RT-Thread 整合 ELM FatFs

(http://elm-chan.org/fsw/ff/00index_e.html)

提供 FAT 兼容的文件系统功能。经过块设备 (Block Device) 存取 SD 卡或 SPI Flash。FatFs 针对资源少的小型微控制器而设计,支持长文件名、多国语系和大容量 exFAT 等等功能。有许多选项可以增减功能,进一步缩减程序代码大小。

这次仍以 NuMaker-IoT-M487 开发板为操作范例。这片开发板上有 Winbond W25Q32 SPIFlash 和 MicroSD 卡槽。关于开发板的介绍,请参考系列文章第一篇 “NuMaker-IoT-M487 的 RT-Thread 快速上手指南”。

RT-Thread

在 “NuMaker-IoT-M487 的 RT-Thread 快速上手指南” 文章里的基础范例已经包含文件系统相关的设定。开启 rtconfig.h,使用 SD 卡和 SPI Flash 已经定义。

RT-Thread

接下来查看 SPI Flash 的部分。RT-Thread 提供 SFUD (SPI Flash Universal Driver) 做为 SPI Flash 的块设备。依照SFUD串上 SPI 底层的代码在boardlock_dev.c,只要定义 BOARD_USING_STORAGE_SPIFLASH 就会引入。

RT-Thread

board_dev.c 往下可以看到 SPI Flash 启始的代码,把这个 SPI Flash 取名为 flash0。

RT-Thread

接下来透过RT-Thread DFS 把 SPIFlash 以 ELMFatFs 挂在 “/” 目录下。代码在 applicationsmnt.c

RT-Thread

RT-Thread

请继续按照前篇文章的步骤编译,再把固件刻录到 NuMaker-IoT-M487 开发板。利用 RT-Thread 的console, 可以测试 SPI Flash, 暂时不用改写代码。当按下 NuMaker-IoT-M487 的Reset 键,终端机出现许多开机过程的讯息,其中查看 SPI Flash 的启始讯息,包含发现 Winbond SPI Flash,有 4M Bytes 容量。

RT-Thread

开发板上的 SPI Flash 必须先格式化成 FAT 文件系统才能正常的挂载。在终端机里出现msh />后,输入格式化命令。

RT-Thread

然后再按 Reset 键就可以看到挂载成功的讯息。

RT-Thread

接着可以下档案与目录的操作,包含 echo、df、mkdir、cd、rm、cat、mv、cp、ls 等等命令。

RT-Thread

审核编辑 :李倩

 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分