0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

RTThread物联网操作系统 来源:RTThread物联网操作系统 作者:RTThread物联网操作 2022-04-19 14:46 次阅读

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

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

06ac0056-bf94-11ec-9e50-dac502259ad0.png

(来源: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 快速上手指南”。

06bdca0c-bf94-11ec-9e50-dac502259ad0.png

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

06dfad98-bf94-11ec-9e50-dac502259ad0.jpg

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

06eed0b6-bf94-11ec-9e50-dac502259ad0.jpg

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

06fedac4-bf94-11ec-9e50-dac502259ad0.jpg

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

0710d990-bf94-11ec-9e50-dac502259ad0.jpg

07278078-bf94-11ec-9e50-dac502259ad0.jpg

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

073dc518-bf94-11ec-9e50-dac502259ad0.png

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

0751d3f0-bf94-11ec-9e50-dac502259ad0.png

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

0765444e-bf94-11ec-9e50-dac502259ad0.png

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

07747252-bf94-11ec-9e50-dac502259ad0.png

审核编辑 :李倩

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

    关注

    48

    文章

    7547

    浏览量

    151325
  • RT-Thread
    +关注

    关注

    31

    文章

    1285

    浏览量

    40093

原文标题:NuMaker-IoT-M487 演示 FatFs 文件系统使用

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    华纳云:VFS提升文件系统性能方面的具体实践

    VFS(Virtual File System)通过提供统一的接口和抽象层,使得操作系统能够以高效的方式管理和访问不同的文件系统。以下是一些VFS提升文件系统性能方面的具体实践示例:
    的头像 发表于 11-27 15:59 170次阅读

    Jtti:Linux中虚拟文件系统和容器化的关系

    Linux中,虚拟文件系统(VFS)和容器化威廉希尔官方网站 之间有密切的关系。容器化是指通过使用容器来运行应用程序,而容器本质上是宿主机上运行的独立进程,它们通常共享宿主机的操作系统内核和部分
    的头像 发表于 11-27 15:38 144次阅读

    虚拟化数据恢复—UFS2文件系统数据恢复案例

    虚拟化数据恢复环境: SAN环境下通过iSCSI实现FreeNAS,FreeNAS采用的UFS2文件系统。物理存储架构一台服务器上,另外两台服务器上安装ESXi虚拟
    的头像 发表于 11-11 11:02 158次阅读

    stm32单片机基于rt-thread 的 littlefs 文件系统 的使用

    简介littlefs是ARM官方推出的,专为嵌入式系统设计的文件系统,相比传统的文件系统,littlefs具有以下优点:1、自带擦写均衡2、支持掉电保护3、占用的
    的头像 发表于 11-06 08:04 633次阅读
    stm32单片机基于<b class='flag-5'>rt-thread</b> 的 littlefs <b class='flag-5'>文件系统</b> 的使用

    Linux根文件系统的挂载过程

    Linux根文件系统(rootfs)是Linux系统中所有其他文件系统和目录的起点,它是内核启动时挂载的第一个文件系统
    的头像 发表于 10-05 16:50 408次阅读

    如何构建Linux根文件系统

    构建Linux根文件系统是一个涉及多个步骤和概念的过程,它对于Linux系统的启动和运行至关重要。
    的头像 发表于 10-05 16:47 295次阅读

    想提高开发效率,不要忘记文件系统

    ​同学们都知道,开发过程中文件系统的重要性,同样的,4G-Cat.1模组的文件系统也非常重要,它通常与数据传输速度、存储效率,以及数据安全性等有非常重要的关系,应用开发中也非常重要。
    的头像 发表于 09-21 08:18 233次阅读
    想提高开发效率,不要忘记<b class='flag-5'>文件系统</b>

    如何更改Linux文件系统终端显示颜色

    自己制作的简单 Linux 文件系统,你会发现终端显示为黑白色,很不好看
    的头像 发表于 08-12 17:29 527次阅读
    如何更改Linux<b class='flag-5'>文件系统</b>终端显示颜色

    如何修改buildroot和debian文件系统

    本文档主要介绍没有编译环境的情况下,如何修改buildroot和debian文件系统方法,如在buildroot文件系统中添加文件、修改目录等文件
    的头像 发表于 07-22 17:46 458次阅读
    如何修改buildroot和debian<b class='flag-5'>文件系统</b>

    怎样修改LVGL的lv_port_fs文件,让它使用rt-thread的DFS文件系统中的API函数读取SD卡中的图片?

    我想问一下,怎样修改LVGL的lv_port_fs文件,可以让它使用rt-thread的DFS文件系统中的API函数(这些API函数rt-thre
    发表于 07-11 06:53

    linux--sysfs文件系统

    sysfs文件系统 sysfs,全称为System Filesystem,是一个由Linux内核实现的虚拟文件系统。它扮演着一个桥梁的角色,将内核中的设备和驱动程序信息以文件的形式呈现给用户空间
    的头像 发表于 07-08 11:37 844次阅读
    linux--sysfs<b class='flag-5'>文件系统</b>

    Linux系统如何扩展文件系统

    当数据盘没有创建分区,只设备上创建了文件系统。或者格式化了硬盘,就直接mount上系统使用。
    的头像 发表于 02-21 09:53 834次阅读

    鸿蒙轻内核源码分析:虚拟文件系统 VFS

    VFS(Virtual File System)是文件系统虚拟层,它不是一个实际的文件系统,而是一个异构文件系统之上的软件粘合层,为用户提供统一的类 Unix
    的头像 发表于 02-18 14:50 813次阅读

    【服务器数据恢复】UFS2文件系统数据恢复案例

    服务器数据恢复环境: 一台服务器,虚拟系统为esxi,上层使用iSCSI的方式实现FC SAN功能,iSCSI通过FreeNAS构建。 FreeNAS采用了UFS2文件系统,esxi虚拟
    的头像 发表于 01-09 14:53 885次阅读

    教你Ubuntu系统上定制文件系统

    ,那么接下来,小编就为大家介绍Forlinx Desktop(Ubuntu)系统上定制文件系统的操作过程。 解压文件系统 首先,找到OKT507-desktop-release源码
    发表于 12-26 16:33