1官网
FatFs - 通用 FAT 文件系统模块 (elm-chan.org)
FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块。FatFs 模块是按照 ANSI C (C89) 编写的,并且与磁盘 I/O 层完全分离。因此,它独立于平台。它可以集成到资源有限的小型微控制器中,如8051、PIC、AVR、ARM、Z80、RX等。此外,此处还提供用于微型微控制器的 Petit FatFs 模块。
特征
- DOS/Windows 兼容 FAT/exFAT 文件系统。
- 独立于平台。易于移植。
- 程序代码和工作区的占用空间非常小。
- 支持的各种配置选项:
- ANSI/OEM 或 Unicode 格式的长文件名。
- exFAT 文件系统、64 位 LBA 和 GPT 用于大型存储。
- RTOS 的线程安全。
- 多个卷。(物理驱动器和分区)
- 可变扇区大小。
- 包括 DBCS 在内的多个代码页。
- 只读、可选 API、I/O 缓冲区等...
应用界面
FatFs 为应用程序提供了各种文件系统功能,如下所示。
- 文件访问
- f_open - 打开/创建文件
- f_close - 关闭打开的文件
- f_read - 从文件中读取数据
- f_write - 将数据写入文件
- f_lseek - 移动读/写指针,扩展大小
- f_truncate - 截断文件大小
- f_sync - 刷新缓存的数据
- f_forward - 将数据转发到流
- f_expand - 为文件分配一个连续的块
- f_gets - 读取字符串
- f_putc - 写一个字符
- f_puts - 写一个字符串
- f_printf - 编写格式化字符串
- f_tell - 获取当前读/写指针
- f_eof - 测试文件结束
- f_size - 获取尺寸
- f_error - 测试错误
- 目录访问
- f_opendir - 打开目录
- f_closedir - 关闭打开的目录
- f_readdir - 读取目录项
- f_findfirst - 打开目录并读取匹配的第一个项目
- f_findnext - 读取下一个匹配的项目
- 文件和目录管理
- f_stat - 检查文件或子目录是否存在
- f_unlink - 删除文件或子目录
- f_rename - 重命名/移动文件或子目录
- f_chmod - 更改文件或子目录的属性
- f_utime - 更改文件或子目录的时间戳
- f_mkdir - 创建子目录
- f_chdir - 更改当前目录
- f_chdrive - 更改电流驱动器
- f_getcwd - 检索当前目录和驱动器
- 卷管理和系统配置
- f_mount - 注册/注销卷的工作区
- f_mkfs - 在逻辑驱动器上创建 FAT 卷
- f_fdisk - 在物理驱动器上创建分区
- f_getfree - 获取卷上的可用空间
- f_getlabel - 获取卷标
- f_setlabel - 设置卷标
- f_setcp - 设置活动代码页
媒体访问接口
由于 FatFs 模块是独立于平台和存储介质的文件系统层,因此它与物理设备(如存储卡、硬盘和任何类型的存储设备)完全分离。存储设备控制模块不是 FatFs 模块的任何部分,需要由实现者提供。FatFs 通过如下所示的简单媒体访问接口控制存储设备。此外,下载中还提供了某些平台的示例实现。此处提供了存储设备控制模块的功能检查器。
- 存储设备控制
- disk_status - 获取设备状态
- disk_initialize - 初始化设备
- disk_read - 读取数据
- disk_write - 写入数据
- disk_ioctl - 控制设备相关功能
- 实时时钟
- get_fattime - 获取当前时间
项目的文件
文件类别 | 文件名 | 说明 |
---|---|---|
FATFS核心文件 | ff.c, ff.h | FAT文件系统的核心实现和头文件 |
磁盘I/O接口 | diskio.c, diskio.h | 底层磁盘I/O函数的实现和声明,用于硬件平台特定的存储设备操作 |
FATFS配置 | ffconf.h | FATFS的行为配置,如文件系统类型、长文件名支持等 |
整数类型定义 | integer.h | 提供一致的数据类型定义,用于跨平台兼容性 |
内存管理 | ffsystem.c, ffsystem.h | FATFS的内存分配和释放函数的实现和声明 |
Unicode支持 | ffunicode.c, ffunicode.h | Unicode字符编码转换相关函数,用于长文件名支持 |
主程序入口 | main.c | 系统初始化、线程创建、文件系统管理等 |
项目构建 | Makefile | 自动化编译脚本,用于构建整个项目 |
MMC/SD卡驱动 | mmc_stm32f1_spi.c | STM32F103微控制器的SPI接口的MMC/SD卡驱动程序 |
实时时钟 | rtc_stm32f1.c, rtc_stm32f1.h | 实时时钟(RTC)功能的实现和声明 |
系统启动代码 | startup_stm32f100.c | 微控制器启动代码,负责硬件初始化和引导加载 |
链接脚本 | STM32F100RBT6.ld | 指定链接器如何将源文件组合成可执行文件,以及内存空间分配 |
配置文件 | stm32sp.ini, tt.ini | 可能用于配置STM32F103微控制器的特定参数或系统行为 |
图形界面相关 | stm32_mmc.png | 可能是用于显示MMC接口连接示意图的图像文件 |
微控制器型号相关 | STM32F100.h | 包含STM32F100微控制器型号的寄存器映射和功能描述 |
串行通信接口 | uart_stm32f1.c, uart_stm32f1.h | 串行通信接口(UART)的实现和声明 |
打印函数库 | xprintf.c, xprintf.h | 基于xprintf库的 printf 函数的实现和声明,用于高效的打印功能 |
FATFS的核心文件通常包括以下几个:
- diskio.c: 这是磁盘输入输出(Disk I/O)功能的C语言源代码文件。它可能包含了操作磁盘设备、读写数据等函数。
- diskio.h: 这是磁盘输入输出相关头文件,用于定义了在C语言中访问磁盘所需的结构和宏。
- ff.c: 这可能是名为“ff”的库或项目的C语言源代码文件。具体功能需要根据上下文来判断。
- ff.h: 这是名为“ff”的库或项目的头文件,用于定义了在C语言中使用该库所需的数据结构和接口。
- ffconf.h: 这是“ff”库的配置文件,其中可能包含了编译和链接时需要的特定选项或参数。
- ffunicode.c: 这可能是一个处理Unicode字符的C语言源代码文件,与文本编码转换有关。
- integer.h: 这是整数类型的头文件,通常包含了标准C语言中的int、long int等整数类型定义。
- ffsystem.c 和 ffsystem.h:这些文件包含了FATFS的内存分配和释放函数的实现和声明。