FatFs文件系统(通用FAT文件系统模块)----下载和使用教程

发布时间:2026/7/27 19:54:33
FatFs文件系统(通用FAT文件系统模块)----下载和使用教程 FatFs文件系统通用FAT文件系统模块介绍FatFs 是一款面向小型嵌入式系统的通用 FAT/exFAT 文件系统模块。该模块遵循 ANSI CC89标准编写并与磁盘控制层完全分离因此具备平台与存储设备无关性。它可集成到资源有限的小型微控制器中例如 8051、PIC、AVR、ARM、Z80、RX 等系列。此外还提供适用于内存极度受限系统的 Petit FatFs 模块微型可在此处获取。功能特性兼容DOS/Windows的FAT/exFAT文件系统。平台无关。易于移植。程序代码和工作区占用资源极少。支持以下各种配置选项1 ANSI/OEM 或 Unicode 格式的长文件名2支持大容量存储的 exFAT 文件系统、64 位逻辑块地址LBA以及全局唯一标识分区表GPT。3适用于实时操作系统的线程安全。4多个卷物理驱动器和分区最多10个卷。5可变扇区大小。6包含双字节字符集的多种代码页。7只读、可选的API、I/O缓冲区等…层级结构最顶层是应用层使用者只需要调用FATFS模块提供给用户的一系列应用接口函数如f_open, f_read, f_write和f_close等就可以像在PC上读写文件那样简单。中间层FATFS模块实现了FAT文件读写协议它提供了ff.c和ff.h文件一般情况下不用修改使用时将头文件包含进去即可。最底层是FATFS模块的底层接口包括存储媒介读写接口和供给文件创建修改时间的实时时钟需要在移植时编写对应的代码。官网下载FatFs官网地址https://elm-chan.org/fsw/ff/FatFs官网界面如下往下划到底可以下载源码。点击最新版本压缩包选择下载路径就可以下载最新的源码。点击最新补丁可以看到已发现并解决的BUG。点击历史版本可以下载其他版本的源码。FatFs是完整版Petit FatFs是阉割版。Petit FatFs是用于小型8位微控制器的FatFs模块的子集功能简单占用资源小。它是按照ANSI C编写的并且与磁盘I/O层完全分开。即使RAM大小小于扇区大小也可以将其合并到内存有限的微型微控制器中。源码文件说明下载后的文件压缩包需要解压。解压后点开文件具体如下documents文件FatFs说明资料这个文件都是说明资料简单了解一下就可以。source文件FatFs程序源码具体说明如下表文件说明00history.txt版本修订记录00readme.txt说明文件diskio.c底层驱动文件diskio.h底层驱动头文件ff.c应用接口文件ff.h应用接口头文件ffconf.h配置头文件宏配置ffsystem.c操作系统相关适配函数示例文件ffunicode.cUnicode 编码工具函数文件底层source/ diskio.c、source/diskio.h函数作用disk_status获取驱动状态disk_initialize初始化驱动disk_read读取数据disk_write写入数据disk_ioctl控制设备相关功能应用接口层source/ff.c、source/ff.h1文件访问函数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 – 检测错误2目录访问函数f_opendir – 打开目录f_closedir – 关闭已打开的目录f_readdir – 读取目录项f_findfirst – 打开目录并读取第一个匹配项f_findnext – 读取下一个匹配的项目3文件和目录管理函数f_stat – 检查文件或子目录是否存在f_unlink – 删除文件或子目录f_rename – 重命名/移动文件或子目录f_chmod – 更改文件或子目录的属性f_utime – 修改文件或子目录的时间戳f_mkdir – 创建子目录f_chdir – 更改当前目录f_chdrive – 更改当前驱动器f_getcwd – 获取当前目录和驱动器4卷管理和系统配置函数f_mount – 注册/注销卷的工作区域f_mkfs – 在逻辑驱动器上创建一个FAT卷f_fdisk – 在物理驱动器上创建分区f_getfree – 获取卷的可用空间f_getlabel – 获取卷标f_setlabel – 设置卷标f_setcp – 设置活动代码页