摘 要: 介紹了CF卡的物理結(jié)構(gòu)和工作原理" title="工作原理">工作原理,,給出了CF卡之間復(fù)制的原理圖和復(fù)制流程,,并實現(xiàn)了CF卡扇區(qū)之間的復(fù)制工作,。
關(guān)鍵詞: CF卡 單片機(jī) 扇區(qū) 復(fù)制
隨著閃存技術(shù)的不斷發(fā)展,閃存卡(Flash Memory)以它卓越的容量體積比,、便攜性和易操作性等優(yōu)勢,,已經(jīng)取代軟盤、光盤而成為移動存儲領(lǐng)域中應(yīng)用最為廣泛的存儲設(shè)備,。閃存卡是一種非揮發(fā)性存儲介質(zhì),,它具有功耗低、密度高,、體積小,、掉電后數(shù)據(jù)不丟失、可擦除,、可靠性高,、單位存儲容量價格便宜等特點(diǎn)。另外,,閃存卡因為沒有像硬盤一樣的機(jī)械結(jié)構(gòu),,顯著降低了發(fā)生故障和被損壞的可能性,因此還經(jīng)常被現(xiàn)在的一些室外工控機(jī)" title="工控機(jī)">工控機(jī)用作主系統(tǒng)設(shè)備,。閃存卡有很多種類型,主要有CF卡,、SD卡,、MMC卡、記憶棒,、SM卡,、XD卡等,其中,,CF卡應(yīng)用最為常見[2~5],。
由于CF卡的非機(jī)械結(jié)構(gòu)及其體積小、穩(wěn)定性高的特點(diǎn),,使它在具有一些特殊用途的工控機(jī)(如安裝在戶外或者移動車上的工控機(jī))中比普通硬盤具有更好的應(yīng)用前景,,以至于越來越多的工控機(jī)用CF卡代替硬盤裝載系統(tǒng)和存儲數(shù)據(jù),。但當(dāng)CF卡損壞后,重裝系統(tǒng)比較麻煩,,而且有些系統(tǒng)驅(qū)動程序可能拿不到,,所以設(shè)計一種CF卡之間的復(fù)制系統(tǒng),實現(xiàn)了兩塊相同的CF卡之間的備份,,從而避免了重新安裝系統(tǒng)和驅(qū)動程序,,節(jié)約了用戶的時間。此外,,現(xiàn)今的CF卡讀卡器只能對Windows系統(tǒng)文件進(jìn)行復(fù)制操作,,無法有效地復(fù)制操作系統(tǒng)和驅(qū)動文件。而這里設(shè)計的這套CF卡復(fù)制系統(tǒng)也可實現(xiàn)CF卡之間的文件系統(tǒng)和數(shù)據(jù)的復(fù)制,。
1 CF卡物理結(jié)構(gòu)
CF卡的全稱為“Compact Flash”卡,。Compact Flash技術(shù)是Compact Flash協(xié)會提出的一種與PC機(jī)ATA接口標(biāo)準(zhǔn)兼容的技術(shù)。CF卡采用間距50mil的50針腳雙列封裝,,其電氣特性符合ATA規(guī)范[3],。CF卡內(nèi)部集成了單片機(jī)控制器和閃存單元??刂破鲉卧糜谠谕獠恐鳈C(jī)與內(nèi)部閃存單元之間進(jìn)行數(shù)據(jù)交換" title="數(shù)據(jù)交換">數(shù)據(jù)交換和傳遞,。內(nèi)部閃存單元的數(shù)量可根據(jù)CF卡的容量大小進(jìn)行相應(yīng)地增減。目前CF卡最大存儲容量可達(dá)到2~3GB,。CF卡的結(jié)構(gòu)如圖1所示,。
2 CF卡基本工作原理
CF卡可以工作在三種模式下:(1)PC卡ATA I/O模式;(2)PC卡ATA存儲模式,;(3)實IDE模式,。其中,實IDE模式和硬盤的驅(qū)動器完全匹配,。
CF卡有兩種尋址模式:CHS(柱面/磁頭/扇區(qū))尋址模式和LBA(邏輯塊地址)尋址方式,。CHS尋址模式是通過柱面、磁頭和扇區(qū)尋址的,,最小的尋址單位是一個扇區(qū),。在CHS尋址模式下,主機(jī)通過輸入柱面,、磁頭和扇區(qū)號碼尋址某一個扇區(qū),;而在LBA尋址方式下,CF卡按照連續(xù)序列的邏輯扇區(qū)編號進(jìn)行尋址,,主機(jī)不必知道CF卡的物理幾何結(jié)構(gòu),,而且能訪問的扇區(qū)從0柱面、0磁頭,、1扇區(qū)開始,,但無法訪問系統(tǒng)的隱藏扇區(qū)[5],。
CF卡有50個引腳,主要用到的引腳有:A10~A0,,十一根地址線,,在PC卡ATA存儲模式下,僅用到A2~A0三根地址線,,用于尋址CF卡內(nèi)部控制器中的寄存器空間,;D15~D0,CF卡的十六根數(shù)據(jù)線,,具體傳輸數(shù)據(jù)時可選擇16位或8位傳輸,;-CE1、-CE2引腳,,用于指示是CF卡的字節(jié)操作還是字操作,;-REG是寄存器選擇信號,這個信號在內(nèi)存周期中使用,,用來區(qū)分是普通內(nèi)存還是屬性寄存器,;-OE是讀信號;-WE是寫信號,。
單片機(jī)和內(nèi)部閃存空間進(jìn)行數(shù)據(jù)交換是通過CF卡的八個屬性寄存器實現(xiàn)的,。在PC卡ATA存儲模式下,CF卡屬性寄存器組的具體功能和地址分配見表1[1,4],。
CF-ATA的基本命令有30余條,,主要有數(shù)據(jù)的傳輸命令,包括扇區(qū),、緩沖區(qū)的讀寫命令等,。下面以讀命令為例說明CF卡工作過程及其信號時序。
在CF卡上電初始化后,,主機(jī)判斷CF卡是否空閑,,具體的就是查詢CF卡狀態(tài)寄存器" title="狀態(tài)寄存器">狀態(tài)寄存器的RDY位,如果為0,,表示CF卡空閑,,可以準(zhǔn)備接收命令。然后,,主機(jī)向CF卡填寫地址寄存器塊的信息,包括扇區(qū)數(shù)寄存器,、扇區(qū)號寄存器,、柱面號寄存器(低和高字節(jié))、磁頭寄存器等,,選擇訪問的扇區(qū)地址,。接著,,主機(jī)向CF卡命令寄存器中寫入讀(20h)命令。CF卡收到讀命令后,,驅(qū)動器設(shè)置狀態(tài)寄存器的BSY位,,CF卡把一個扇區(qū)的數(shù)據(jù)調(diào)入到扇區(qū)緩沖區(qū)中;然后驅(qū)動器設(shè)置狀態(tài)寄存器的DRQ位,,清除BSY位,。這樣,主機(jī)就可以從扇區(qū)緩沖區(qū)中循環(huán)讀出一個扇區(qū)的數(shù)據(jù),。扇區(qū)緩沖區(qū)的數(shù)據(jù)讀出后,,驅(qū)動器設(shè)置BSY位,同時清除DRQ信號,。然后再以此方式讀出下一個扇區(qū)的數(shù)據(jù)[5],。
3 CF卡復(fù)制系統(tǒng)的設(shè)計
CF卡復(fù)制系統(tǒng)的硬件設(shè)計采用89S52作為CPU,一片74HC373作為地址鎖存器,,一片74HC138作為譯碼器,。系統(tǒng)中擴(kuò)展一塊RAM作為存放CF卡數(shù)據(jù)的中轉(zhuǎn)站,用于兩塊CF卡之間進(jìn)行數(shù)據(jù)交換和復(fù)制,。單片機(jī)和CF卡以及其它器件的連接如圖2所示,。P0.0~P0.7作為數(shù)據(jù)線,與擴(kuò)展的RAM以及CF卡進(jìn)行數(shù)據(jù)交換和傳輸,。由于單片機(jī)僅有八根數(shù)據(jù)線,,因此CF卡采用字節(jié)讀寫方式,以方便與單片機(jī)進(jìn)行數(shù)據(jù)交換,。擴(kuò)展的RAM的低八位地址線由單片機(jī)的數(shù)據(jù)線P0.0~P0.7經(jīng)過鎖存器輸入后控制,,而最高兩位地址線則由P2.0~P2.1控制。單片機(jī)的P2.2~P2.4用于連接CF卡的地址線A0~A2,,用于尋址CF卡屬性寄存器,。單片機(jī)的讀寫信號使能端和CF卡的讀寫使能端相連。74HC138譯碼器用于控制兩塊CF卡和RAM的選通信號,。
在這里,,讓CF卡工作在PC卡ATA存儲模式下,并且使用LBA(邏輯塊地址)尋址方式進(jìn)行數(shù)據(jù)讀寫,。讀寫數(shù)據(jù)的軟件流程圖如圖3所示,。先給系統(tǒng)上電,判斷CF卡是否準(zhǔn)備好,。然后往CF卡的屬性寄存器中填入讀寫扇區(qū)的起始地址和讀寫的扇區(qū)數(shù),,再往命令寄存器中填寫讀命令。填寫完屬性寄存器后,單片機(jī)通過不斷查詢CF卡狀態(tài)寄存器的DRQ位,,來判斷數(shù)據(jù)是否準(zhǔn)備好,,一旦準(zhǔn)備好就從CF卡的扇區(qū)緩沖區(qū)中循環(huán)讀出512字節(jié)的數(shù)據(jù)到外部RAM中存放起來。然后類似地把RAM中的一個扇區(qū)的數(shù)據(jù)寫入到另外一塊CF卡的相應(yīng)扇區(qū)中去,。
該復(fù)制設(shè)備系統(tǒng)中兩塊CF卡的容量不等,,該系統(tǒng)是把32MB的CF卡內(nèi)容復(fù)制到256MB的CF卡中去。該系統(tǒng)版圖中還包括了和計算機(jī)相連的串口" title="串口">串口調(diào)試系統(tǒng),,使得可以通過計算機(jī)串口實時監(jiān)測CF卡復(fù)制進(jìn)程和成功與否,。
該CF卡復(fù)制系統(tǒng)可以對兩塊同樣容量的CF卡進(jìn)行完全或者部分復(fù)制,并且還可以將小容量的CF卡的數(shù)據(jù)復(fù)制到大容量的CF卡中去,。對于不同廠家生產(chǎn)的CF卡,,該系統(tǒng)在復(fù)制時也無任何問題。通過該系統(tǒng)把裝有Windows NT嵌入式系統(tǒng)的CF卡復(fù)制到另外一塊CF卡后,,復(fù)制的新卡也能夠成功啟動工控機(jī),,并且原有安裝的程序和驅(qū)動程序以及所有的數(shù)據(jù)都完全被成功復(fù)制。
參考文獻(xiàn)
1 Compact Flash Association.CF+ and CompactFlash Specification Revision 3.0. http://www.compactflash.org/cfspc3_0.pdf
2 張亦楠, 岳春生, 姜 龍. ARM7系統(tǒng)中實現(xiàn)CF卡存儲的文件系統(tǒng)設(shè)計.單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2003(5):43~44
3 林海虹, 劉 慧.CF卡與雙核DSP的實現(xiàn).電子技術(shù)應(yīng)用, 2002;28(12):23~25
4 王海軍,,卜祥元,,安建平. 便攜式、低功耗體電信號采集存儲系統(tǒng)研究.單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2003(8):60~63
5 程擁強(qiáng),,郭鳳龍,,朱 勁. 單片機(jī)對CF存儲卡文件讀寫的實現(xiàn). 計算機(jī)應(yīng)用,2003;23(9):146~148