《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業(yè)界動態(tài) > 基于單片機的CF卡復制系統(tǒng)

基于單片機的CF卡復制系統(tǒng)

2008-07-24
作者:馬 淵, 謝 立, 陳國斌, 劉

  摘 要: 介紹了CF卡的物理結構和工作原理" title="工作原理">工作原理,給出了CF卡之間復制的原理圖和復制流程,并實現(xiàn)了CF卡扇區(qū)之間的復制工作。
  關鍵詞: CF卡 單片機 扇區(qū) 復制


  隨著閃存技術的不斷發(fā)展,閃存卡(Flash Memory)以它卓越的容量體積比、便攜性和易操作性等優(yōu)勢,已經取代軟盤、光盤而成為移動存儲領域中應用最為廣泛的存儲設備。閃存卡是一種非揮發(fā)性存儲介質,它具有功耗低、密度高、體積小、掉電后數(shù)據(jù)不丟失、可擦除、可靠性高、單位存儲容量價格便宜等特點。另外,閃存卡因為沒有像硬盤一樣的機械結構,顯著降低了發(fā)生故障和被損壞的可能性,因此還經常被現(xiàn)在的一些室外工控機" title="工控機">工控機用作主系統(tǒng)設備。閃存卡有很多種類型,主要有CF卡、SD卡、MMC卡、記憶棒、SM卡、XD卡等,其中,CF卡應用最為常見[2~5]。
  由于CF卡的非機械結構及其體積小、穩(wěn)定性高的特點,使它在具有一些特殊用途的工控機(如安裝在戶外或者移動車上的工控機)中比普通硬盤具有更好的應用前景,以至于越來越多的工控機用CF卡代替硬盤裝載系統(tǒng)和存儲數(shù)據(jù)。但當CF卡損壞后,重裝系統(tǒng)比較麻煩,而且有些系統(tǒng)驅動程序可能拿不到,所以設計一種CF卡之間的復制系統(tǒng),實現(xiàn)了兩塊相同的CF卡之間的備份,從而避免了重新安裝系統(tǒng)和驅動程序,節(jié)約了用戶的時間。此外,現(xiàn)今的CF卡讀卡器只能對Windows系統(tǒng)文件進行復制操作,無法有效地復制操作系統(tǒng)和驅動文件。而這里設計的這套CF卡復制系統(tǒng)也可實現(xiàn)CF卡之間的文件系統(tǒng)和數(shù)據(jù)的復制。
1 CF卡物理結構
  CF卡的全稱為“Compact Flash”卡。Compact Flash技術是Compact Flash協(xié)會提出的一種與PC機ATA接口標準兼容的技術。CF卡采用間距50mil的50針腳雙列封裝,其電氣特性符合ATA規(guī)范[3]。CF卡內部集成了單片機控制器和閃存單元??刂破鲉卧糜谠谕獠恐鳈C與內部閃存單元之間進行數(shù)據(jù)交換" title="數(shù)據(jù)交換">數(shù)據(jù)交換和傳遞。內部閃存單元的數(shù)量可根據(jù)CF卡的容量大小進行相應地增減。目前CF卡最大存儲容量可達到2~3GB。CF卡的結構如圖1所示。


2 CF卡基本工作原理
  CF卡可以工作在三種模式下:(1)PC卡ATA I/O模式;(2)PC卡ATA存儲模式;(3)實IDE模式。其中,實IDE模式和硬盤的驅動器完全匹配。
  CF卡有兩種尋址模式:CHS(柱面/磁頭/扇區(qū))尋址模式和LBA(邏輯塊地址)尋址方式。CHS尋址模式是通過柱面、磁頭和扇區(qū)尋址的,最小的尋址單位是一個扇區(qū)。在CHS尋址模式下,主機通過輸入柱面、磁頭和扇區(qū)號碼尋址某一個扇區(qū);而在LBA尋址方式下,CF卡按照連續(xù)序列的邏輯扇區(qū)編號進行尋址,主機不必知道CF卡的物理幾何結構,而且能訪問的扇區(qū)從0柱面、0磁頭、1扇區(qū)開始,但無法訪問系統(tǒng)的隱藏扇區(qū)[5]。
  CF卡有50個引腳,主要用到的引腳有:A10~A0,十一根地址線,在PC卡ATA存儲模式下,僅用到A2~A0三根地址線,用于尋址CF卡內部控制器中的寄存器空間;D15~D0,CF卡的十六根數(shù)據(jù)線,具體傳輸數(shù)據(jù)時可選擇16位或8位傳輸;-CE1、-CE2引腳,用于指示是CF卡的字節(jié)操作還是字操作;-REG是寄存器選擇信號,這個信號在內存周期中使用,用來區(qū)分是普通內存還是屬性寄存器;-OE是讀信號;-WE是寫信號。
  單片機和內部閃存空間進行數(shù)據(jù)交換是通過CF卡的八個屬性寄存器實現(xiàn)的。在PC卡ATA存儲模式下,CF卡屬性寄存器組的具體功能和地址分配見表1[1,4]


  CF-ATA的基本命令有30余條,主要有數(shù)據(jù)的傳輸命令,包括扇區(qū)、緩沖區(qū)的讀寫命令等。下面以讀命令為例說明CF卡工作過程及其信號時序。
  在CF卡上電初始化后,主機判斷CF卡是否空閑,具體的就是查詢CF卡狀態(tài)寄存器" title="狀態(tài)寄存器">狀態(tài)寄存器的RDY位,如果為0,表示CF卡空閑,可以準備接收命令。然后,主機向CF卡填寫地址寄存器塊的信息,包括扇區(qū)數(shù)寄存器、扇區(qū)號寄存器、柱面號寄存器(低和高字節(jié))、磁頭寄存器等,選擇訪問的扇區(qū)地址。接著,主機向CF卡命令寄存器中寫入讀(20h)命令。CF卡收到讀命令后,驅動器設置狀態(tài)寄存器的BSY位,CF卡把一個扇區(qū)的數(shù)據(jù)調入到扇區(qū)緩沖區(qū)中;然后驅動器設置狀態(tài)寄存器的DRQ位,清除BSY位。這樣,主機就可以從扇區(qū)緩沖區(qū)中循環(huán)讀出一個扇區(qū)的數(shù)據(jù)。扇區(qū)緩沖區(qū)的數(shù)據(jù)讀出后,驅動器設置BSY位,同時清除DRQ信號。然后再以此方式讀出下一個扇區(qū)的數(shù)據(jù)[5]
3 CF卡復制系統(tǒng)的設計
  CF卡復制系統(tǒng)的硬件設計采用89S52作為CPU,一片74HC373作為地址鎖存器,一片74HC138作為譯碼器。系統(tǒng)中擴展一塊RAM作為存放CF卡數(shù)據(jù)的中轉站,用于兩塊CF卡之間進行數(shù)據(jù)交換和復制。單片機和CF卡以及其它器件的連接如圖2所示。P0.0~P0.7作為數(shù)據(jù)線,與擴展的RAM以及CF卡進行數(shù)據(jù)交換和傳輸。由于單片機僅有八根數(shù)據(jù)線,因此CF卡采用字節(jié)讀寫方式,以方便與單片機進行數(shù)據(jù)交換。擴展的RAM的低八位地址線由單片機的數(shù)據(jù)線P0.0~P0.7經過鎖存器輸入后控制,而最高兩位地址線則由P2.0~P2.1控制。單片機的P2.2~P2.4用于連接CF卡的地址線A0~A2,用于尋址CF卡屬性寄存器。單片機的讀寫信號使能端和CF卡的讀寫使能端相連。74HC138譯碼器用于控制兩塊CF卡和RAM的選通信號。


  在這里,讓CF卡工作在PC卡ATA存儲模式下,并且使用LBA(邏輯塊地址)尋址方式進行數(shù)據(jù)讀寫。讀寫數(shù)據(jù)的軟件流程圖如圖3所示。先給系統(tǒng)上電,判斷CF卡是否準備好。然后往CF卡的屬性寄存器中填入讀寫扇區(qū)的起始地址和讀寫的扇區(qū)數(shù),再往命令寄存器中填寫讀命令。填寫完屬性寄存器后,單片機通過不斷查詢CF卡狀態(tài)寄存器的DRQ位,來判斷數(shù)據(jù)是否準備好,一旦準備好就從CF卡的扇區(qū)緩沖區(qū)中循環(huán)讀出512字節(jié)的數(shù)據(jù)到外部RAM中存放起來。然后類似地把RAM中的一個扇區(qū)的數(shù)據(jù)寫入到另外一塊CF卡的相應扇區(qū)中去。


  該復制設備系統(tǒng)中兩塊CF卡的容量不等,該系統(tǒng)是把32MB的CF卡內容復制到256MB的CF卡中去。該系統(tǒng)版圖中還包括了和計算機相連的串口" title="串口">串口調試系統(tǒng),使得可以通過計算機串口實時監(jiān)測CF卡復制進程和成功與否。
  該CF卡復制系統(tǒng)可以對兩塊同樣容量的CF卡進行完全或者部分復制,并且還可以將小容量的CF卡的數(shù)據(jù)復制到大容量的CF卡中去。對于不同廠家生產的CF卡,該系統(tǒng)在復制時也無任何問題。通過該系統(tǒng)把裝有Windows NT嵌入式系統(tǒng)的CF卡復制到另外一塊CF卡后,復制的新卡也能夠成功啟動工控機,并且原有安裝的程序和驅動程序以及所有的數(shù)據(jù)都完全被成功復制。


參考文獻
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)設計.單片機與嵌入式系統(tǒng)應用,2003(5):43~44
3 林海虹, 劉 慧.CF卡與雙核DSP的實現(xiàn).電子技術應用, 2002;28(12):23~25
4 王海軍,卜祥元,安建平. 便攜式、低功耗體電信號采集存儲系統(tǒng)研究.單片機與嵌入式系統(tǒng)應用,2003(8):60~63
5 程擁強,郭鳳龍,朱 勁. 單片機對CF存儲卡文件讀寫的實現(xiàn). 計算機應用,2003;23(9):146~148

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。