FatFs - Generic FAT File System Module
FatFs is a generic FAT file system module for small embedded systems. The FatFs is written in compliance with ANSI C and completely separated from the disk I/O layer. Therefore it is independent of hardware architecture. It can be incorporated into small microcontrollers with limited resource, such as AVR, 8051, PIC, ARM, Z80, 68k and etc. Also Petit FatFs module for tiny microcontrollers is available here.
- Windows compatible FAT file system.
- Platform independent. Easy to port.
- Very small footprint for code and work area.
- Various configuration options:
- Multiple volumes (physical drives and partitions).
- Multiple ANSI/OEM code pages including DBCS.
- Long file name support in ANSI/OEM or Unicode.
- RTOS support.
- Multiple sector size support.
- Read-only, minimized API, I/O buffer and etc...
FatFs module provides following functions to the applications. In other words, this list describes what FatFs can do to access the FAT volumes.
Device Control Interface
Since the FatFs module is a file system layer, it is completely separated from physical devices, such as memory card, harddisk and any type of storage devices. FatFs accesses the storage device via a simple interface described below. The low level device control module is not a part of FatFs module. It is provided by implementer. Also sample implementations for some platforms are available in the downloads.
The FatFs module is a free software opened for education, research and development. You can use, modify and/or redistribute it for personal projects or commercial products without any restriction under your responsibility. For further information, refer to the application note.
- FatFs User Forum
- Read first: FatFs module application note June 19, 2014
- Download: FatFs R0.10b | Updates | Patches June 6, 2014
- Download: FatFs sample projects (AVR, PIC24, LPC2300, LPC1700, STM32, FM3, V850ES, H8/300H, SH-2A, RX62N, Win32 and Generic uC) June 7, 2014
- Download: Previous releases R0.10a | R0.10 | R0.09-R0.09b | R0.06-R0.08b | R0.01-R0.05a
- Nemuisan's Blog↗ (Well written implementations for STM32F/SDIO and LPC2300/MCI)
- ARM-Projects by Martin THOMAS↗ (Examples for LPC2000, AT91SAM and STM32)
- FAT32 Specification by Microsoft↗ (The reference document on FAT file system)
- The basics of FAT file system [ja]
- How to Use MMC/SDC
- Benchmark 1 (ATmega64/9.2MHz with MMC via SPI, HDD/CFC via GPIO)
- Benchmark 2 (LPC2368/72MHz with MMC via MCI)
- Demo movie of an application (this project is in ffsample.zip/lpc23xx)