LAT1020
Local Application Tips
LAT1020 – Rev 1.0 – Aug. 2021
为 STM32 用户准备的 FatFS 基础知识
关键字:FatFS
1. 前言
FatFS 最初为小系统设计,特别适合 MCU 的应用场景,是 STM32 应用中的常用的一
个文件系统。一般情况下,直接使用 FatFS 应用接口 format, create, open, read, write,
close 等配合默认参数进行应用开发。但是,一些文件系统相关的问题,例如,如何优化
嵌入式系统使得所使用的空间为最小,开发人员就需要了解一些 FatFS 的基础知识。本文
就是为这部分需求而写。
2. 文件系统的结构
FAT 文件系统一般由以下部分依次组成, 引导区、保留区、FAT 区、根目录、子目录
与文件。
图 1 FAT 文件系统的结构
2.1. 描述
Boot Sector 引导区一般会存在于第 0 个逻辑 Sector。它会包含以下设置:
• 每 Sector 包含的字节数目,通常是 512(偏移 11-12)
• 每 Cluster 包含的 Sector 数目,可以是 1(偏移 13)
• 系统保留的 Sector 数目(偏移 14-15)
• FAT 数目(偏移 16)
• 根目录项数目(偏移 17-18)
• Sector 总数目(偏移 19-20)
• 每 Track 包含的 Sector 数目(偏移 24-25)
• Head 的数目(偏移 26-27)
• 隐藏的 sector 数目(偏移 28-29, 这里为 FAT12)
这些参数一般会由用户设置。在做 STM32 开发的时候,若使用外部 Flash 或者内部
SRAM, 对于 Track 和 Head,这些和实际物理磁盘相关的设置是没有意义的。所以,通
常在参考例程里,你可以看到,每 track 包含的 Sectors 和 Heads 通常设置成 1。当然隐
藏的 Sector 数目一般为 0。
注意,这里仅仅列出了用户经常需要关注的参数,并没有列出完整的引导区的布局。
如果需要完整的查看引导区的信息,也要留意 FAT12, FAT16 和 FAT32 在一些引导区参
数的不同。