【ARM】MDK的文件系统-2022

文件系统的工作原理:

文件系统组件提供创建、保存、读取和修改文件的功能。ARM C/ C++编译器运行库的重定向接口允许使用ANSI C标准文件I/O函数。文件系统组件是为基于Cortex-M处理器的设备设计的,需要一个符合CMSIS-RTOS的实时操作系统来实现线程安全的操作。


文件系统组件由两个不同的文件系统组成,根据媒体类型,它们位于不同的层之上:


FAT文件系统(使用FAT12、FAT16或FAT32)用于内存卡设备、USB记忆棒、NAND Flash设备和RAM磁盘。FAT是许多计算机上使用的标准文件系统。


嵌入式文件系统(EFS)为NOR闪存设备进行了优化。


FAT文件系统的日志记录是FAT文件系统的扩展,它有助于在嵌入式系统中保持文件系统的一致性。


存储卡控制层用于控制SDxC/MMC/eMMC存储设备。


NAND Flash Translation Layer提供了对NAND Flash设备进行磨损均衡、坏块管理和错误纠正的方法。


使用文件系统

文件系统组件与ARM标准实时运行库集成,需要一个与CMSIS-RTOS兼容的实时操作系统。它不能与ARM MicroLIB库一起使用,因为这个库没有提供用于I/O文件处理的钩子.


下图从开发人员的角度展示了文件系统的结构。



系统、文件管理: 管理文件系统的功能,提供格式化驱动器、管理文件和目录的操作。

标准文件I/O:对文件进行读、写、寻道等输入输出操作的函数。

ARM标准实时运行库:是ARM编译器的标准C库,含有管理文件的函数。

FS_Config.c:文件系统一般特征的配置文件。

定义可以同时打开的文件数量。

设置当前驱动器的初始设置。 当前驱动器用于文件系统功能



FS_Config_xxx_n.h:每个驱动器或媒体(MC、NAND、NOR、RAM或USB记忆棒)的特性配置文件。



文件系统核心:处理低级的输入和输出文件操作(有些被重新定位为使用ARM标准实时运行库)。根据配置设置,它使用适当的文件系统(FAT或EFS)并实现NAND Flash转换层。

FAT媒体API:用于FAT文件系统访问物理扇区的I/O控制接口例程。

FAT、EFS Media: FAT文件系统支持MC (Memory card)、NAND Flash、u盘和RAM盘。嵌入式文件系统(EFS)支持NOR Flash设备。

驱动文件系统核心通过cmsis驱动程序访问驱动器,这些驱动程序通常是设备家族包的一部分。每个驱动器都使用专用驱动器。