FAT12 / FAT16 / FAT32
The earliest version of FAT, the file system integrated into MS-DOS, is now called FAT12, so-called because each cluster address in the File Allocation Table is 12 bits long. This limits disk size to approximately 32 MB. Extensions to 16- and 32-bit addresses (i.e., FAT16 and FAT32), expand support to 2 GB and 8 TB, respectively.
FAT version |
Pointer size (Table entry size) |
Max. size of disk |
Free cluster marker |
Damaged cluster marker |
End of cluster chain marker |
FAT12 |
12 bits |
32 MB |
0 |
0xff7 |
0xff8 |
FAT16 |
16 bits |
2 GB |
0 |
0xfff7 |
0xfff8 |
FAT32 |
32 bits |
8 TB |
0 |
0x0fff fff7 |
0x0fff fff8 |
In µC/FS, you can enable support for FAT12, FAT16 and FAT32 individually: this means that you can enable only the FAT version that you need for your embedded system (see Appendix E, “μC/FS Configuration” on page 497.
FAT32 introduced some innovations:
The root directory in the earlier systems was a fixed size; i.e., when the medium is formatted, the maximum number of files that could be created in the root directory (typically 512) is set. In FAT32, the root directory is dynamically resizable, like all other directories.
Two special sectors have been added to the volume: the FS info sector and the backup boot sector. The former stores information convenient to the operation of the host, such as the last used cluster. The latter is a copy of the first disk sector (the boot sector), in case the original is corrupted.