Linux SD卡驅動開發(一) —— SD 相關基礎概念
一.SD/MMC卡基礎概念
1.1.什麼是MMC卡
MMC:MMC就是MultiMediaCard的縮寫,即多媒體卡。它是一種非易失性儲存器件,體積小巧(24mm*32mm*1.4mm),容量大,耗電量低,傳輸速度快,廣泛應用於消費類電子產品中。
1.2.什麼是SD卡
SD:SD卡為Secure Digital Memory Card, 即安全數碼卡。它在MMC的基礎上發展而來,增加了兩個主要特色:SD卡強調資料的安全安全,可以設定所儲存的使用許可權,防止資料被他人複製;另外一個特色就是傳輸速度比2.11版的MMC卡快。在資料傳輸和物理規範上,SD卡(24mm*32mm*2.1mm,比 MMC卡更厚一點),向前相容了MMC卡.所有支援SD卡的裝置也支援MMC卡。SD卡和2.11版的MMC卡完全相容。
1.3.什麼是SDIO
SDIO:SDIO是在SD標準上定義了一種外設介面,它和SD卡規範間的一個重要區別是增加了低速標準。在SDIO卡只需要SPI和1位SD傳輸模式。低速卡的目標應用是以最小的硬體開銷支援低速IO能力。
1.4.什麼是MCI
MCI:MCI是Multimedia Card Interface的簡稱,即多媒體卡介面。上述的MMC,SD,SDI卡定義的介面都屬於MCI介面。MCI這個術語在驅動程式中經常使用,很多檔案,函式名字都包括”mci”.
1.5.MMC/SD/SDIO卡的區別
SDIO 是目前我們比較關心的技術,SDIO 故名思義,就是 SD 的 I/O 介面(interface )的意思,不過這樣解釋可能還有點抽像。更具體的說明,SD 本來是記憶卡的標準,但是現在也可以把 SD 拿來插上一些外圍介面使用,這樣的技術便是 SDIO 。
所以 SDIO 本身是一種相當單純的技術,透過 SD 的 I/O 接腳來連線外部外圍,並且透過 SD 上的I/O 資料接位與這些外圍傳輸資料,而且 SD 協會會員也推出很完整的 SDIO stack 驅動程式,使得SDIO 外圍(我們稱為 SDIO 卡)的開發與應用變得相當熱門。
現在已經有非常多的手機或是手持裝置都支援 SDIO 的功能(SD 標準原本就是針對 mobile device而制定),而且許多 SDIO 外圍也都被開發出來,讓手機外接外圍更加容易,並且開發上更有彈性(不需要內建外圍)。目前常見的 SDIO 外圍(SDIO 卡)有:
·Wi-Fi card (無線網路卡)
·CMOS sensor card (照相模組)
·GPS card
·GSM/GPRS modem card
·Bluetooth card
·Radio/TV card (很好玩)
SDIO 的應用將是未來嵌入式系統最重要的介面技術之一,並且也會取代目前 GPIO 式的 SPI 介面。
二、開發板SD資源
以Exynos4412開發板為例,其SD卡硬體原理圖如下:
圖中可以看到,SD卡裝置的連線方式就是SDIO匯流排的驅動方式,這裡使用EINT7作為NCD的控制器,當SD卡裝置插入/取出時均會中斷響應。
三、 SD協議概要
1、 匯流排介面
按照SD卡的協議的描述可分為2種匯流排的介面
SD BUS
物理層定義:
D0-D3 資料傳送
CMD 進行CMD 和Respons
CLK 大家最熟悉的HOST時鐘訊號線了
VDD VSS 電源和地
SPI BUS
一般用SPI協議的介面來做
物理層定義:
CLK HOST時鐘訊號線了
DATAIN HOST-àSD Card資料訊號線
DATAOUT SD Card àHOST資料訊號線
2、請求處理流程
根據協議,MMC/SD卡的驅動被分為:卡識別階段和資料傳輸階段。
在卡識別階段通過命令使MMC/SD處於:空閒(idle)、準備(ready)、識別(ident)、等待(stby)、不活動(ina)幾種不同的狀態;
而在資料傳輸階段通過命令使MMC/SD處於:傳送(data)、傳輸(tran)、接收(rcv)、程式(prg)、斷開連線(dis)幾種不同的狀態。
所以可以總結MMC/SD在工作的整個過程中分為兩個階段和十種狀態。下面使用圖形來描述一下在兩個階段中這十種狀態之間的轉換關係。
a -- 卡識別階段
b -- 資料傳輸階段
四、 MMC/SD裝置驅動在Linux中的結構層次
在Linux中MMC/SD卡的記憶體都當作塊裝置。MMC/SD裝置驅動程式碼在linux-2.6.38.2\drivers\mmc 分別有card、core和host三個資料夾,
card層 要把操作的資料以塊裝置的處理方式寫到記憶體上或從記憶體上讀取;
core層 則是將資料以何種格式,何種方式在 MMC/SD主機控制器與MMC/SD卡的記 憶體(即塊裝置)之間進行傳遞,這種格式、方式被稱之為規範或協議,
host層 下的程式碼就是你要動手實現的具體MMC/SD裝置驅動了,包括RAM晶片中的 SDI控制器(支援對MMC/SD卡的控制,俗稱MMC/SD主機控制器)和SDI控制器與MMC/SD卡的硬體介面電路。
那麼,card、core和host這三層的關係,我們用一幅圖來進行描述,圖如下:
從這幅圖中的關係可以看出,整個MMC/SD模組中最重要的部分是Core核心層,他提供了一系列的介面函式,對上提供了將主機驅動註冊到系統,給應用程式提供裝置訪問介面,對下提供了對主機控制器控制的方法及塊裝置請求的支援。對於主機控制器的操作就是對相關暫存器進行讀寫,而對於MMC/SD裝置的請求處理則比較複雜。
相關文章
- RT-Thread Studio驅動SD卡threadSD卡
- 相機SD卡照片恢復SD卡
- 製作Linux系統SD啟動卡Linux
- SAP SD基礎知識之SD常用BAPIAPI
- SAP SD基礎知識之SD常見流程概述
- Linux掛載隨身碟,SD卡LinuxSD卡
- SAP SD基礎知識之與FI整合相關的流程與配置
- arduino使用SD卡模組以及檢查SD卡資訊UISD卡
- SAP SD基礎知識之訂單中裝運相關的功能 II
- SAP SD基礎知識之訂單中裝運相關的功能 I
- 5、RK3399J Linux SD卡啟動Buildroot韌體LinuxSD卡UI
- 相機sd卡刪除的照片如何恢復SD卡
- SAP SD基礎知識之自動信用控制
- SD卡資料恢復SD卡資料恢復
- SD(TF)卡原理設計
- SD卡分割槽時需要注意什麼?SD卡分割槽注意事項SD卡
- SAP SD基礎知識之稅(Taxes)
- SAP SD基礎知識之主資料
- Zookeeper基礎概念及相關原理
- “訊息驅動、事件驅動、流 ”基礎概念解析事件
- 儲存圖片到SD卡SD卡
- SAP SD基礎知識之銷售模式模式
- SAP SD基礎知識之流程概覽
- SAP SD基礎知識之信用控制範圍
- SAP SD基礎知識之免費訂單
- SAP SD基礎知識之組織結構
- SAP SD基礎知識之現金銷售
- 如何恢復SD卡相機儲存卡等USB裝置資料丟失?SD卡
- 三星SD卡PRO Plus怎麼樣?三星SD卡PRO Plus詳細評測SD卡
- Interspeech 20週年,ASR和SD相關論文提前看
- 前端資料結構---相關基礎概念前端資料結構
- rv1106在linux下製作sd卡啟動映象步驟(luckfox_sololinker)LinuxSD卡
- 【esp32 學習筆記】讓SD卡發光發熱~筆記SD卡
- SAP SD基礎知識之交貨中的控制元素
- SAP SD基礎知識之信用風險管理概述
- SAP SD基礎知識之促銷計劃 (Agreements)
- SAP SD基礎知識之特殊的業務交易
- SAP SD基礎知識之憑證流(Document Flow)
- SAP SD 基礎知識之定價配置(Pricing Configuration)