RT-Thread ART-PI 学习笔记:文件系统的使用和配置

前言

文件管理功能是操作系统的重要组成。现代嵌入式设备需要对越来越多,越来越复杂的存储数据进行管理,于是嵌入式操作系统中1引入了文件系统来进行管理。

文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型 (Abstract data type),是一种用于向用户提供底层数据访问的机制。文件系统通常存储的基本单位是文件,即数据是按照一个个文件的方式进行组织。当文件比较多时,将导致文件繁多,不易分类、重名的问题。而文件夹作为一个容纳多个文件的容器而存在。

参考资料

RT-Thread 官方虚拟文件系统文档
相关博客
相关博客

DFS架构

DFS 是 RT-Thread 提供的虚拟文件系统组件,全称为 Device File System,即设备虚拟文件系统,该文件系统使用起来的特性非常类似LINUX/UNIX的文件系统。

RT-Thread DFS 组件的主要功能特点有:

  • 为应用程序提供统一的 POSIX 文件和目录操作接口:read、write、poll/select 等。

  • 支持多种类型的文件系统,如 FatFS、RomFS、DevFS 等,并提供普通文件、设备文件、网络文件描述符的管理。

  • 支持多种类型的存储设备,如 SD Card、SPI Flash、Nand Flash 等。

DFS 的层次架构如下图所示,主要分为 POSIX 接口层、虚拟文件系统层和设备抽象层。
在这里插入图片描述

根据存储设备的不同,我们需要在DFS虚拟文件系统的根目录下挂载不同的文件系统,下面对几种文件系统进行介绍:

  • FatFS 是专为小型嵌入式设备开发的一个兼容微软 FAT 格式的文件系统,采用 ANSI C 编写,具有良好的硬件无关性以及可移植性,是 RT-Thread 中最常用的文件系统类型。在本文中主要用于挂载板子上的SD卡
  • LittleFs是ARM官方推出的,小巧灵活的文件系统。具有掉电恢复,擦写均衡和占用RAM/ROM较少的特点。。在本文中主要用于挂载板子上的W25Q128JV这个16M的SPI NOR FLASH

关于虚拟文件系统更多内容见官方文档,下文中的配置也是根据官方文档来做的。

ART-Pi 除了配备一颗 W25Q64JV 用于存放程序外,同时配备了另一颗 W25Q128JV 用于存放 WIFI 固件,蓝牙固件,等其它数据.官方建议这颗 W25Q128JV 的空间划分如下:

分区名 起始地址 分区大小 用途说明
wifi_image 0 512KB 保存 wifi 固件
bt_image 512 * 1024 512KB 保存 bt 固件
download 1 * 1024 * 1024 2048KB 固件下载分区
easyflash 3 * 1024 * 1024 1024KB easyflash 参数保存区
filesystem 4 * 1024 * 1024 12MB 文件系统分区

本文主要使用和配置FatFS和LittleFs两种文件系统,分别用来挂载SD卡和NOR FLASH两种设备。两种文件系统均挂载在DFS构成的根文件系统上。

前期准备

软件准备

  • RT-Thread Studio:一站式的 RT-Thread 开发工具,通过简单易用的图形化配置系统以及丰富的软件包和组件资源,让物联网开发变得简单和高效。官网链接

硬件准备

  • RT-Thread 推出的ART-PI STM32H750开发板
  • FATFS格式的任意大小SD卡一张,其他如NTFS格式的SD卡不适用于下文的配置,可通过SD卡格式化解决

配置步骤

新建工程

基于开发板建立模板工程
在这里插入图片描述

打开SD Card 和 NOR FLASH 的fliesystem

在这里插入图片描述

配置虚拟文件系统

注意设置要处理的最大扇区大小,根据官方文档改成512.
在这里插入图片描述

在这里插入图片描述看下面一张图可以发现,fal这个flash抽象层的软件包也被打开了,FAL实际上就是下图SPI FLASH的块设备抽象层,通过终端打印出来的信息可以知道,FAL有五个分区,其中最后一个分区filesystem通过littlefs挂载在文件系统里,而SD卡通过elm-FATFS挂载在文件系统里,他的块设备抽象层用的是FATFS里自带的抽象层,littlefs在图中没有,但其实littlefs是和FATFS同级的
在这里插入图片描述
在这里插入图片描述

打开LittleFs软件包

在这里插入图片描述

打开MTD NOR FLASH设备驱动程序

该设备驱动程序默认会被打开
在这里插入图片描述

查看文件系统初始化代码

在filesystem.c文件中,IDE已经帮我们编写好文件系统初始化和挂载代码,SD卡挂载到FATFS上,NOR FLASH挂载到LittleFS上,十分方便。
在这里插入图片描述

编译下载

通过终端查看,可以看到文件系统已经挂载成功。
在这里插入图片描述

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2021 张竞豪的小岛 All Rights Reserved.

UV : | PV :