摘要:本文介紹了CF卡和單片機(jī)接口的各種模式,比較了各種模式的利弊。給出了2種常用模式下的電路原理圖,簡(jiǎn)要說(shuō)明了IDE模式下存取工作的原理,闡述了映射存儲(chǔ)模式下CF卡的存取原理。
關(guān)鍵詞:CF卡;單片機(jī);接口模式;讀寫(xiě)扇區(qū)
1 前言
隨著計(jì)算機(jī)應(yīng)用技術(shù)的飛速發(fā)展,移動(dòng)存儲(chǔ)設(shè)備得到了廣泛的應(yīng)用。其中CF(Compact Flash)卡以其價(jià)格低廉、體積小、存儲(chǔ)容量大、高速等優(yōu)點(diǎn)在眾多移動(dòng)存儲(chǔ)設(shè)備中被廣泛地應(yīng)用于數(shù)碼相機(jī)、PDA和筆記本電腦等當(dāng)前十分熱門(mén)的消費(fèi)類(lèi)電子產(chǎn)品中。并且CF卡在其他領(lǐng)域中也得到了廣泛的應(yīng)用。本文所述內(nèi)容就是通過(guò)8051單片機(jī)對(duì)CF卡進(jìn)行讀寫(xiě)。
2.CF卡的操作方式
CF卡的操作方式與計(jì)算機(jī)的硬盤(pán)操作方式類(lèi)似,其扇區(qū)的尋址也有兩種方式:物理尋址(CHS)和邏輯尋址(LBA),物理尋址使用柱面、磁頭和扇區(qū)號(hào)表示一個(gè)特定的扇區(qū),起始扇區(qū)是0道、0頭、1區(qū),接下來(lái)是2區(qū)等等,邏輯尋址將整個(gè)CF卡統(tǒng)一尋址。邏輯塊尋址和物理尋址的關(guān)系為:
LBA地址=(柱面號(hào)×磁頭數(shù)+磁頭號(hào))×扇區(qū)數(shù)+扇區(qū)數(shù)一1
在實(shí)際使用過(guò)程中,用LBA地址進(jìn)行尋址,可以大大簡(jiǎn)化編程的工作量,避免柱面、磁頭和扇區(qū)之間的換算和切換,并且可以突破CHS對(duì)大容量的無(wú)法尋址的限制。
3.CF卡的文件管理
CF卡的文件管理系統(tǒng)和硬盤(pán)的文件管理是一樣的,他將CF卡的存儲(chǔ)空間分為五個(gè)部分:主引導(dǎo)記錄扇區(qū)(MBR)、DOS引導(dǎo)區(qū)(DBR)、文件分配表(FAT)、文件目錄表(FDT)和數(shù)據(jù)。
主引導(dǎo)記錄扇區(qū)(MBR)
主引導(dǎo)記錄扇區(qū)(MBR)在0柱面、0磁頭、1扇區(qū)。主引導(dǎo)記錄記錄磁盤(pán)最重要的結(jié)構(gòu)信息。主引導(dǎo)記錄是硬磁盤(pán)作分區(qū)時(shí)建立的(Fdisk)。主引導(dǎo)記錄包括一小段執(zhí)行代碼(主引導(dǎo)代碼)、磁盤(pán)特征和硬盤(pán)分區(qū)表。主引導(dǎo)記錄結(jié)束的兩個(gè)字節(jié)必須是引導(dǎo)自舉標(biāo)記0x55AA。磁盤(pán)特征位于0x01B8, 指定磁盤(pán)操作系統(tǒng)。
DOS引導(dǎo)區(qū)(DBR)
DOS引導(dǎo)區(qū)(DBR)的起始扇區(qū)在0柱面、1磁頭、1扇區(qū),磁盤(pán)的邏輯0扇區(qū)都稱(chēng)為DOS引導(dǎo)扇區(qū),又稱(chēng)為BOOT區(qū)。它由以下5個(gè)部分組成:
跳轉(zhuǎn)指令,占用3個(gè)字節(jié)的跳轉(zhuǎn)指令將跳至引導(dǎo)代碼,其內(nèi)容隨DOS版本變化。
廠商標(biāo)識(shí)和DOS版本號(hào)。該部分總共占用8個(gè)字節(jié),其內(nèi)容隨DOS版本而不同。
BPB(BIOS Paramenter Block, BIOS參數(shù)塊)。BPB從第12字節(jié)起占用19個(gè)字節(jié)。
DOS引導(dǎo)程序。DOS引導(dǎo)程序既是占用480字節(jié)的BOOT代碼,負(fù)責(zé)完成DOS的3個(gè)系統(tǒng)文
件的裝入工作。這部分內(nèi)容隨DOS版本不同而變化。
結(jié)束標(biāo)志字,結(jié)束標(biāo)志占用2個(gè)字節(jié),其值為AA55。
BPB表中所記錄的有關(guān)參數(shù),能幫助編程者確定磁盤(pán)的容量大小、文件分配表FAT的位置和大小、文件目錄表FDT的位置和大小。因此以FAT32分區(qū)格式為例討論BPB表的結(jié)構(gòu)。
偏移量為0BH、0CH記錄每個(gè)扇區(qū)的字節(jié)數(shù),0DH記錄每簇扇區(qū)數(shù)。0EH、OFH記錄保留扇區(qū)數(shù),10H記錄FAT表的數(shù)目,15H磁盤(pán)介質(zhì)描述符,18H每個(gè)磁道的扇區(qū)數(shù),24H每個(gè)FAT表的扇區(qū)數(shù),2CH~2FH根目錄起始號(hào)。
文件分配表(FATl)
文件分配表FAT(File Allocation Tabel)是文件管理系統(tǒng)用來(lái)給每個(gè)文件分配磁盤(pán)物理空間的表格,它告訴操作系統(tǒng),文件存放在磁盤(pán)什么地方。文件分配表(FAT)有表標(biāo)識(shí)和簇映射(舊稱(chēng)表目)的集合組成。一個(gè)完全相同的鏡像副本連續(xù)存儲(chǔ)在主 FAT 表后。表標(biāo)識(shí)符包括磁盤(pán)介質(zhì)描述符( 1 字節(jié))和填充字節(jié), 總計(jì)占兩個(gè)簇的簇映射區(qū)域(這大概也就是 FAT 文件系統(tǒng)簇號(hào)由2開(kāi)始的原因), 填充字節(jié)一般為 FF,F(xiàn)AT32 的填充字節(jié)中還包含"臟位", 即系統(tǒng)啟動(dòng)時(shí)執(zhí)行磁盤(pán)檢查(FAT-ChkDsk/NTFS-AutoChk)。FAT 簇映射中, 0000 表示空簇, FFFF 表示簇鏈結(jié)束, FFF7 表示壞簇, 其余值表示其后續(xù)簇的簇號(hào)。FAT12 和 FAT32 的存儲(chǔ)策略同 FAT16 類(lèi)似, 例如 FAT12的結(jié)束簇為 FFF, FAT32 的壞簇為 0FFFFFF7 等(注意 FAT32 的高 4 位保留)。文件分配表(FAT2)是FAT1的完全備份。