摘 要: 介紹了CF卡的物理結(jié)構(gòu)和工作原理" title="工作原理">工作原理,給出了CF卡之間復(fù)制的原理圖和復(fù)制流程,并實(shí)現(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)。另外,閃存卡因?yà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è)計(jì)一種CF卡之間的復(fù)制系統(tǒng),實(shí)現(xiàn)了兩塊相同的CF卡之間的備份,從而避免了重新安裝系統(tǒng)和驅(qū)動程序,節(jié)約了用戶的時間。此外,現(xiàn)今的CF卡讀卡器只能對Windows系統(tǒng)文件進(jìn)行復(fù)制操作,無法有效地復(fù)制操作系統(tǒng)和驅(qū)動文件。而這里設(shè)計(jì)的這套CF卡復(fù)制系統(tǒng)也可實(shí)現(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)實(shí)IDE模式。其中,實(shí)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卡的八個屬性寄存器實(shí)現(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è)計(jì)
CF卡復(fù)制系統(tǒng)的硬件設(shè)計(jì)采用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ì)算機(jī)相連的串口" title="串口">串口調(diào)試系統(tǒng),使得可以通過計(jì)算機(jī)串口實(shí)時監(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)中實(shí)現(xiàn)CF卡存儲的文件系統(tǒng)設(shè)計(jì).單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2003(5):43~44
3 林海虹, 劉 慧.CF卡與雙核DSP的實(shí)現(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存儲卡文件讀寫的實(shí)現(xiàn). 計(jì)算機(jī)應(yīng)用,2003;23(9):146~148