SDIO driver學(xué)習(xí)

http://blog.csdn.net/zqixiao_09/article/details/51039595

分兩步學(xué)習(xí)

1.協(xié)議

2.驅(qū)動(dòng)



協(xié)議:

1篙挽、SDIO接口

??SDIO故名思義,就是SD 的 I/O 接口(interface)的意思瓤帚,不過這樣解釋可能還有點(diǎn)抽像份企。更具體的說明赦肋,SD 本來是記憶卡的標(biāo)準(zhǔn)第队,但是現(xiàn)在也可以把 SD 拿來插上一些外圍接口使用,這樣的技術(shù)便是 SDIO纷闺。

所以 SDIO 本身是一種相當(dāng)單純的技術(shù)算凿,透過 SD 的 I/O 接腳來連接外部外圍,并且透過 SD 上的 I/O 數(shù)據(jù)接位與這些外圍傳輸數(shù)據(jù)犁功,而且 SD 協(xié)會(huì)會(huì)員也推出很完整的 SDIO stack 驅(qū)動(dòng)程序氓轰,使得 SDIO 外圍(我們稱為SDIO 卡)的開發(fā)與應(yīng)用變得相當(dāng)熱門。

? ? ? ?現(xiàn)在已經(jīng)有非常多的手機(jī)或是手持裝置都支持 SDIO 的功能(SD 標(biāo)準(zhǔn)原本就是針對(duì) mobile device 而制定)浸卦,而且許多 SDIO 外圍也都被開發(fā)出來戒努,讓手機(jī)外接外圍更加容易,并且開發(fā)上更有彈性(不需要內(nèi)建外圍)。目前常見的 SDIO 外圍(SDIO 卡)有:

· Wi-Fi card(無線網(wǎng)絡(luò)卡)?

· CMOS sensor card(照相模塊)?

· GPS card?

· GSM/GPRS modem card?

· Bluetooth card?

? ? ? ? SDIO 的應(yīng)用將是未來嵌入式系統(tǒng)最重要的接口技術(shù)之一储玫,并且也會(huì)取代目前 GPIO 式的 SPI 接口。

2萤皂、SDIO總線

SDIO總線 和 USB總線 類似撒穷,SDIO也有兩端,其中一端是HOST端裆熙,另一端是device端端礼。所有的通信都是由HOST端 發(fā)送 命令 開始的,Device端只要能解析命令入录,就可以相互通信蛤奥。

CLK信號(hào):HOST給DEVICE的 時(shí)鐘信號(hào),每個(gè)時(shí)鐘周期傳輸一個(gè)命令僚稿。

CMD信號(hào):雙向 的信號(hào)凡桥,用于傳送 命令 和 反應(yīng)。

DAT0-DAT3 信號(hào):四條用于傳送的數(shù)據(jù)線蚀同。

VDD信號(hào):電源信號(hào)缅刽。

VSS1,VSS2:電源地信號(hào)蠢络。

3衰猛、SDIO熱插拔原理

方法:設(shè)置一個(gè)定時(shí)器檢查插拔中斷檢測

硬件:假如GPG10(EINT18)用于SD卡檢測

GPG10 為高電平 即沒有插入SD卡

GPG10為低電平 ?即插入了SD卡

4、SDIO命令

? ? ? SDIO總線上都是HOST端發(fā)起請(qǐng)求刹孔,然后DEVICE端回應(yīng)請(qǐng)求啡省。sdio命令由6個(gè)字節(jié)組成。

a -- Command:用于開始傳輸?shù)拿钏柘迹怯蒆OST端發(fā)往DEVICE端的卦睹。其中命令是通過CMD信號(hào)線傳送的。

b -- Response:回應(yīng)是DEVICE返回的HOST的命令酸茴,作為Command的回應(yīng)分预。也是通過CMD線傳送的。

c -- Data:數(shù)據(jù)是雙向的傳送的薪捍×裕可以設(shè)置為1線模式,也可以設(shè)置為4線模式酪穿。數(shù)據(jù)是通過DAT0-DAT3信號(hào)線傳輸?shù)摹?/p>

? ? ? SDIO的每次操作都是由HOST在CMD線上發(fā)起一個(gè)CMD凳干,對(duì)于有的CMD,DEVICE需要返回Response被济,有的則不需要救赐。

? ? ?對(duì)于讀命令,首先HOST會(huì)向DEVICE發(fā)送命令,緊接著DEVICE會(huì)返回一個(gè)握手信號(hào)经磅,此時(shí)泌绣,當(dāng)HOST收到回應(yīng)的握手信號(hào)后,會(huì)將數(shù)據(jù)放在4位的數(shù)據(jù)線上预厌,在傳送數(shù)據(jù)的同時(shí)會(huì)跟隨著CRC校驗(yàn)碼阿迈。當(dāng)整個(gè)讀傳送完畢后,HOST會(huì)再次發(fā)送一個(gè)命令轧叽,通知DEVICE操作完畢苗沧,DEVICE同時(shí)會(huì)返回一個(gè)響應(yīng)。

? ? 對(duì)于寫命令炭晒,首先HOST會(huì)向DEVICE發(fā)送命令待逞,緊接著DEVICE會(huì)返回一個(gè)握手信號(hào),此時(shí)网严,當(dāng)HOST收到回應(yīng)的握手信號(hào)后识樱,會(huì)將數(shù)據(jù)放在4位的數(shù)據(jù)線上,在傳送數(shù)據(jù)的同時(shí)會(huì)跟隨著CRC校驗(yàn)碼屿笼。當(dāng)整個(gè)寫傳送完畢后牺荠,HOST會(huì)再次發(fā)送一個(gè)命令,通知DEVICE操作完畢驴一,DEVICE同時(shí)會(huì)返回一個(gè)響應(yīng)休雌。


卡識(shí)別階段

數(shù)據(jù)傳輸階段

在卡識(shí)別階段通過命令使MMC/SD處于:空閑(idle)、準(zhǔn)備(ready)肝断、識(shí)別(ident)杈曲、等待(stby)、不活動(dòng)(ina)幾種不同的狀態(tài)胸懈;

? ? 而在數(shù)據(jù)傳輸階段通過命令使MMC/SD處于:發(fā)送(data)担扑、傳輸(tran)、接收(rcv)趣钱、程序(prg)涌献、斷開連接(dis)幾種不同的狀態(tài)。



驅(qū)動(dòng):

card

core

host


?MMC/SD設(shè)備驅(qū)動(dòng)在Linux中的結(jié)構(gòu)層次 ?

?在Linux中MMC/SD卡的記憶體都當(dāng)作塊設(shè)備首有。MMC/SD設(shè)備驅(qū)動(dòng)代碼在linux-2.6.38.2\drivers\mmc ?分別有card燕垃、core和host三個(gè)文件夾, ? ?

card層 ? ?要把操作的數(shù)據(jù)以塊設(shè)備的處理方式寫到記憶體上或從記憶體上讀染卜壕;

core層 ?則是將數(shù)據(jù)以何種格式,何種方式在 MMC/SD主機(jī)控制器與MMC/SD卡的記 憶體(即塊設(shè)備)之間進(jìn)行傳遞烙常,這種格式轴捎、方式被稱之為規(guī)范或協(xié)議,

host層 ??下的代碼就是你要?jiǎng)邮謱?shí)現(xiàn)的具體MMC/SD設(shè)備驅(qū)動(dòng)了,包括RAM芯片中的 SDI控制器(支持對(duì)MMC/SD卡的控制侦副,俗稱MMC/SD主機(jī)控制器)和SDI控制器與MMC/SD卡的硬件接口電路侦锯。

那么,card秦驯、core和host這三層的關(guān)系率触,我們用一幅圖來進(jìn)行描述,圖如下:

從這幅圖中的關(guān)系可以看出汇竭,整個(gè)MMC/SD模塊中最重要的部分是Core核心層,他提供了一系列的接口函數(shù)穴张,對(duì)上提供了將主機(jī)驅(qū)動(dòng)注冊(cè)到系統(tǒng)细燎,給應(yīng)用程序提供設(shè)備訪問接口,對(duì)下提供了對(duì)主機(jī)控制器控制的方法及塊設(shè)備請(qǐng)求的支持皂甘。對(duì)于主機(jī)控制器的操作就是對(duì)相關(guān)寄存器進(jìn)行讀寫玻驻,而對(duì)于MMC/SD設(shè)備的請(qǐng)求處理則比較復(fù)雜。


1.host

控制器驅(qū)動(dòng)

platform driver

probe中 分配mmc ,填充 host偿枕,用于向上提供操作接口

2.core

Linux在內(nèi)核源碼的drivers/mmc/core文件夾下為我們的提供了一系列SD卡的接口服務(wù)函數(shù)璧瞬。可以查看Makefile如下

可見渐夸,core文件夾下有針對(duì)總線的服務(wù)bus.c嗤锉,針對(duì)主控制器的服務(wù)host.c,針對(duì)SD卡的服務(wù)sd.c, sd_ops.c等等墓塌。

其中瘟忱,最為核心的一個(gè)函數(shù)便是之前提到的位于core.c的mmc_rescan,概括來講苫幢,主要完成兩項(xiàng)任務(wù)访诱,即

掃描SD總線,插入SD卡

掃描SD總線韩肝,拔出SD卡


3.card

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末触菜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子哀峻,更是在濱河造成了極大的恐慌涡相,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡巡揍,警方通過查閱死者的電腦和手機(jī)舷手,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啦辐,“玉大人雹拄,你說我怎么就攤上這事耙册〔郯溃” “怎么了烙无?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長遍尺。 經(jīng)常有香客問我截酷,道長,這世上最難降的妖魔是什么乾戏? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任迂苛,我火速辦了婚禮,結(jié)果婚禮上鼓择,老公的妹妹穿的比我還像新娘三幻。我一直安慰自己,他們只是感情好呐能,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布念搬。 她就那樣靜靜地躺著,像睡著了一般摆出。 火紅的嫁衣襯著肌膚如雪朗徊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天偎漫,我揣著相機(jī)與錄音爷恳,去河邊找鬼。 笑死骑丸,一個(gè)胖子當(dāng)著我的面吹牛舌仍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播通危,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼铸豁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了菊碟?” 一聲冷哼從身側(cè)響起节芥,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逆害,沒想到半個(gè)月后头镊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡魄幕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年相艇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纯陨。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坛芽,死狀恐怖留储,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咙轩,我是刑警寧澤获讳,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站活喊,受9級(jí)特大地震影響丐膝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钾菊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一帅矗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧煞烫,春花似錦损晤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喘落。三九已至茵宪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瘦棋,已是汗流浹背稀火。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赌朋,地道東北人凰狞。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像沛慢,于是被迫代替她去往敵國和親赡若。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Linux mmc system MMC团甲、SD逾冬、SDIO的技術(shù)本質(zhì)是一樣的(使用相同的總線規(guī)范,等等)躺苦,都是從MM...
    Creator_Ly閱讀 1,992評(píng)論 0 0
  • 總線 計(jì)算機(jī)的各個(gè)功能部件通過總線連接在一起構(gòu)成完整的計(jì)算機(jī)系統(tǒng)身腻,總線是多個(gè)系統(tǒng)功能部件之間進(jìn)行數(shù)據(jù)傳送的公共通路...
    羅蓁蓁閱讀 4,810評(píng)論 0 10
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo閱讀 3,707評(píng)論 1 20
  • Overview 深入理解SD卡系列文章將介紹SD卡,涉及SD卡的協(xié)議及驅(qū)動(dòng)代碼匹厘。我們學(xué)習(xí)SD卡目的是為了理解SD...
    發(fā)仔很忙閱讀 41,159評(píng)論 2 20
  • 清晨嘀趟,拉開窗簾,推開窗戶愈诚,微風(fēng)吹來她按,一陣清新牛隅、幽香、淡雅的泥土氣息迎面而來尤溜。 伸伸懶腰倔叼,打了一下哈欠,瞧宫莱,又到上班...
    海裕濾清器閱讀 159評(píng)論 0 0