SD卡是一種基于半導(dǎo)體快閃記憶器開發(fā)的新一代記憶設(shè)備,目前SD卡被廣泛應(yīng)用于各種便攜式裝置上,,一般重量約為2 g,,擁有較好的安全性、移動(dòng)靈活性,、快速數(shù)據(jù)傳輸率和高記憶容量,。許多嵌入式設(shè)備都選擇使用SD卡以提高系統(tǒng)的穩(wěn)定性、降低成本,。
1 嵌入式系統(tǒng)的特點(diǎn)
因?yàn)榍度胧较到y(tǒng)是一種特殊的計(jì)算機(jī)系統(tǒng),,所以它和計(jì)算機(jī)系統(tǒng)一樣,由軟件和硬件構(gòu)成,。以PC為代表的通用計(jì)算機(jī)系統(tǒng)和嵌入式系統(tǒng)相比,,不同的嵌入式系統(tǒng)有不同的特點(diǎn),但是其主要特點(diǎn)一樣,。
(1)嵌入式系統(tǒng)是一種專用計(jì)算機(jī)系統(tǒng),。嵌人式系統(tǒng)的軟件和硬件是針對特定任務(wù)和應(yīng)用對象進(jìn)行設(shè)計(jì)的,具有較強(qiáng)的多樣性和專用性。嵌入式系統(tǒng)所能夠提供的功能,,均可提前預(yù)知,,相對較為固定。
(2)嵌入式系統(tǒng)需要滿足環(huán)境對其的要求,。因?yàn)榍度胧较到y(tǒng)需要被嵌入到特定的對象系統(tǒng)之中,,所以它必須滿足對象系統(tǒng)對嵌入式系統(tǒng)的環(huán)境要求,例如能耗少,、成本低以及電氣環(huán)境,、物理環(huán)境等特定要求,除此之外還需要滿足對壓力,、濕度,、溫度這些自然環(huán)境的要求。
(3)嵌入式系統(tǒng)是集各行業(yè)應(yīng)用和計(jì)算機(jī)技術(shù)為一體的集成系統(tǒng),。嵌入式系統(tǒng)是利用先進(jìn)的電子技術(shù),、半導(dǎo)體技術(shù)、計(jì)算機(jī)技術(shù)與其他各行業(yè)應(yīng)用相結(jié)合后的產(chǎn)物,,這個(gè)特定就決定了嵌人式系統(tǒng)是一個(gè)不斷創(chuàng)新,、高度分散、資金密集,、技術(shù)密集的知識集成系統(tǒng),。
(4)嵌入式系統(tǒng)與其他產(chǎn)品相比,有很長的生命周期,。嵌入式系統(tǒng)能夠緊密地應(yīng)用于實(shí)際生產(chǎn),,它的更新?lián)Q代與實(shí)際的產(chǎn)品同時(shí)進(jìn)行,所以基于嵌入式系統(tǒng)開發(fā)的產(chǎn)品,,得具有強(qiáng)大的競爭力和很長的生命周期,。
2 基于嵌入式系統(tǒng)的SD卡接口硬件設(shè)計(jì)
SD卡的接口可以支持兩種操作模式:一種是SD卡模式,另一種是SPI模式,。SD接口允許1~4線數(shù)據(jù)信號設(shè)置,。加電后,SD卡使用DAT0,。初始化后,,主機(jī)可以改變線寬。Freescale公司設(shè)計(jì)開發(fā)的MCF51QE128是一款32位低功耗嵌入式微控制器,,該嵌入式微控制器采用SPI的模式實(shí)現(xiàn)和SD卡的接口,。因?yàn)镸CF51QE128的最佳工作電壓為3.6 V,功耗較低,,可以和SD卡的工作電壓進(jìn)行兼容處理,,可以無需利用電平轉(zhuǎn)換電路,,可以直接與SD卡連接,,這里選用嵌入式微控制器的第2個(gè)SPI口,,硬件連接如圖1所示。SD卡的接口主要能支持兩種操作模式:一種是SD卡模式,;另一種是SPI模式,。主機(jī)系統(tǒng)可以根據(jù)需要,選擇一種模式,,SD卡的可以允許4線同時(shí)進(jìn)行數(shù)據(jù)傳輸,。接到復(fù)位命令時(shí),低電平有效,,
SPI模式啟用,。SPI模式可以允許那些簡單且通用的SPI通道接口,SPI模式與SD模式相比而言,,喪失了速度優(yōu)勢,。
3 基于嵌入式系統(tǒng)的SD卡接口軟件設(shè)計(jì)
SD卡接口軟件設(shè)計(jì),就是SD卡與嵌入式設(shè)備接觸時(shí)的接口驅(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)用程序可以通過文件操作來控制設(shè)備,。例如:hDevice=Activate DeviceEx(szRegKey_SDMMC,NU-LL,,0,,NULL);/*加載SD/MMC卡驅(qū)動(dòng)*/這個(gè)驅(qū)動(dòng)代碼可以判斷SD卡插入事件,。同時(shí),,SD卡的數(shù)據(jù)傳輸,基本是通過塊的讀寫實(shí)現(xiàn),。當(dāng)塊進(jìn)行讀取時(shí),,可以發(fā)送命令CMD17,接收到的應(yīng)答信號為0x00,。這樣就能夠直接來接收SD卡數(shù)據(jù),,接收到的數(shù)據(jù)的第1 Byte為數(shù)據(jù)令牌0xfe,后面為接收到的數(shù)據(jù),,當(dāng)輸出口變?yōu)楦唠娖綍r(shí),,表明讀取操作完成,SD卡的讀操作與寫操作相同,。
為降低系統(tǒng)功耗,,非活躍線程平時(shí)是被掛起的,。如果總線上掛有多個(gè)SD卡,就需要用CMD7命令退出當(dāng)前SD卡,,選擇其他CD卡操作,。CMD7命令為選擇卡或取消卡,在初始化的時(shí)候發(fā)送CMD7命令,,SD卡將進(jìn)入數(shù)據(jù)發(fā)送模式,,在數(shù)據(jù)模式里發(fā)送CMD7則退出當(dāng)前卡的操作。需要注意的是,,在數(shù)據(jù)模式里不同的狀態(tài)只支持特定命令,,如在數(shù)據(jù)模式里發(fā)送讀ID指令則無效。同時(shí),,為減少SD Host驅(qū)動(dòng)程序設(shè)計(jì)的復(fù)雜性,,使其具有較好的可移植性,可以采用Bsquare提供的SD Host DDK,,它在Bsquare SD協(xié)議棧的基礎(chǔ)上,,提供了平臺獨(dú)立的總線、客戶端驅(qū)動(dòng)和一組標(biāo)準(zhǔn)化的API供使用,。在該體系結(jié)構(gòu)下,,SD主控制器驅(qū)動(dòng)負(fù)責(zé)檢查SD卡的插拔狀態(tài),檢測插入卡的類型,,設(shè)置SD主控制器時(shí)鐘等SD接口的硬件操作,;SD總線驅(qū)動(dòng)則負(fù)責(zé)上層卡驅(qū)動(dòng)的裝載和移除,維護(hù)每一個(gè)插槽的總線請求隊(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)程序和SDHost驅(qū)動(dòng)程序之間的一個(gè)抽象層,,它為SD卡客戶端驅(qū)動(dòng)提供平臺獨(dú)立的服務(wù)接口。SD Host驅(qū)動(dòng)程序需要完成處理器和硬件平臺相關(guān)的處理,,向上層驅(qū)動(dòng)提供統(tǒng)一的服務(wù)接口,。
4 結(jié)束語
SD卡是目前廣泛應(yīng)用的可擦除的大容量存儲設(shè)備,其接口設(shè)計(jì)可作為各類嵌入式系統(tǒng)中存儲單元的一般解決方案,。