|
This project was
originally intended as a FAT32 file IO library for the Atmel AVR, but has now grown into a general multipurpose platform
independent
C code implementation of a FAT32 driver with read & write support as well as the ability to use long filenames.
It started life in my MP3 project in 2003 with only very basic read support, and grew into a more fully featured module with a stdio like interface providing functions such as fopen(), fgetc(), fputc(), fread(), fwrite(), etc.
The project is aimed at applications which require file system support, such as MP3 players, data loggers, etc and has a low memory footprint with customizable build options to enable it to run on platforms such as the Atmel AVR, ARM & PIC microcontrollers.

The module design is layered & groups similar functions together to provide an easy to read and follow implementation of a file system driver.
If memory usage is tight, higher level file IO methods could be dropped to reduce the designs footprint.
This release provides a PC testbench for reading attached storage devices in Windows 2000/XP or mounting an image file of a hard disk/USB memory stick.
Linking in custom device drivers is easily achieved by modifying the low level access layer to point to the your custom drivers
relevant
function calls.
The driver was
originally
developed on an Atmel AVR ATmega128 using only the internal SRAM, and whilst the new design does not
natively
fit in that little SRAM, designs employing some extra memory mapped RAM & ROM should be able to make use of the latest read/write driver.
For those with smaller devices, the older versions of the code may prove more appropriate if just simple read only access is required.
- Version 2.x (2007) - Read + Write - Latest version, bigger interface layer.
- Version 1.0 (2006) - Read only - Simple stdio like interface + AVR IDE driver.
- Version 0.1 (2004) - Read only - Limited access functions, but low memory usag & AVR IDE driver.
The design has been tested on various platforms, but the main
development
has been done using an image of a hard disk drive running under Windows XP.

If you have any questions about the code, etc please use contact page located here...
- Microsoft FAT32 specification - Link
- Wiki page on FAT - Link
- Paul Stoffregen's FAT32 description - Link
|