Bootstrap

rt-thread学习之路第八十三章——在STM32L4上应用littlefs文件系统

目录

在 STM32L4 上应用 littlefs 文件系统

littlefs 简介

名词解释

层级关系

littlefs 的移植

使能DFS框架

配置 littlefs

使能 MTD 设备

配置 fal

使能外置 FLASH

更新软件包并生成工程

检查分区表

创建 MTD 设备并挂载文件系统

验证 fal 分区和 MTD 设备

文件系统的使用

FinSH 命令


在 STM32L4 上应用 littlefs 文件系统

本文介绍了 littlefs 文件系统的基本知识和使用方法,帮助开发者更好地使用 littlefs 文件系统。并给出了基于 FAL 移植的代码示例。

littlefs 简介

littlefs 是 ARM 官方推出的,专为嵌入式系统设计的文件系统,相比传统的文件系统,littlefs 具有以下优点:

  • 自带擦写均衡
  • 支持掉电保护
  • 占用的 RAM/ROM 少

littlefs 自带的擦写均衡和掉电保护使开发者可以放心的将文件系统挂载到 nor flash 上。

名词解释

在 RT-Thread 上使用 littlefs,会依赖一些软件包或者系统组件,下面会对这些需要用到的名词做出解释:

  1. DFS 框架

    DFS 框架 是 RT-Thread 提供的虚拟文件系统组件,全称为 Device File System,即设备虚拟文件系统。DFS 框架为应用程序提供统一的 POSIX 文件和目录操作接口,如 read、write、poll/select 等。DFS 框架支持多种类型的文件系统,如 FatFS、RomFS、DevFS 等,并提供普通文件、设备文件、网络文件描述符的管理。

  2. MTD 设备

    MTD 设备,全称为 Memory Technology Device,使用 MTD 设备为 NOR FLASH 和 NAND FLASH 提供统一接口,将文件系统与底层 FLASH 存储器进行了隔离。

  3. fal 组件

    fal 全称为 Flash Abstraction Layer,即 Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API。并提供了将分区创建成 MTD 设备的 API。

  4. SFUD 组件

    SFUD 是一款开源的串行 SPI Flash 通用驱动库。现有市面的大部分串行 Flash,用户只需要提供 SPI 或 QSPI 的读写接口,SFUD 就可以识别并驱动。同时 RT-Thread 提供了 FAL 针对 SFUD 的驱动移植,可以使两个组件无缝连接。

层级关系

littlefs 在 RT-Thread 上运行的层级关系图如下所示:

hierarchical

开发者使用的是 DFS 框架提供的统一的 POSIX API,DFS 框架会调用 littlefs 的 API,littlefs 会使用 MTD 设备的读写接口,开发者可以使用 RT-Thread 提供的 fal 组件和 SFUD 组件来完成对 FLASH 的读写任务,也可以自己实现 MTD 设备的驱动程序,使 littlefs 可以挂载到更多的存储介质上。

littlefs 的移植

社区热心开发者 geniusgogo 为 RT-Thread 移植了 littlefs 的软件包,开发者只需要提供一个 MTD 设备即可使用 littlefs。开发者可以自己实现一个 MTD 设备

;