SD卡驱动分析(一)
Android下的SD卡驅(qū)動(dòng)與標(biāo)準(zhǔn)LINUX下的SD卡驅(qū)動(dòng)好像沒有太大的區(qū)別,這里就以高通的ANDROID 2.3以代表,來簡要分析一下LINUX下SD卡驅(qū)動(dòng)的寫法。由于小弟的技術(shù)有限,分析的有錯(cuò)的地方,請大家指正,可以共同學(xué)習(xí)。
? ? ?一.最先來理清一下SD、MMC與SDIO的一些基本概念:? ??
? ? ? ? ? ? ? ?(1) ?MMC:(Multi Media Card)是較早的一種記憶卡標(biāo)準(zhǔn),目前已經(jīng)被 SD 標(biāo)準(zhǔn)所取代。
? ? ?(2) ?SD:(Secure Digital Memory Card) 是一種 flash memory card 的標(biāo)準(zhǔn),也就是一般常見的 SD 記卡,已完全兼容MMC標(biāo)準(zhǔn)。
? ? ?(3) ?SDIO:(Secure Digital Input and Output Card)安全數(shù)字輸入輸出卡。SDIO是在SD標(biāo)準(zhǔn)上定義了一種外設(shè)接口,通過SD的I/O接腳來連接外圍設(shè)備,并且通過SD上的?I/O數(shù)據(jù)接位與這些外圍設(shè)備進(jìn)行數(shù)據(jù)傳輸。是目前較熱門的技術(shù),目前有很多WIFI、GPS、Bluetooth、radio等模塊都有了SDIO接口,也可以被稱為“SDIO卡”。
? ? ?(4) ?接口的工作模式:工作模式是對CPU的控制器來說的,也就是說,CPU可以能過設(shè)置一些寄存器來將自身控制器設(shè)成置滿足外掛設(shè)備要求的一種工作方式,即:SDIO工作模式、傳統(tǒng)的SD模式以及MMC工作模式。這幾種模式我的理解就是對應(yīng)上面1-3三點(diǎn)的不同的外接設(shè)備。因?yàn)檫@三種設(shè)備的傳輸協(xié)議是有區(qū)別的。兼容關(guān)系是:“SDIO卡”> “SD卡”> “MMC卡”,反過來剛不成立。?
? ? ?(5) 接口的傳輸方式:傳輸方式也是針對CPU的控制器來講的,一般的CPU控制器都會(huì)支持三種傳輸模式,即:SPI模式、1線模式、4線模式。那么如何才可以保證CPU工作在我們要求的模式以及傳輸方式呢?就是通過寫CPU的控制寄存器來完成的。比如下面會(huì)提到的函數(shù)msmsdcc_set_ios(struct mmc_host *mmc,struct mmc_ios *ios).
? ? ?(6)?MMC/SD卡初始化時(shí)的指令以及各種狀態(tài):在網(wǎng)上找到以下的圖片,可以很清楚的反映出SD卡初始化的指令,后面介紹代碼時(shí)所發(fā)送的指令其實(shí)也是按照這個(gè)順序來發(fā)送的:
? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ??
? ? ?二.Android(LINUX)下SD卡驅(qū)動(dòng)的結(jié)構(gòu)層次
? ? ?我們知道,LINUX的驅(qū)動(dòng)很喜歡分層,就像IIC以及輸入子系統(tǒng)等驅(qū)動(dòng)一樣,LINUX下的SD卡驅(qū)動(dòng)也是分了層次的,在我們的代碼的kernel/drivers/mmc目錄下包含了三個(gè)子目錄,分別是:host、card、core三個(gè)部分:
? ? ?HOST部分是針對不同主機(jī)的驅(qū)動(dòng)程序,這一部是驅(qū)動(dòng)程序工程師需要根據(jù)自己的特點(diǎn)平臺(tái)來完成的,不過高通發(fā)布的CODEBASE里已經(jīng)幫我們把這部分做好了。
? ? ?CORE 部分: 這是整個(gè)MMC 的核心存,這部分完成了不同協(xié)議和規(guī)范的實(shí)現(xiàn),并為HOST 層的驅(qū)動(dòng)提供了接口函數(shù)。
? ? ?CARD部分:因?yàn)檫@些記憶卡都是塊設(shè)備,當(dāng)然需要提供塊設(shè)備的驅(qū)動(dòng)程序,這部分就是實(shí)現(xiàn)了將你的SD 卡如何實(shí)現(xiàn)為塊設(shè)備的。整個(gè)SD卡驅(qū)動(dòng)的調(diào)用關(guān)系可以用如下的圖來表示:
? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ??
? ? ?SD卡的一些基本概念這里就講完了,下一節(jié)就主要開始分析代碼嘍。
總結(jié)
以上是生活随笔為你收集整理的SD卡驱动分析(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高通安卓调试LCD几方面总结
- 下一篇: SD卡驱动分析(二)