sd卡讀寫開發(fā)文檔

sd卡讀寫開發(fā)文檔

ID:9282595

大小:813.50 KB

頁數(shù):9頁

時間:2018-04-26

sd卡讀寫開發(fā)文檔_第1頁
sd卡讀寫開發(fā)文檔_第2頁
sd卡讀寫開發(fā)文檔_第3頁
sd卡讀寫開發(fā)文檔_第4頁
sd卡讀寫開發(fā)文檔_第5頁
資源描述:

《sd卡讀寫開發(fā)文檔》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、SD卡讀寫關(guān)鍵是對SD的初始化、塊扇區(qū)的讀寫、以及SD卡文件結(jié)構(gòu)的掌握,初始化SD首先發(fā)送0x400x000x000x000x000x59應(yīng)答0x01進(jìn)入空閑模式在發(fā)送0x410x000x000x000x000x59應(yīng)答0x00激活SD卡使用WinHex分析SD卡可以得到第一數(shù)據(jù)區(qū)即根目錄區(qū),在第520區(qū),每扇區(qū)512字節(jié),等等,分析后得結(jié)果用于,讀數(shù)據(jù)的驗證。本SD卡為1G的金士頓卡,扇區(qū)寬度為512字節(jié),根據(jù)WinHex和讀SD卡的結(jié)論得出解讀,可以得出表一:讀本SD卡的第0塊物理扇區(qū)512字節(jié),即常

2、說的引導(dǎo)扇區(qū)。MBR(主引導(dǎo)的區(qū))的長度為446字節(jié)(0x00~0x1BD),以后每16個字節(jié)代表一個分區(qū),共四個,該卡僅一個分區(qū)所以后面三個都是空的,這16個就是分區(qū)表:地址長度內(nèi)容詳解1BE100激活則為00,否則801BF101分區(qū)起始的磁頭號1C020100起始扇區(qū)和柱面號,低6位時扇區(qū)號,?????1C2106分區(qū)類型,0B代表FAT32,06代表FAT161C3129分區(qū)結(jié)束的磁頭號1C427FE0分區(qū)結(jié)束的扇區(qū)和柱面號1C6400000020地址20由該地址讀到內(nèi)容就是邏輯地址的0扇區(qū)1CA

3、4003C7BE0分區(qū)的總扇區(qū)數(shù)。493979由上述分析得出本SD卡的邏輯地址的0扇區(qū)應(yīng)該在隱藏扇區(qū)中,塊的扇區(qū)地址為0x00000020,讀扇區(qū)得到的內(nèi)容:如下圖所示:具體分析如下圖所示:名稱偏移長度內(nèi)容詳細(xì)BS_jmpBoot03BUFF[0..2]一般為EBXX90或E9xxxxOEMName38BUFF[3..A]僅一個名字。無所謂每扇區(qū)字節(jié)數(shù)0B2BUFF[B..C]即0x0200=512即每個扇區(qū)有512個字節(jié)每簇的扇區(qū)數(shù)0D1BUFF[D]即每個簇有(64個)0x40扇區(qū),也就是每個簇有64

4、*512=32k保留扇區(qū)數(shù)0E20400從第一扇區(qū)開始被保留的扇區(qū)數(shù)為04FAT表份數(shù)10102一般都是兩個FAT表。兩者寬度一樣根目錄項數(shù)1120002一般FAT16為512即0x0200總扇區(qū)數(shù)TotSec161320000當(dāng)容量大于1M時,總扇區(qū)數(shù)就放在TotSec32處,此處放置0介質(zhì)種類151F8表示固定存儲介質(zhì),F(xiàn)0表示移動存儲介質(zhì)FATSz16162F2000X00F2表示一個分區(qū)占242個扇區(qū)共兩分區(qū)SecPerTrk1823F00表示每磁道的扇區(qū)數(shù)。這里不是硬盤,無意義磁頭數(shù)1A2無意義

5、HiddSec1C40x00000020FAT表前隱藏的扇區(qū)數(shù)32TotSec322040x003C7BE0該卡的總扇區(qū)數(shù),也即該卡的最大容量為0x003C7BE0*512=1981936MDrvNum24100一般硬盤為80軟盤為00保留25100共NT使用,此處必須為0BootSig26129擴(kuò)展引導(dǎo)標(biāo)記,表示后面的域可用VolID274內(nèi)容隨便,僅一IDVolLab2B11卷標(biāo)11個字節(jié),此處NOMAMEFilesysType368即文件類型,此處為FAT16可執(zhí)行代碼3E448…….引導(dǎo)分區(qū)字節(jié)…

6、..1分區(qū)頭1BE-無1BF-1C0-1C2-1C3-1C4-1C6-1CA-2分區(qū)1CE-結(jié)構(gòu)同上簽名1FE255AA結(jié)束標(biāo)志分析得出主目錄所在扇區(qū)地址:主引導(dǎo)區(qū)數(shù)(1個)+保留扇區(qū)數(shù)(0x04個)+隱藏數(shù)(0x20個)+2個FAT表寬度(0Xf2*2)=521,即從第521個扇區(qū)(扇區(qū)地址為520)開始的32個扇區(qū)中存放根目錄。讀本SD卡的根目錄的第一個扇區(qū)得出如圖數(shù)據(jù):本卡卷標(biāo)名為UJNX,可見第一個32字節(jié)的文件為該根目錄,但是他以文件夾的形式呈現(xiàn),并且大小Size為0,在大多數(shù)正常情況下我們可以

7、認(rèn)為無后綴名的,大小為零的文件為文件夾(我知道這個并不科學(xué),誰有好的建議?)??梢钥闯?2個扇區(qū)的根目錄最多可以存儲512個目錄文件。文件就簡單了,直接根據(jù)FAT表簇的地址讀數(shù)據(jù)就是了。讀FAT表:在FAT表中每兩個字節(jié)的數(shù)據(jù)對應(yīng)唯一的一個簇地址,每個簇有64個扇區(qū),例如在第一個(地址為0x24)FAT表的第一個扇區(qū)中的數(shù)據(jù)如下:讀文件1、根據(jù)32字節(jié)的目錄獲取文件名、類型、大小、起始簇的地址2、根據(jù)簇的地址高位和低位計算出簇的位置,并與對應(yīng)的計算出該簇的起始扇區(qū)地址簇的起始扇區(qū)地址=根目錄起始扇區(qū)+目錄

8、扇區(qū)寬度+(簇地址-2)*每個簇的扇區(qū)寬度。3、讀下一個簇的地址,根據(jù)上個簇對應(yīng)的FAT表中的兩個字節(jié),計算出下個簇所在的簇地址,然后執(zhí)行1步驟再讀出64扇區(qū)個連續(xù)的數(shù)據(jù),直到簇的地址為0xFFFF為止表示文件結(jié)束。讀文件夾1、根據(jù)目錄獲取文件名,并跟蹤簇地址,到所在第一個扇區(qū),讀該扇區(qū)下圖視可見該扇區(qū)的內(nèi)容是一張目錄表,2E標(biāo)示目錄的級別,其簇地址應(yīng)該代表上級目錄地址,根據(jù)每32字節(jié)為一文件標(biāo)示,E5標(biāo)示已刪除的文件,同樣讀

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。