黃文超
摘要:文章在介紹SD存儲(chǔ)卡相關(guān)技術(shù)基礎(chǔ)上,對(duì)基于Windows CE.NET 操作系統(tǒng)的掌上電腦的SD卡接口的設(shè)計(jì)與實(shí)現(xiàn)開(kāi)展深入的研究,主要集中在SD卡硬件接口的設(shè)計(jì)。
關(guān)健詞:Windows CE.NET;SD卡技術(shù);存儲(chǔ)技術(shù)
中圖分類號(hào):TP310.89文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1006-8937(2009)10-0018-02
1SD存儲(chǔ)卡技術(shù)及SD主控制寄存器概述
存儲(chǔ)卡的最大應(yīng)用領(lǐng)域一直是數(shù)碼相機(jī)領(lǐng)域,而隨著消費(fèi)電子市場(chǎng)對(duì)存儲(chǔ)容量的需要日益迫切,尤其是智能手機(jī)和掌上電腦等產(chǎn)品的銷量不斷增長(zhǎng),消費(fèi)電子市場(chǎng)將成為存儲(chǔ)卡最主要的市場(chǎng)。目前在手機(jī)和掌上電腦等消費(fèi)電子產(chǎn)品上應(yīng)用的存儲(chǔ)卡有:SD卡,MMC,mini-SD,RS-MMC,MMC Plus,記憶棒,CF 存儲(chǔ)卡等,SD和 MMC由于占有絕對(duì)的市場(chǎng)份額而成為事實(shí)的標(biāo)準(zhǔn)。
S3C2410A微處理上,SD主控制器接口的32bit功能寄存器物理地址從0X5A000000開(kāi)始下面簡(jiǎn)單介紹SD 主控制器接口的重要寄存器。
①SDICON(SDI Control Register,SD接口控制寄存器),該寄存器中的功能位用來(lái)設(shè)置SD主控制器的時(shí)鐘類型,SD主控制器的FIFO復(fù)位,讀寫(xiě)等待條件,是否響應(yīng)SD主控制器的SDIO中斷和SD主控制器讀寫(xiě)數(shù)據(jù)時(shí)候的字節(jié)順序。
②SDIPRE(SDI Baud Rate Pre-scaler Register,SD 波特率因子寄存器),設(shè)置該寄存器中的bit 0~7,可以對(duì)系統(tǒng)的PCLK進(jìn)行分頻,然后提供給SD主控制器使用,分頻公式為:Baud Rate=PCLK/2/(SDIPRE+1)。
③SDICCON(SDI Command Control Register,SD命令控制寄存器),該寄存器存放發(fā)送給SD主控制器的命令,主控制器是否等待響應(yīng),命令是否帶有數(shù)據(jù)等。
④SDICSTA(SDI Command Status Register,SD命令狀態(tài)寄存器),該寄存器包含命令是否正在傳輸,命令是否超時(shí),響應(yīng)CRC校驗(yàn)失敗等標(biāo)志位。
⑤SDISP(SDI Response Register,SD響應(yīng)寄存器),共有4個(gè),只讀屬性。當(dāng)響應(yīng)是短響應(yīng)時(shí),只用SDISP0,否則就需要使用四個(gè)響應(yīng)寄存器。
⑥SDIBSIZE(SDI Block Size Register,SD數(shù)據(jù)塊大小寄存器),該寄存器只使用了bit 0~11,所以數(shù)據(jù)塊最大為4095字節(jié),當(dāng)使用流模式傳輸時(shí),該寄存器忽略。
⑦SDIDCON(SDI Data Control Register,SD數(shù)據(jù)控制寄存器),bit 0~11為傳送數(shù)據(jù)塊的數(shù)目;剩下的狀態(tài)位標(biāo)識(shí)數(shù)據(jù)傳輸模式,DMA通道使能,數(shù)據(jù)總線寬度(1bit 或4bit模式),傳輸停止方式,傳輸響應(yīng),SDIO中斷周期等。
⑧SDIDSTA(SDI Data Status Register,SD數(shù)據(jù)狀態(tài)寄存器),包含數(shù)據(jù)收發(fā)狀態(tài),傳輸完成,是否超時(shí),CRC 校驗(yàn),FIFO失效,SDIO中斷等狀態(tài)位。
⑨SDIDAT(SDI Data Register,SD數(shù)據(jù)寄存器),該寄存器用來(lái)保存SD控制器用來(lái)傳送或接受的數(shù)據(jù)。
⑩SDIDAT(SDI Data Register,SD數(shù)據(jù)寄存器),該寄存器用來(lái)保存SD控制器用來(lái)傳送或接受的數(shù)據(jù)。
當(dāng)需要對(duì)SD主控制器接口進(jìn)行控制時(shí),我們必須先要將SD主控制器的寄存器初始化,然后對(duì)相應(yīng)的SD接口寄存器進(jìn)行讀寫(xiě)來(lái)完成工作。
2接口硬件設(shè)計(jì)
N30系統(tǒng)是一款針對(duì)中低端用戶設(shè)計(jì)的掌上電腦,基于成本和功能的考慮,我們選擇Samsung的S3C2410A 16/32bit的RISC處理器芯片,內(nèi)部擴(kuò)展USB、SD接口,支持紅外線和藍(lán)牙數(shù)據(jù)傳輸接口,努力維持一個(gè)較低成本的同時(shí),使得整個(gè)系統(tǒng)有一個(gè)較高的整體性能。在此基礎(chǔ)上使用GPIO引腳擴(kuò)展的方法,對(duì)標(biāo)準(zhǔn)SD接口進(jìn)行擴(kuò)展,設(shè)計(jì)并實(shí)現(xiàn)N30掌上電腦的SD卡接口。
N30中選用的是Samsung的S3C2410A嵌入式ARM微處理器,采用ARM920T核心,內(nèi)部還有液晶顯示屏控制器,IIC總線和IIS總線控制單元,3通道的UART,4通道DMA控制器,電源控制單元,時(shí)鐘發(fā)生電路,USB主機(jī)控制器、USB設(shè)備接口和SD主控制器等,工作頻率可達(dá)到266MHz。適用于低成本的嵌入式應(yīng)用,滿足我們的設(shè)計(jì)需要。ARM9系列采用五級(jí)流水線和哈佛結(jié)構(gòu),提供1.1MIPS/MHz的性能,是高性能和低功耗的硬宏單元。ARM920T和ARM922T具有全性能MMU、指令和數(shù)據(jù)Cache以及高速AMBA總線接口,適用于高性能、低功耗的應(yīng)用。
N30系統(tǒng)由于采用Samsung的S3C2410A芯片,內(nèi)部支持內(nèi)存控制、NAND Flash和SD卡接口等。Flash存儲(chǔ)器采用的是一Samsung的K9F5608U0C,32MB的NANDFlash;RAM采用的是兩片Samsung的K4S561633C,構(gòu)成 16M*16bit*2的64MB內(nèi)存空間;SD卡接口采用APLS公司的SCDA1A0100 SD卡連接插槽,通過(guò)GPIO擴(kuò)展其 SD卡檢測(cè)引腳信號(hào)和電源使能信號(hào)等。
N30掌上電腦的硬件系統(tǒng)的主要模塊有:嵌入式處理器,電源模塊,LCD和觸摸屏,音頻模塊,時(shí)鐘,USB 接口等,另外還有用于調(diào)試的JTAG和串行接口。
嵌入式處理器是整個(gè)系統(tǒng)的核心,它主要負(fù)責(zé)整個(gè)系統(tǒng)的運(yùn)行,控制各個(gè)部件的工作和協(xié)議轉(zhuǎn)換。
電源模塊負(fù)責(zé)整個(gè)系統(tǒng)的供電,主要向嵌入式系統(tǒng)提供2.5V,3.3V和5V的直流電壓,向LCD模塊提供3.3V、5V、12V的直流電壓。同時(shí)采用TI的MSP430F1111A微控制器,負(fù)責(zé)電池的溫度、電量監(jiān)測(cè)和電池充電,以及控制LED燈的狀態(tài)。
音頻模塊采用 Philips的UDA1380音頻編解碼芯片,連接外部話筒和耳機(jī),同時(shí)經(jīng)過(guò)音頻放大之后連接到內(nèi)部揚(yáng)聲器,音頻模塊和CPU之間采用IIS總線連接。I2S(Inter IC Sound)總線是飛利浦半導(dǎo)體公司為數(shù)字音頻設(shè)備之間的音頻數(shù)據(jù)傳輸而制定的一種總線標(biāo)準(zhǔn),該總線專責(zé)于音頻設(shè)備之間的數(shù)據(jù)傳輸,廣泛應(yīng)用于各種多媒體系統(tǒng)中。I2S數(shù)據(jù)通過(guò)DMA或者PIO方式與系統(tǒng)內(nèi)存交互。
摸屏和LCD顯示屏是主要的人機(jī)交互接口,負(fù)責(zé)響應(yīng)用戶的觸摸筆輸入和顯示輸出,顯示屏是3.5寸 65536色的TFT 液晶顯示屏,分辨率為240*320,內(nèi)部集成觸摸屏電路和背景燈電路。
時(shí)鐘模塊由32.768KHz、13MHz的晶振和時(shí)鐘發(fā)生電路組成。32.768KHz的時(shí)鐘提供給RTC實(shí)時(shí)時(shí)鐘,用于低精度的系統(tǒng)計(jì)時(shí)。13MHz的晶體振蕩器經(jīng)過(guò)時(shí)鐘發(fā)生電路升頻以后,輸出FCLK,PCLK和HCLK三路。其中 FCLK專用于ARM920T核心;HCLK用于AHB高性能總線,提供給內(nèi)存控制單元、中斷控制單元、USB主機(jī)控制器單元等;PCLK用于APB高性能外部總線,提供給 SD/MMC、SPI接口等。
USB接口分為兩個(gè)模塊:USB主機(jī)控制器和USB設(shè)備端口。主機(jī)控制器可以連接USB鼠標(biāo)、鍵盤(pán)等USB設(shè)備,擴(kuò)展PDA的功能;USB 設(shè)備端口可以用于PDA和 PC端的USB連接,將PDA的存儲(chǔ)設(shè)備和PC連接起來(lái),使得PDA成為PC機(jī)的移動(dòng)存儲(chǔ)設(shè)備。
3驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)
S3C2410A芯片內(nèi)部支持SD主控制器的基本接口,通過(guò)GPIO的擴(kuò)展完成了SD接口的硬件設(shè)計(jì),本章主要針對(duì)SD卡擴(kuò)展的存儲(chǔ)接口進(jìn)行分析、設(shè)計(jì)和實(shí)現(xiàn)。我們?yōu)?N30掌上電腦上運(yùn)行的 Windows CE系統(tǒng)開(kāi)發(fā)了SD 主機(jī)控制器的驅(qū)動(dòng)程序。Windows CE下,驅(qū)動(dòng)程序是用戶態(tài)的動(dòng)態(tài)鏈接庫(kù)(Dynamic Link Library,DLL),這些 DLL向內(nèi)核提供一些接口函數(shù),這樣設(shè)備管理模塊就可以通過(guò)這些函數(shù)與具體的硬件設(shè)備進(jìn)行通信。
其中,驅(qū)動(dòng)軟件架構(gòu)分析如下。Windows CE的驅(qū)動(dòng)程序模型主要有2種類型:流式接口驅(qū)動(dòng)(Stream Interface Driver)和本地設(shè)備驅(qū)動(dòng)(Native Device Driver)。流式設(shè)備驅(qū)動(dòng)向上層提供統(tǒng)一的流式設(shè)備接口,而本地設(shè)備驅(qū)動(dòng)可以根據(jù)具體設(shè)備要求提供相應(yīng)接口。N30掌上電腦系統(tǒng)中,SD Host的驅(qū)動(dòng)程序采用流式接口驅(qū)動(dòng)模型。驅(qū)動(dòng)程序要實(shí)現(xiàn)相應(yīng)的XXX_Open( ),XXX_Close( )等響應(yīng)的流式設(shè)備接口函數(shù),其中XXX為設(shè)備驅(qū)動(dòng)的前綴,應(yīng)用程序可以通過(guò)文件操作來(lái)控制設(shè)備。為了減少了 SD Host驅(qū)動(dòng)程序設(shè)計(jì)的復(fù)雜性,使其具有較好的可移植性,采用BSQUARE提供的SD Host DDK,它在 BSQUARE SD協(xié)議棧的基礎(chǔ)上,提供了平臺(tái)獨(dú)立的總線和客戶端驅(qū)動(dòng)和一組標(biāo)準(zhǔn)化的API供使用。在該體系結(jié)構(gòu)下,SD主控制器驅(qū)動(dòng)負(fù)責(zé)檢查SD卡的插拔狀態(tài),檢測(cè)插入的卡的類型,設(shè)置SD主控制器時(shí)鐘等SD接口的硬件操作;SD總線驅(qū)動(dòng)則負(fù)責(zé)上層卡驅(qū)動(dòng)的裝載和移除,維護(hù)每一個(gè)插槽的總線請(qǐng)求隊(duì)列等。該結(jié)構(gòu)的設(shè)計(jì)很大程度上減少了SD Host驅(qū)動(dòng)程序設(shè)計(jì)的復(fù)雜性,使SD Host控制器驅(qū)動(dòng)程序設(shè)計(jì)可以專注于硬件相關(guān)的部分??偩€驅(qū)動(dòng)是SD卡客戶端驅(qū)動(dòng)程序和SD Host 驅(qū)動(dòng)程序之間的一個(gè)抽象層,它為SD卡客戶端驅(qū)動(dòng)提供平臺(tái)獨(dú)立的服務(wù)接口。SD Host驅(qū)動(dòng)程序需要完成處理器和硬件平臺(tái)相關(guān)的處理,向上層驅(qū)動(dòng)提供統(tǒng)一的服務(wù)接口。
參考文獻(xiàn):
[1] 周維,陳默.基于S3C2410的ARM開(kāi)發(fā)平臺(tái)[J].電子技術(shù),2004,31(7): 4-7.