一、概念 1、mmc的概念 mmc有很多種意義,具體如下: mmc MultiMedia Card,多媒體存儲卡, 但後續泛指一個介面協定(一種卡式),能符合這介面的記憶體器都可稱作mmc儲存體。 主要特性如下: 工作電壓:高電壓為2.7~3.6 V,低電壓為1.65~1.95 V,可選。 mmc匯流排 ...
一、概念
1、mmc的概念
mmc有很多種意義,具體如下:
- mmc
MultiMedia Card,多媒體存儲卡, 但後續泛指一個介面協定(一種卡式),能符合這介面的記憶體器都可稱作mmc儲存體。
- 主要特性如下:
- 工作電壓:高電壓為2.7~3.6 V,低電壓為1.65~1.95 V,可選。
- mmc匯流排
mmc匯流排是和I2C匯流排、SPI匯流排類似的一種匯流排結構。簡化系統結構圖如下(也可以理解為硬體框架圖):
硬體特性:
卡與主控制器間串列傳送,工作時鐘頻率範圍為0~200 MHz。
mmc匯流排上最多可識別64 K個mmc設備,在匯流排上不超過10個卡時,可運行到最高頻率。
具體匯流排連接參考《。。。》
使用mmc介面規範(MCI, Multimedia Card Interface)的設備都可以稱之為mmc設備。
- mmc設備
使用mmc介面規範(MCI, Multimedia Card Interface)的設備都可以稱之為mmc設備.
又分成三個種類,如下
- mmc type card
(1)標準mmc卡:快閃記憶體卡的一種,使用mmc標準。
(2)emmc:Embedded MultiMediaCard,是MMC協會所制定的內嵌式存儲器標準規格,帶有mmc介面,是具備mmc協議的晶元。
- sd type card
(1)sd卡:SD卡為Secure Digital Memory Card, 即安全數位卡。它在MMC的基礎上發展而來,增加了兩個主要特色:SD卡強調數據的安全安全,可以設定所儲存的使用許可權,防止數據被他人複製。相容mmc介面規範。
- sdio type card
(1)sdio設備:SDIO是在SD標準上定義了一種外設介面,它和SD卡規範間的一個重要區別是增加了低速標準。在SDIO卡只需要SPI和1位SD傳輸模式。低速卡的目標應用是以最小的硬體開銷支持低速IO能力。常見的sdio設備有Wi-Fi card、Bluetooth card等等。
註意,這幾種類型的card統稱為mmc card。
- mmc協議
類似i2c協議、spi協議,mmc匯流排上也有一套自己的通訊規範。通信規範後續在說明。
而上述mmc設備基於上mmc匯流排通訊規範上由自身硬體特性設置了自己的一套協議。
jedec的協議規範可以去jedec的官網上下載
- 標準mmc卡協議
<1> mmc4.0
<2> mmc4.2——《JESD84-B42——MULTIMEDIACARD (MMC) ELECTRICAL STANDARD, HIGH CAPACITY (MMCA, 4.2) 》
- emmc協議(主要區別在於讀寫速度上)
<1> emmc4.41——《JESD84-A44》
<2> emmc4.5——《JESD84-B45》
<3> emmc5.0——《JESD84-B50》
<4> emmc5.1—— 《JESD84-B51——EMBEDDED MULTI-MEDIA CARD (e•MMC), ELECTRICAL STANDARD (5.1) 》
- sd協議
<1> SD2.0協議——《SD_Ver2.00_Final_060509》
<2> SD3.0協議——《SD_Ver3.00_Final_090416》
<3> SD4.0協議——《SD_Ver4.00_Final_130122》
- mmc subsystem
kernel中的mmc subsystem用於管理所有mmc匯流排控制器以及mmc設備,包括mmc type card(標準mmc卡、emmc)、sd type card(sd卡)、sdio type card。
也就是說只要使用MCI的設備都交由mmc subsystem統一管理。
二、軟體框架及說明
- mmc core
對應於代碼中的core目錄。 mmc subsystem的實現核心。
負責抽象和管理mmc host、mmc device、mmc bus,為mmc device抽象出對應的card設備。規範mmc的操作集合。為底層驅動提供統一的介面。同時,也負責部分和card type相關的操作以及協議層的東西。
如上圖所示:mmc core中又分成如下幾個模塊
- mmc core主模塊
- bus模塊
- host模塊
card模塊
mmc host drivers
對應於代碼中的host目錄。
主要提供了一系列mmc host的具體實例的driver,例如sdhci-msm(高通)和sdhci-s3c(samsung)。
這裡補充說明,sdhci並不是實際的host驅動,而是上述說明的sdhc標準的host的驅動部分。sdhci-msm和sdhci-s3c都使用了SDHC標準,故會藉助sdhci driver(sdhci.c)來實現host。後續會說明。
- mmc card drivers
對應於代碼中的card目錄。
主要實現驅動mmc core抽象出來虛擬的card,對接其他的模塊,實現其實際的功能。
例如,mmc卡或者emmc是一種存儲設備,mmc core會使用card目錄中的block來實現mmc卡或者emmc的功能,生成對應的塊設備。