FatFs - Generic FAT Filesystem Module
FatFs is a generic FAT/exFAT filesystem module for small embedded systems. The FatFs module is written in compliance with ANSI C (C89) and completely separated from the disk control layer. Therefore it is independent of the platforms and storage devices. It can be incorporated into small microcontrollers with limited resource, such as 8051, PIC, AVR, ARM, Z80, RX and etc. Also Petit FatFs module for tiny microcontrollers is available here.
Features
- DOS/Windows Compatible FAT/exFAT Filesystem.
- Platform Independent. Easy to port.
- Very Small Footprint for Program Code and Work Area.
- Various Configuration Options to Support for:
- Long File Name in ANSI/OEM or Unicode.
- exFAT Filesystem, 64-bit LBA and GPT for Huge Storages.
- Thread Safe for RTOS.
- Multiple Volumes. (Physical Drives and Partitions)
- Variable Sector Size.
- Multiple Code Pages Including DBCS.
- Read-only, Optional APIs, I/O Buffer and etc...
Application Interface
FatFs provides various filesystem functions for the applications as shown below.
- File Access
- Directory Access
- File and Directory Management
- f_stat - Check existance of a file or sub-directory
- f_unlink - Remove a file or sub-directory
- f_rename - Rename/Move a file or sub-directory
- f_chmod - Change attribute of a file or sub-directory
- f_utime - Change timestamp of a file or sub-directory
- f_mkdir - Create a sub-directory
- f_chdir - Change current directory
- f_chdrive - Change current drive
- f_getcwd - Retrieve the current directory and drive
- Volume Management and System Configuration
- f_mount - Register/Unregister the work area of the volume
- f_mkfs - Create an FAT volume on the logical drive
- f_fdisk - Create partitions on the physical drive
- f_getfree - Get free space on the volume
- f_getlabel - Get volume label
- f_setlabel - Set volume label
- f_setcp - Set active code page
Media Access Interface
Since FatFs module is the Filesystem Layer independent of platforms and storage media, it is completely separated from the physical devices, such as memory card, harddisk and any type of storage device. The storage device control module is not a part of FatFs module and it needs to be provided by implementer. FatFs controls the storage devices via a simple media access interface shown below. Also sample implementations for some platforms are available in the downloads. A function checker for storage device control module is available here.
- Storage Device Controls
- Real Time Clock
Resources
The FatFs module is a free software opened for education, research and development. You can use, modify and/or redistribute it for any purpose without any restriction under your responsibility. For further information, refer to the application note.