讀取FAT16文件.ppt_第1頁(yè)
讀取FAT16文件.ppt_第2頁(yè)
讀取FAT16文件.ppt_第3頁(yè)
讀取FAT16文件.ppt_第4頁(yè)
讀取FAT16文件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、讀取文件,以下內(nèi)容均參考自百度文庫(kù)中的SD卡FAT16文件系統(tǒng)的學(xué)習(xí)筆記 只是我加入了很多圖片以幫助理解,希望對(duì)學(xué)習(xí)FAT16系統(tǒng)中的你有所幫助!,讀取文件的流程:1. 讀物理扇區(qū)0,得到引導(dǎo)扇區(qū)(邏輯扇區(qū)0)的 偏移地址。2. 讀引導(dǎo)扇區(qū)的內(nèi)容,得到文件系統(tǒng)基本配置信 息。3. 根據(jù)文件系統(tǒng)的基本配置信息計(jì)算FAT,F(xiàn)DT, 及數(shù)據(jù)簇的起始地址。4. 根據(jù)要讀的文件名搜索FDT(根目錄),找到要讀文件的 起始數(shù)據(jù)簇號(hào)及文件大小。5. 根據(jù)文件的起始數(shù)據(jù)簇號(hào)在FAT表中查找所有該文件占 用的數(shù)據(jù)簇號(hào),根據(jù)數(shù)據(jù)簇號(hào)查找相應(yīng)的數(shù)據(jù)簇。 6. 查找下一個(gè)數(shù)據(jù)簇號(hào)讀取相應(yīng)數(shù)據(jù)簇,直到讀出最后 一個(gè)數(shù)據(jù)

2、簇0 xFFFF。,我這里就有一張SD卡(容量為1G的),插上電腦后格式化為FAT格式,然后再往里面放一些文件! 在電腦上裝上一個(gè)叫WinHex的軟件,利用其打開磁盤的工具,就可以在物理層面上打開這張SD卡。 讀物理扇區(qū)0(也即MBR),得到引導(dǎo)扇區(qū)(邏輯扇區(qū)0)(DBR)的偏移地址。先讀取SD卡的第一個(gè)扇區(qū)(512字節(jié)),即扇區(qū)0,該扇區(qū)的數(shù)據(jù)如下圖所示:,正常的話,該扇區(qū)最后兩個(gè)字節(jié)如上圖所示為 55 AA,如果不是則證明是讀錯(cuò)了,或者該SD沒有被格式化. 該扇區(qū)有兩個(gè)重要信息:一、在0 x1ca開始的四個(gè)字節(jié)03 07 1E 00,即 0 x1E0703=1967875,代表該SD卡有1

3、967875個(gè) 扇區(qū),而每個(gè)扇區(qū)有512字節(jié),所以該SD卡容量為 1967875*512/1024/1024=960.8MByte 二、在0 x1C6開始的四個(gè)字節(jié)FD 00 00 00,即0 xFD=253,它表示引導(dǎo)扇區(qū)在扇區(qū)253. 到此,這個(gè)扇區(qū)0就可以不用管了。,讀取引導(dǎo)扇區(qū)(DBR) 以下是扇區(qū)253前64Byte的內(nèi)容。因?yàn)?253*512=0 x01FA00,所以可以知道下圖 左邊的偏移地址為:0 x0001FA00,首先第0 x3到0 xA的內(nèi)容為ASCII碼的“MSDOS5.0”,記錄了系統(tǒng)的版本,這個(gè)我們不用管。 以下才是我們需要了解的叫做BPB內(nèi)容:第0 xb開始的兩個(gè)

4、字節(jié)00 02,即0 x2000=512,代表每個(gè)扇區(qū)(sector)有512個(gè)字節(jié)(byte)接下來(lái)的20代表每個(gè)簇(cluster)有32個(gè)扇區(qū)接下來(lái)的06 00 即0 x6代表有6-1個(gè)保留扇區(qū),可以計(jì)算第一個(gè)FAT表所在扇區(qū)為253+6=259接下來(lái)的02 代表有兩個(gè)FAT表接下來(lái)的00 02,即0 x2000=512,代表FDT(目錄區(qū))有512登記項(xiàng)第0 x16開始的兩個(gè)字節(jié)f1 00,即0 xf1=241,代表每個(gè)FAT表占241個(gè)扇區(qū)第0 x36到0 x3d代表的就是“FAT16 ”的ASCII碼,說(shuō)明這張SD卡是FAT16的格式 根據(jù)上述DBR內(nèi)容可得到以下信息:當(dāng)前DBR所

5、在扇區(qū): 253每扇區(qū)字節(jié)數(shù):512每簇扇區(qū)數(shù):32第一個(gè)FAT表所在扇區(qū):DBR所在扇區(qū)+保留扇區(qū)數(shù)=253+6=259FAT表占用扇區(qū)數(shù): 241根目錄首扇區(qū):第一個(gè)FAT表扇區(qū)+FAT扇區(qū)數(shù)*FAT表數(shù)=259+241*2=741;根目錄項(xiàng)數(shù):512根目錄占用扇區(qū)數(shù):(根目錄項(xiàng)數(shù)*32)/512=32第一個(gè)數(shù)據(jù)扇區(qū):根目錄扇區(qū)+根目錄所占扇區(qū)數(shù)=741+32=773,我的sd卡里有一個(gè)叫做“123.txt”的文檔 用記事本打開內(nèi)容是:,現(xiàn)在我們就要找到它,并且看看它在sd卡的實(shí)際內(nèi)容。,首先:跳到根目錄扇區(qū)741(741*512=0 x5CA00),看看它的內(nèi)容:,我們?cè)谏厦婷?2個(gè)字節(jié)

6、逐次找(直到找到“123.txt”文件名), 一個(gè)項(xiàng)要占用32個(gè)字節(jié)。,前面8個(gè)字節(jié)是文件名“123 ”后面3個(gè)字節(jié)TXT是后綴名(熟悉吧!)但我們真正用到的是這32個(gè)字節(jié)最后的6個(gè)字節(jié)(2E 01 4E 55 03 00)其中“4E 55 03 00”表示文件的大小,占用0 x03554E=218446個(gè)字節(jié) (也就是218446/1024=213K)占用了(218446/512/32)14個(gè)數(shù)據(jù)簇“2E 01”表示文件的首簇號(hào)在“0 x012E=302”處該文件首個(gè)數(shù)據(jù)簇的扇區(qū)位置是: 第一個(gè)數(shù)據(jù)扇區(qū)+(當(dāng)前簇號(hào)-2)*每簇扇區(qū)數(shù)(也就是32)773+(302-2)*32=10373,來(lái)到

7、10373號(hào)扇區(qū)(實(shí)際地址10373*512=0 x510A00),看看它的內(nèi)容:,看右邊的文件解釋,是不是跟記事本打開的文檔一致!下面我們?cè)俨檎蚁乱粩?shù)據(jù)簇的內(nèi)容, 首先要查找下一個(gè)數(shù)據(jù)簇號(hào)所在的扇區(qū):是這樣計(jì)算的: FAT首地址+302/256=(259+0 x01)=260, 我們來(lái)到260號(hào)扇區(qū),然后計(jì)算簇號(hào)所在的偏移地址(302mod256)*2=0 x2E*2=0 x5C所在簇號(hào)就在該扇區(qū)偏移地址0 x5C處:就是實(shí)際地址(260*512+0 x5C=0 x2085C),由上圖可知,0 x2085C,0 x2085D(數(shù)據(jù)簇占用兩個(gè)字節(jié))的內(nèi)容是: 2F 01,即0 x012F就是下一簇簇號(hào)。 同理計(jì)算出再下一簇簇號(hào)扇區(qū)是:259+1,偏移地址是0 x2F*2=0 x5E,即 實(shí)際地址0 x2085E,該處為0 x0130 同理可以計(jì)算出余下的簇號(hào)為: 0 x0131,0 x0132,0 x0133,0 x0134,0 x0135,0 x0136,0 x0137, 0 x0138,0 x0139,0 x013A,0

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論