FatFs是一个通用的FAT/exFAT文件系统模块,适用于小型嵌入式系统的FAT文件系统实现。该组件采用ANSI C (C89)标准编写,独立于磁盘I/O层,因此可以灵活地应用于各种硬件平台,无需修改即可嵌入到低成本的微控制器中,如8051、PIC、AVR、ARM、Z80、RX等。
FatFs提供了对FAT12、FAT16和FAT32的支持,以及对多个卷(物理驱动器与分区)的操作能力。它还支持两种分区规则:
fdisk和Super-floppy,并提供多种配置选项,包括长文件名支持、可选的编码页(包括DBCS)、多任务支持、只读模式、最小化API、缓冲区配置等功能。此外,FatFs还具有应用程序接口,使得用户能够方便地使用其提供的功能。
FatFs提供了丰富的应用程序接口,包括注册/注销工作区域(f_mount)、打开/创建文件(f_open)、关闭文件(f_close)、读取文件(f_read)、写入文件(f_write)、移动文件读/写指针(f_lseek)、截断文件(f_truncate)、冲洗缓冲数据(f_sync)、打开目录(f_opendir)、读取目录条目(f_readdir)、获取空闲簇(f_getfree)、获取文件状态(f_stat)、创建目录(f_mkdir)、删除文件或目录(f_unlink)、改变属性(f_chmod)、改变时间戳(f_utime)、重命名/移动文件或文件夹(f_rename)、在驱动器上创建文件系统(f_mkfs)、直接转移文件数据到数据流(f_forward)、读取字符串(f_gets)、写入字符(f_putc)、写入字符串(f_puts)以及写入格式化的字符(f_printf)。这些接口使开发者能够轻松地操作文件系统。
由于FatFs模块与磁盘I/O层完全分离,为了实现对物理磁盘的读写及获取当前时间的功能,FatFs需要调用低层磁盘I/O模块提供的特定函数。这些函数包括初始化磁盘驱动器(disk_initialize)、获取磁盘状态(disk_status)、读取扇区(disk_read)、写入扇区(disk_write)、设备相关特性的控制(disk_ioctl)以及获取当前时间(get_fattime)。需要注意的是,这些低层磁盘I/O模块并非FatFs的一部分,而是由用户自行提供。同时,在提供的资源中也可以找到相应的示例驱动程序。