這一節(jié)我將剖析一張32MB的TF卡,其內(nèi)部文件系統(tǒng)FAT數(shù)據(jù)的構(gòu)建,希望能讓大家對FAT有更深入的了解。
首先是將SD卡徹底格式化,而為何不用快速格式化。這個問題后面在說明。
此時可以看到一張SD卡盤符,及其屬性如圖1
圖1
從圖1我們可以得到這樣一些信息 ,此盤容量為28.9MB,已用空間為0,可用空間28.9MB。
下面我們用WinHex打開此盤,分析具體的數(shù)據(jù)。如圖2所示
圖2
從圖2我們可以得到這些信息:
1. 此SD卡 容量為29.2MB, 即 30605312 B
使用量為0B
空閑為28.9MB
共59272簇,簇大小為 一個扇區(qū),即512B
共59272個扇區(qū),扇區(qū)大小為512B
2. 此SD卡被分成了6個部分:
Boot sector DBR區(qū)(DOS BOOT RECORD)即操作系統(tǒng)引導(dǎo)記錄區(qū)
扇區(qū)開始于 第 0 扇區(qū) 結(jié)束于 0 + (4KB *1024) /512 –1 =7 大小4KB 即 8個扇區(qū)
FAT1 扇區(qū)開始于 第 8 扇區(qū) 結(jié)束于 8 + (116KB *1024) /512 –1 =239 大小116KB 即 232個扇區(qū)
FAT2 扇區(qū)開始于 第 240 扇區(qū) 結(jié)束于 240 + (116KB *1024) /512 –1 =471 大小116KB 即 232個扇區(qū)
ROOT directory 根目錄區(qū)
扇區(qū)開始于 第 472 扇區(qū) 結(jié)束于 472 + (16KB *1024) /512 –1 =503 大小16KB 即 32個扇區(qū)
Free space
扇區(qū)開始于 第 504 扇區(qū) 結(jié)束于 504 + (30347264) /512 –1 =59775 大小28.9MB 即 59272個扇區(qū)
idle space 無
扇區(qū)總數(shù)為 59776, 即 59776×512 =30605312B =29.1875 MB 符合此盤的容量
下面雙擊Boot sector 區(qū),可以看到圖3
圖 3
從圖 3 可以看出此DBR區(qū)共有 4KB, 數(shù)據(jù)具體代表的含義請參照上一節(jié)的相關(guān)圖片與表(如表2)分析。這里就不重復(fù)了,直接列出從DBR中獲取的信息。
1. 本U盤的扇區(qū)大小為512字節(jié)
2. 每簇扇區(qū)數(shù)為1,也就是說U盤共有 59776簇。
3. 保留扇區(qū)數(shù)為8個,也就是說U盤在FAT開始之前僅有一個引導(dǎo)扇區(qū)。
4. 有2個FAT表, 每個占用(0xE8)232個扇區(qū)。
5. 本U盤共有 59776個扇區(qū),總?cè)萘繛?29.1875 MB 。
6. 每道扇區(qū)63個,磁頭255個,無隱藏扇區(qū)。
下面打開FAT1區(qū)的數(shù)據(jù),如圖4
圖 4
FAT表實(shí)際上是一個數(shù)據(jù)表,以2個字節(jié)為單位,我們暫將這個單位稱為FAT記錄項,從圖4中,可以知道,前兩個記錄項(即前四個字節(jié))是0xFFFFFFF8,它是FAT表的標(biāo)志,通常情況,第1、2個記錄項用作介質(zhì)描述。從第三個記錄項開始記錄除根目錄外的其他文件及文件夾的簇鏈情況.
主要此處FAT1的地址為偏移地址,也就是相對于FAT1表的起始地址的偏移,而不是實(shí)際的地址。圖5才是它在SD卡中的實(shí)際地址
圖5
地址范圍 0x0000 1000 ----0x0001 DFFF 大小為 0x1D000 =116KB
同樣,F(xiàn)AT2只是作為FAT1的一個備份,所以其內(nèi)容與FAT1完全一樣,唯一不同的是他們的分配地址不同,F(xiàn)AT2的地址見圖6
圖 6
地址范圍 0x0001 E000 ----0x0003 AFFF 大小為 0x1D000 =116KB
下面打開根目錄區(qū),如圖 7
圖 7
地址范圍 0x0003 B000 ----0x0003 EFFF 大小為 0x4000 =16KB
此根目錄下沒有任何文件,除了橙色圈出的盤符名稱占據(jù)了32自己外,其余數(shù)據(jù)都為0.
接下來是數(shù)據(jù)區(qū),如圖8
圖 8
地址范圍 0x0003 F000 ----0x01D2 FFFF 大小為 0x1CF0FFF =29635KB =28.94MB
此數(shù)據(jù)區(qū)沒有任何文件數(shù)據(jù)。
接下來,我們往SD卡存入一個ReadMe.txt文件,看看幾個區(qū)中的數(shù)據(jù)都有什么變化。
存入文件后,從電腦 上看到的信息如 圖9
圖 9
接下來,再次用WinHex 打開此SD卡,看到的信息如圖 10
圖 10
與空盤(圖2)對照著看,紅色部分為改變的數(shù)據(jù),此時SD卡使用了0.5KB,且多了一個ReadMe.txt 的 文 件。
DBR區(qū)的數(shù)據(jù)沒有任何變化。接下來開FAT1的數(shù)據(jù)變化,如圖 11
圖 11
僅多了一個 FF FF 數(shù)據(jù),表示文件僅占用了一個扇區(qū)。
而 FAT2區(qū)的數(shù)據(jù)跟FAT1完全一樣,如圖12
圖 12
下面是根目錄區(qū),如圖13
圖13
新增信息的內(nèi)容含義,請具體看上一節(jié)的相關(guān)信息。這里就不再重復(fù)了。
數(shù)據(jù)區(qū)已經(jīng)在其偏移的第一扇區(qū),增加了文件的內(nèi)容信息,如圖14
圖14
到此,加入一個文件后,SD開內(nèi)各扇區(qū)所發(fā)生的變化,就已講述完畢,請對照著前后圖片分析。
對于快速格式,與徹底格式化的區(qū)別, 我也實(shí)際用此SD卡試過。個人理解為,快速格式化僅是將DBR區(qū),F(xiàn)AT1區(qū), FAT2區(qū),根目錄格式化,而數(shù)據(jù)區(qū)的所有扇區(qū)數(shù)據(jù)依然保留在原有的地方,每次寫入新數(shù)據(jù)時,SD卡再根據(jù)需要擦除相應(yīng)的扇區(qū)。但徹底格式化SD卡是,除了前面介紹的扇區(qū)需要格式化為,連所以的數(shù)據(jù)扇區(qū)都將格式化,所以比較耗時。
到此,關(guān)于我個人理解的FAT的構(gòu)架信息,就已經(jīng)講完了,都比較淺顯,主要是針對初學(xué)者,有一個比較直觀的認(rèn)識,如果對大家有所啟發(fā),還望不吝賜教,共同進(jìn)步!
聯(lián)系客服