久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: FAT32文件系統(tǒng)的一點知識 [打印本頁]

作者: hongniu    時間: 2015-6-23 18:41
標題: FAT32文件系統(tǒng)的一點知識
FAT32文件系統(tǒng)尋找文件存儲扇區(qū)
自從我做完12864圖像顯示后就在想做個視頻玩玩,結果視頻生成的幀需要大量的儲存空間,僅憑那可憐的8KB啥也做不了,于是就開始找一種大容量的存儲器!可是用什么呢?EEPROM是肯定不行的,外部擴展也不行,還是信息的力量讓我知道了-------SD卡;
其實SD卡我不陌生,以前在日照買的MP4用的是1GB SD卡,想到那東西如果可以用的話,那將會對我有質的飛躍,于是我找了一些資料,通過看這些資料我開始知道奧原來SD卡內部是有文件系統(tǒng)的!怪不得電腦能讀取他呢!并且這種文件系統(tǒng)在我們的電腦上,手機上,到處是,平時我們只是知道:把一首歌考到MP3播放器里的文件夾里,就可以聽了;熟不知這就是文件系統(tǒng)的功勞啊!在文件系統(tǒng)里我看到了FAT32的存在,于是我決定看看到底什么是FAT32文件系統(tǒng)。
開始在看振南寫的關于FAT32的資料,不行啊,不懂,后來又在網上找了些資料綜合后找出了尋找FAT32文件的路徑。
打個比方:現(xiàn)在我在可移動磁盤(H)里建一個文件文件名為EEE.txt,里面寫ABCDE五個字符,

然后保存;我要在存儲卡里找到這五個字符怎么實現(xiàn)呢?
下面是我找到他的過程:
首先進入DBR中找到BPB
這就是SD卡的0扇區(qū),我們要的是BPB,那BPB在哪里?呵呵在從地址字節(jié)0----地址字節(jié)5960字節(jié)數(shù)據(jù);
當然在這60字節(jié)里也有大部分是不必要的,真正有用的是一小部分,那這部分是什么呢?
第一:11——12地址字節(jié)的數(shù)據(jù)代表每扇區(qū)字節(jié)數(shù)(上表中為0002)這里數(shù)據(jù)時小端(數(shù)據(jù)地位在地址高位)表示所以要轉換成大端(數(shù)據(jù)地位在地址地位)為0x0200;再轉換成十進制為512,原來是這樣,也就是這兩個字節(jié)告訴我們每扇區(qū)512個字節(jié);僅此而已!
第二:13地址字節(jié)數(shù)據(jù)代表每簇扇區(qū)數(shù)(上表位08)表示一個簇有8個扇區(qū),也就是8*512=4096=4KB
第三:14——15地址字節(jié)代表保留扇區(qū)數(shù),也就是FAT表是從這里開始的。(上表中為0C11轉成0x110C轉成十進制4364扇區(qū))
到這里引出第一個關鍵項
FAT1地址字節(jié)的開始=4364*512=2234368(記好了)
第四:16地址字節(jié)代表FAT表的個數(shù)(上表位02)表示有2FAT
第五:36——37地址字節(jié)代表FAT表占的扇區(qū)數(shù)(上表為7A07轉換0X077A轉換成十進制1914扇區(qū))為了方便起見我們把它轉換成字節(jié)形式:1914*512=979968,與其說FAT表占了1914個扇區(qū)不如說FAT表占了979968個字節(jié)
第六:有了FAT1的初始字節(jié),FAT表的長度,那么根據(jù)FAT32文件系統(tǒng)的結構可知,FAT1表下面是FAT2
FAT2地址字節(jié)=FAT1地址字節(jié)+FAT長度=2234368+979968=3214336地址字節(jié)
同理FAT2表下面是根目錄則:
根目錄地址字節(jié)= FAT2地址字節(jié)+ FAT長度=3214336+979968=4194304地址字節(jié)
至此BPB的有效數(shù)據(jù)已經讀完了總結如下:
通過上面的對BPB的分析我們知道了原來一個扇區(qū)有512個字節(jié),一個簇有4KB8個扇區(qū)),
關鍵是我們知道了FAT表和根目錄的位置如下:
FAT1開始地址字節(jié):2234368
FAT2開始地址字節(jié):3214336
根目錄開始地址字節(jié):4194304
下面看看我們找的對不對?
FAT1:
FAT2:
根目錄:
這樣我們找到了根目錄,FAT表后有什么用那?還是沒找到文件存哪里啊?接下來該是找得到文件的存儲位置的時候了:
第一:我們現(xiàn)在根目錄里找到EEE.TXT如圖:
這就是了:在對根目錄進行解釋
第一行45 45 45 20 20 20 20 20:表示EEEEASCII碼是4520表示空格,即不滿八位空格補,54 58 54表示TXT即文件類型,
第二行5-6個字符01 00表示此文件開始簇的高位地址
第二行10-11個字符BC 2F表示此文件開始簇低位地址
把這兩個字節(jié)結合為一個四位:0x00012FBC這就是此文件的開始簇,轉換成十進制為77756
然后你知道了開始簇你還要到FAT表里找到他,看看他占了幾簇!怎么在FAT表里找到他呢?
FAT表里一簇用4個字節(jié)表示,數(shù)據(jù)是從FAT表中第二個簇開始的(也就是第9個字節(jié)向后,前8個字節(jié)為FAT標志)
所以前兩個簇是無用的,要用(777562=77754簇,前面說了一個簇用4字節(jié)表示那么我們要找到77754簇的字節(jié)地址就要把它分解成字節(jié)所以有77754*4字節(jié)=311014字節(jié)(也就是在FAT表中第311014字節(jié)是此文件的FAT對應簇),好了這就找到了?沒有還差一步
你要知道FAT1的首地址,好了我知道然后加上311014才是;
所以=FAT1首地址字節(jié)+此文件在FAT表中占得字節(jié)數(shù)=2234368+311014=2545392(此文件的FAT表中的簇)如果這個文件大于一簇那么必定會有下一簇,如果這個文件不到一簇那么這個我們找到的FAT表中應為FF FF FF 0F(結束標志)好了前面我們寫入的是ABCDE怎么會大于4KB那?顯然我們找到的這個簇一定是FF FF FF 0F
看看是不是:
果然是FF FF FF 0F;
這其實是為超過一簇的文件制作的鏈表,這個不滿一簇所以就結束了,如果滿一簇則會在下一個FAT表中給出超出一簇的存處地址,一次類推,這也是FAT表的關鍵用途;
我們這個繼續(xù),既然FAT表中顯示我們存儲的數(shù)據(jù)不滿一簇我們直接找就行了,根據(jù)FAT32結構,可知根目錄下是數(shù)據(jù)區(qū),所以要這樣計算存數(shù)扇區(qū)的首地址字節(jié)=根目錄+(此文件的簇大小—2FAT表中的前兩個簇是FAT標志,真正的數(shù)據(jù)從第二簇開始所以要減去】)*一簇的字節(jié)數(shù)=4194304+77756-2*4096=322674688
看看我們寫的ABCDE是不是存在這個地址字節(jié)下了?
看看吧第一行:41 41 43 44 45 正好是ABCDEASCII
現(xiàn)在我敢說:我在可移動磁盤(H)盤下建立的EEE.TXT文件中的ABCDE被保存在H盤的第322674688/512=630224扇區(qū)看看圖:
第二行邏輯扇區(qū)數(shù):630224
至此找到了,真他媽的麻煩啊






作者: hongniu    時間: 2015-6-23 18:41
   最近在做SD卡讀寫,調了快一星期了總是調不通,昨天晚上做的時候,突然讀到兩個字節(jié),55 AA,正好是最后兩個,那時部分扇區(qū)的結束的標志,證明我可能讀到了扇區(qū),可是又讀0及其他字節(jié),令我失望,沒有EB,全是00H,而我讀的是0扇區(qū),WINHEX顯示是EB開頭的,要是不對,那55AA哪來的?而且位置正確,要是對那怎么找不到EB呢?橫頭疼,所有的都按照時序來的,為什么達不到預期的結國?這么糾結還是今年的頭一次!加油吧,畢竟這對我來說意義非常!@

作者: wode1992@    時間: 2021-5-29 10:35
講解得很詳細,辛苦了




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 不卡在线视频 | 久久99精品久久久久久琪琪 | 欧美成人精品激情在线观看 | 欲色av | 天天干天天爽 | 人妖一区 | 超碰在线免费公开 | 九九在线精品视频 | 中文字幕国产 | 国产精品综合 | 日韩精品久久久久 | 亚洲精品免费在线 | 日本三级电影在线看 | 欧美中文一区 | 国产午夜精品一区二区三区嫩草 | 视频一区在线 | 9久9久9久女女女九九九一九 | 蜜桃精品视频在线 | 久久久不卡网国产精品一区 | 久久久久久久久久一区 | 91啪亚洲精品 | 国产成人精品久久二区二区 | 欧美a在线| 九九综合| 久久逼逼| 日本不卡一区二区三区 | 久久亚洲综合 | 日韩一区在线播放 | 怡红院免费的全部视频 | 成人亚洲性情网站www在线观看 | 色888www视频在线观看 | 国产在线资源 | 精品一区二区不卡 | 亚洲精品乱码 | 97在线观看| 久久一区二区视频 | 亚洲不卡在线视频 | 91久久精品一区二区二区 | 国产精品99久久久精品免费观看 | 欧美日韩在线一区二区三区 | 美女黄18岁以下禁止观看 |