找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3178|回復(fù): 0
收起左側(cè)

FAT文件系統(tǒng)解析

[復(fù)制鏈接]
ID:72519 發(fā)表于 2015-1-23 03:54 | 顯示全部樓層 |閱讀模式
啟動(dòng)扇區(qū):
1 offset 00: EB 58 90  JMP指令,字節(jié)數(shù) 3。灰線。
2、 offset 03: 4D  53  44  $2  53  35  2E  30   MSDOS5.0 廠商版本號(hào)。 字節(jié)數(shù) 8  灰色方框。
以下部分是BIOS block.
3、 offset 0B: 00  02 每扇區(qū)字節(jié)數(shù):512個(gè)  字節(jié)數(shù) 2.  紅色線。
4、 offset 0D: 08  每族占用的扇區(qū)數(shù)8個(gè)。字節(jié)數(shù) 1.  綠色方框。
5、offset 0E: 26 00 保留扇區(qū)中的保留扇區(qū)數(shù) 38個(gè)。字節(jié)數(shù) 2. 藍(lán)色線。則FAT1的開(kāi)始地址:38*512=19456=$200.
6 offset 10: FAT表的個(gè)數(shù)。一般都為2。 一個(gè)作備份用。字節(jié)數(shù)1. 紅色方框線。
7、 offset 11-20 為一些我們不需要操作的信息。所以沒(méi)有寫(xiě)出來(lái)。



以下是FAT32   參數(shù)塊。
8、 offset 24  E5 0E  FAT表占用的扇區(qū)數(shù):3813個(gè)。 FAT表占用的字節(jié)數(shù)就是 3813*512=1952256byte=1DCA00。一共兩個(gè)FAT共占用 1952256*2=3904512個(gè)。



根據(jù)啟動(dòng)區(qū)、FAT1、FAT2、根目錄、數(shù)據(jù)區(qū)的次序,可以依次計(jì)算出它們的首地址:
啟動(dòng)區(qū):00
FAT1:   38*512=19456=$200.
FAT2:   19456+3813(FAT 表占用的扇區(qū)數(shù))*512=1971712=1E1600
根目錄區(qū): 1971712+ 3813(FAT 表占用的扇區(qū)數(shù))*512=3923968=3BE000.
數(shù)據(jù)區(qū):


下面分析根目錄區(qū):
$2$2$2$2$2$2$2  


這里使用的是FAT32短文件目錄項(xiàng),每32個(gè)字節(jié)表示一個(gè)文件(文件夾也是),32個(gè)字節(jié)的表示定義分別如下
1、0ffset: 00,紅色部分 表示卷標(biāo)即SD卡名稱(chēng),是你在格式化時(shí)取的一個(gè)名子。8個(gè)字節(jié)。
2offset: 20 字節(jié)數(shù):8個(gè)。 表示文件名稱(chēng)。全部是以大寫(xiě)方式表示。文件名:csh302ab.
3、offset:28  字節(jié)數(shù):3個(gè)。 文件擴(kuò)展名。 ASSII碼表示。
4、offset 2B  字節(jié)數(shù):1個(gè)。 文件屬性。綠色框。
5、offset $2  reserved.
6、offset 2D,2E,$2 文件建立時(shí)間。訪問(wèn)日期。




7、offset 34,35, $2,3B 該文件的開(kāi)始簇號(hào) 高位字節(jié),低位字節(jié)。00 00 00 03,根據(jù)這個(gè)就可以找到文件下一個(gè)簇號(hào)在FAT1中的位置了。$200+3*4=$2$2.下一個(gè)簇開(kāi)始地址。
8、黑色線。文件長(zhǎng)度。$2=148316字節(jié)。因?yàn)槲募前凑照貋?lái)存放的,不夠一個(gè)簇的大小,也要給一個(gè)簇的空間。
下面分析文件的存放空間:
BOSI 參數(shù)塊中可以知道其每簇占用8個(gè)扇區(qū)。每個(gè)扇區(qū)512字節(jié),那么一個(gè)簇的空間是8*512=4096個(gè)字節(jié),文件長(zhǎng)度為148316個(gè)字節(jié),則占用了148316 / 4096=36.2=37個(gè)簇。




上面已經(jīng)從根目錄區(qū)得到文件第一個(gè)開(kāi)始簇為03 則開(kāi)始簇開(kāi)始地址為:3BE000(根目錄區(qū)首地址)+03-02*8*512=3BF000.文件存放位置的起始地址:
則文件存放第一個(gè)簇開(kāi)始地址為:3BF000.
文件存放第二個(gè)簇開(kāi)始地址為:3BE000+(4-2) *4096=$20000.
文件存放第三個(gè)簇開(kāi)始地址為:3BE000+(5-2) *4096=$21000.
  .
.
文件存放第37個(gè)簇開(kāi)始地址為:3BE000+(39-2) *4096=3E3000.  內(nèi)容為0x$2 FF FF FF,文件放置結(jié)束,沒(méi)有了。

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表