5.3 根目錄區分析
注意,根目錄區只有 FAT12 / FAT16 系統上存在,在FAT32系統上不存在此區域。
根目錄區用來記錄根目錄下的文件內容,根據 4.3 章節計算可知,根目錄區起始地址為:==0x3C000==,大小為==0x4000==,數據內容如下:

以下是對數據字段進行分析后的內容,如下圖所示:

格式化之后,默認會生成一個System Volume Infomation的系統文件夾,同時此文件夾是根目錄下唯一的一個文件,因此在根目錄的數據如上圖所示。
此文件夾為目錄屬性,是隱藏的系統目錄
長文件名為System Volume Information,短文件名為SYSTEM~1
==此目錄指向存放的數據在2號簇(對應數據區第一個簇),文件大小字段,由于此文件為目錄屬性,此字段無意義,因此強制為0==
至此,根目錄區分析完了,同時根目錄區的 System Volume Information文件指向數據區第一個簇(2號簇),接下來我們便進入數據區進行分析。
5.4 數據區分析
根據 4.3 章節計算可知,數據區起始地址為:0x40000,大小為242176 * 512 = 0x764 0000,數據內容如下:

對應數據字段分析如下:

System Volume Information 目錄下存在兩個文件,分別是IndexerVolumeGuid 和 WPSettings.dat。根據上述分析可知:
IndexerVolumeGuid文件的數據存放在 FAT[3],3號簇上,即數據區的第3個簇(數據區的第1個簇為2號簇);
WPSettings.dat 文件的數據存放在 FAT[4],4號簇上,即數據區的第2個簇(數據區的第1個簇為2號簇);
首先,我們跳轉到4號簇上查看IndexerVolumeGuid的數據,對應地址計算方式為:
FirstSectorofCluster = DataStartSector + (N - 2) BPB_SecPerClus = 512 + (4 - 2) 4
= 520;
對應地址為: FirstSectorofCluster BPB_BytsPerSec = 520 512 = 0x0004 1000

接著跳轉到3號簇上查看WPSettings.dat的數據,對應地址計算方式為:
FirstSectorofCluster = DataStartSector + (N - 2) BPB_SecPerClus = 512 + (3 - 2) 4
= 516;
對應地址為: FirstSectorofCluster BPB_BytsPerSec = 520 512 = 0x0004 0800

5.5 新增文件測試
在根目錄下新增 test 目錄,使用winhex更新磁盤數據,觀察各數據區變化
保留區無變化
FAT區變化如下:

根目錄區變化如下:

數據區變化:

新增long file test文件夾,里面存入一個 ==長度為 2050 Byte(占據兩個簇的空間)== 的test.txt文件,使用winhex重新打開磁盤進行分析。

保留區無變化
FAT區變化如下:

根目錄區變化如下:

數據區變化如下:
long file test 目錄數據指向6號簇,跳轉至6號簇,地址 DataStartSector + (N - 2) * BPB_SecPerClus = 0x40000 + (6-2) * 4 * 512 = 0x420000

test.txt 文件指向 7號簇,跳轉至7號簇,地址 DataStartSector + (N - 2) * BPB_SecPerClus = 0x40000 + (7-2) * 4 * 512 = 0x428000,均為test.txt的實際有效數據,如下:

-
總結
以上便是關于FAT文件系統的全部分析了,通過上述分析,外加新增文件輔助理解,對于文件在FAT文件系統下如何管理、存儲,相信已經有了非常深入的了解。
FAT文件系統分為四個區:
保留區最重要的是里面包含引導扇區,引導扇區內存放著BIOS參數信息,通過此參數可以知道FAT文件系統的flash布局,以及flash大小,fat塊大小、簇大小等關鍵信息;
FAT區,記錄了文件所占用簇的情況,以及對于文件大小大于一個簇的文件,在FAT區內形成簇鏈,記錄文件由哪幾個簇組成
根目錄區,只有FAT12/16系統所有,記錄了根目錄下的文件/目錄條目信息
數據區,記錄數據分為兩個部分,第一部分為目錄信息,除根目錄外,每個文件夾需要占據一個及以上的簇描述對應目錄下的文件情況;第二部分為具體文件數據。兩部分數據通過短文件名SFN字段進行關聯!
-
SFN
+關注
關注
0文章
5瀏覽量
9229 -
fat32文件系統
+關注
關注
0文章
7瀏覽量
6935 -
FAT12
+關注
關注
0文章
2瀏覽量
1892
發布評論請先 登錄
FATFS文件系統移植
STM32CubeMx入門教程(10):Fatfs文件系統的應用
FATFS文件系統移植
FATFS文件系統簡介
FatFs文件系統的原理是什么?如何對FATFS進行移植?
FatFs通用FAT文件系統模塊_中文手冊
CH579 SPIFLASH W25Q64 FATFS文件系統
Fatfs(文件系統的移植)
FATFS文件系統詳解
文件系統FatFs的移植
FATFS文件系統詳解(三)
評論