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的核心文件通常包括以下几个:

    1. diskio.c: 这是磁盘输入输出(Disk I/O)功能的C语言源代码文件。它可能包含了操作磁盘设备、读写数据等函数。
    2. diskio.h: 这是磁盘输入输出相关头文件,用于定义了在C语言中访问磁盘所需的结构和宏。
    3. ff.c: 这可能是名为“ff”的库或项目的C语言源代码文件。具体功能需要根据上下文来判断。
    4. ff.h: 这是名为“ff”的库或项目的头文件,用于定义了在C语言中使用该库所需的数据结构和接口。
    5. ffconf.h: 这是“ff”库的配置文件,其中可能包含了编译和链接时需要的特定选项或参数。
    6. ffunicode.c: 这可能是一个处理Unicode字符的C语言源代码文件,与文本编码转换有关。
    7. integer.h: 这是整数类型的头文件,通常包含了标准C语言中的int、long int等整数类型定义。
    8. ffsystem.c 和 ffsystem.h:这些文件包含了FATFS的内存分配和释放函数的实现和声明。

    作者:知更鸟_z

    物联沃分享整理
    物联沃-IOTWORD物联网 » FatFs(文件系统)

    发表回复