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

    文章

    7711

    浏览量

    152575
  • RT-Thread
    +关注

    关注

    31

    文章

    1318

    浏览量

    40768

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

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

收藏 人收藏

    相关推荐

    NFS网络文件系统深度解析

    NFS:Network File System 网络文件系统,基于内核的文件系统。Sun 公司开发,通过使用 NFS,用户和程序可以像访问本地文件一样访问远端系统上的
    的头像 发表于 03-01 14:15 176次阅读

    防止根文件系统破坏,OverlayRootfs 让你的设备更安全

    多个文件系统层合并成一个单一的视图,Linux系统中广泛应用。使用OverlayRootfs的设备可以很轻松的实现:根文件系统写保护、恢复出厂设置功能。根
    的头像 发表于 01-08 16:33 447次阅读
    防止根<b class='flag-5'>文件系统</b>破坏,OverlayRootfs 让你的设备更安全

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

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

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

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

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

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

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

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

    Linux根文件系统的挂载过程

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

    如何构建Linux根文件系统

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

    小型文件系统如何选择?FatFs和LittleFs优缺点比较

    01  概述 文件系统嵌入式系统中的作用不可或缺,它提供了对非易失性存储设备(如闪存、SD卡等)上的数据进行有效组织和管理的能力。通过文件系统,嵌入式
    的头像 发表于 09-29 16:14 2503次阅读
    小型<b class='flag-5'>文件系统</b>如何选择?FatFs和LittleFs优缺点比较

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

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

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

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

    如何修改buildroot和debian文件系统

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

    Linux高级文件系统管理详解

    阶的文件系统就得要学习,本章我们会介绍磁盘阵列 (RAID),及逻辑卷轴文件系统 (LVM),这些工具都可以帮助你管理与维护使用者可用的磁盘容量.
    的头像 发表于 07-16 16:31 524次阅读

    怎样修改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 1082次阅读
    linux--sysfs<b class='flag-5'>文件系统</b>