RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux MMC子系統(tǒng)簡(jiǎn)介

嵌入式那些事 ? 來(lái)源:嵌入式那些事 ? 2023-11-30 13:57 ? 次閱讀

前言

下面首先簡(jiǎn)單的介紹了MMC,SDSDIO,對(duì)這些名詞有個(gè)概念即可。

從本文開(kāi)始會(huì)重點(diǎn)講講eMMC相關(guān)的內(nèi)容(Linux MMC子系統(tǒng)系列文章介紹的eMMC協(xié)議為:eMMC 5.1協(xié)議),對(duì)eMMC相關(guān)的知識(shí)有了一定的了解之后,后續(xù)文章也會(huì)對(duì)Linux的MMC子系統(tǒng)做一個(gè)介紹,包括MMC子系統(tǒng)的初始化過(guò)程,MMC host驅(qū)動(dòng)與host設(shè)備是如何匹配的,MMC host驅(qū)動(dòng)的基本框架,MMC驅(qū)動(dòng)和MMC卡設(shè)備是如何關(guān)聯(lián)起來(lái)的,MMC子系統(tǒng)是如何實(shí)現(xiàn)塊設(shè)備驅(qū)動(dòng)的等等。

對(duì)于MMC卡,SD卡或者SDIO接口的設(shè)備,Linux MMC子系統(tǒng)同樣適用。

好了,廢話不多說(shuō),下面開(kāi)始本文的內(nèi)容吧。

MMC SD SDIO介紹

MMC

多媒體卡(MMC)全稱Multi Media Card,是由西門(mén)子公司和SanDisk公司于1997年推出的多媒體記憶卡標(biāo)準(zhǔn)。MMC卡尺寸為32mm x 24mm x 1.4mm,它將存儲(chǔ)單元和控制器一同做到了卡上,這種攜帶方便、可靠性高、重量輕的數(shù)據(jù)載體一經(jīng)推出,市場(chǎng)占有率不斷上升,廣泛應(yīng)用于移動(dòng)電話,數(shù)碼相機(jī),MP3等產(chǎn)品。

MMC卡具有MMC和SPI兩種工作模式,MMC模式是默認(rèn)工作模式,具有MMC的全部特性。而SPI模式則是MMC協(xié)議的一個(gè)子集,主要用于低速系統(tǒng)。

SD

SD卡(Secure Digital Memory Card)是一種基于半導(dǎo)體快閃存記憶器的新一代記憶存儲(chǔ)設(shè)備。SD卡是由松下東芝和SanDisk公司于1999年8月共同開(kāi)發(fā)的新一代記憶卡標(biāo)準(zhǔn),已完全兼容MMC標(biāo)準(zhǔn)。SD卡比MMC卡多了一個(gè)進(jìn)行數(shù)據(jù)著作權(quán)保護(hù)的暗號(hào)認(rèn)證功能。

SD卡尺寸為32mm x 24mm x 2.1mm,長(zhǎng)寬和MMC卡一樣,只是比MMC卡厚了0.7mm,以容納更大容量的存儲(chǔ)單元。SD卡與MMC卡保持向上兼容,也就是說(shuō),MMC卡可以被新的設(shè)有SD卡插槽的設(shè)備存取,但是SD卡卻不可以被設(shè)有MMC插槽的設(shè)備存取。

SDIO

SDIO全稱為Secure Digital Input and Output,中文名稱為:安全數(shù)字輸入輸出接口。SDIO是在SD標(biāo)準(zhǔn)上定義的一種外設(shè)接口,它使用SD的I/O接口來(lái)連接外圍設(shè)備,并通過(guò)SD上的I/O數(shù)據(jù)接口與這些外圍設(shè)備傳輸數(shù)據(jù)。現(xiàn)在已經(jīng)有很多手持設(shè)備支持SDIO接口,而且許多SDIO外設(shè)也被開(kāi)發(fā)出來(lái),目前常見(jiàn)的SDIO外設(shè)有:WIFI Card、GPS Card、 Bluetooth Card等等。

eMMC介紹

eMMC卡全稱為Embedded Multi Media Card,是MMC協(xié)會(huì)所制定的內(nèi)嵌式存儲(chǔ)器標(biāo)準(zhǔn)規(guī)格。通俗點(diǎn)講,eMMC就是一個(gè)類(lèi)似于SD卡一樣的存儲(chǔ)芯片。eMMC主要應(yīng)用于智能手機(jī)和平板電腦等產(chǎn)品。eMMC在封裝中集成了一個(gè)控制器,提供標(biāo)準(zhǔn)接口來(lái)管理閃存,使得產(chǎn)品開(kāi)發(fā)過(guò)程中不再需要考慮NAND Flash兼容性問(wèn)題和管理問(wèn)題,讓產(chǎn)品開(kāi)發(fā)人員能夠?qū)W⒂诋a(chǎn)品開(kāi)發(fā),縮短產(chǎn)品推向市場(chǎng)的時(shí)間。

eMMC整體結(jié)構(gòu)

eMMC的整體結(jié)構(gòu)如下圖所示:

3432bb26-8f38-11ee-939d-92fbcf53809c.png

Snipaste_2023-10-10_20-35-50

eMMC主要由設(shè)備控制器和存儲(chǔ)陣列組成。設(shè)備控制器主要提供主機(jī)接口和存儲(chǔ)管理功能。

eMMC主機(jī)接口

HOST和eMMC之間的接口連接如下圖所示:

345e8f44-8f38-11ee-939d-92fbcf53809c.png

Linux_MMC子系統(tǒng)_eMMC主機(jī)接口

eMMC與HOST之間的通信涉及的信號(hào)線描述如下:

CLK:時(shí)鐘線上的每個(gè)時(shí)鐘周期,意味著命令線上傳輸了1bit命令,或者數(shù)據(jù)線上完成了1bit或者2bit的數(shù)據(jù)傳輸。時(shí)鐘頻率的范圍為:0~最大時(shí)鐘頻率。

CMD:該信號(hào)線主要用于傳輸HOST到eMMC的command和eMMC到HOST的response。

DAT0~DAT7:用于傳輸數(shù)據(jù)的8bit數(shù)據(jù)線。在上電或者復(fù)位以后,僅僅只有DAT0數(shù)據(jù)線可以用于數(shù)據(jù)傳輸??梢酝ㄟ^(guò)eMMC主機(jī)控制器來(lái)配置eMMC的數(shù)據(jù)總線位寬,eMMC支持的數(shù)據(jù)線寬度有:1bit(DAT0),4bit(DAT0~DAT3),8bit(DAT0~DAT7)。

Data Strobe:該信號(hào)是從eMMC設(shè)備輸出給Host的時(shí)鐘信號(hào),頻率和CLK信號(hào)相同,用于Host進(jìn)行接收數(shù)據(jù)的同步。該信號(hào)只在HS400模式下使用,啟用后可以提高數(shù)據(jù)傳輸?shù)姆€(wěn)定性,省去總線tuning過(guò)程。

HOST和eMMC之間的通信都是以HOST發(fā)送一個(gè)Command給eMMC開(kāi)始的,eMMC對(duì)于收到的不同Command會(huì)做出不同的response,當(dāng)然了eMMC對(duì)于收到的部分Command可以不做response。

聊了這么久的eMMC,到底eMMC長(zhǎng)什么樣,大多數(shù)的eMMC芯片一般是黑色的外觀,來(lái)欣賞下某廠商的eMMC芯片外觀圖:

3473bfc2-8f38-11ee-939d-92fbcf53809c.png

foresee emmc

大多數(shù)的eMMC芯片一般采用BGA封裝,下圖是某廠商的BGA封裝的eMMC芯片引腳圖:

34a24068-8f38-11ee-939d-92fbcf53809c.png

Snipaste_2023-10-11_20-16-29

eMMC接口各個(gè)引腳的輸入輸出類(lèi)型以及相關(guān)描述可以參考下圖進(jìn)行理解:

34cebaf8-8f38-11ee-939d-92fbcf53809c.png

Snipaste_2023-10-11_20-28-18

eMMC存儲(chǔ)陣列

eMMC的存儲(chǔ)陣列是由非易失性的存儲(chǔ)器組成,目前,絕大多數(shù)eMMC芯片內(nèi)部的存儲(chǔ)器都是由Nand Flash組成的。

智能手機(jī)或者其他嵌入式設(shè)備中,可以使用eMMC的存儲(chǔ)陣列來(lái)存放操作系統(tǒng),應(yīng)用數(shù)據(jù)等信息。

eMMC存儲(chǔ)管理

eMMC芯片內(nèi)部的設(shè)備控制器具有存儲(chǔ)管理功能,主要用于對(duì)Nand Flash的管理,包括:擦寫(xiě)均衡,壞塊管理,ECC校驗(yàn)等。相比于直接將NAND Flash連接到Host端,采用eMMC芯片屏蔽了NAND Flash的物理特性,可以減少Host端軟件的復(fù)雜度,讓Host端專(zhuān)注于上層業(yè)務(wù),省去對(duì)NAND Flash進(jìn)行特殊的處理。同時(shí),eMMC通過(guò)使用Cache、Memory Array等技術(shù),在讀寫(xiě)性能上也比NAND Flash要好很多。

eMMC尋址

以前實(shí)現(xiàn)的eMMC協(xié)議(比如eMMC 4.1協(xié)議)采用的是32位域的字節(jié)尋址。這種尋址機(jī)制限制了eMMC的最大容量為2GB。

為了支持更大容量的eMMC,后續(xù)的eMMC協(xié)議(比如eMMC 5.1協(xié)議)增加了sector尋址方式(1 sector=512B)。容量大于2GB的eMMC,都是采用sector尋址的方式。

為了確定eMMC的尋址模式,主機(jī)可以讀取eMMC的OCR寄存器,通過(guò)OCR寄存器的bit[30:29]可以知道eMMC的尋址模式。

eMMC速率模式

隨著eMMC協(xié)議的不斷更新,eMMC總線的速率越來(lái)越高。為了兼容舊版本的eMMC,所有eMMC在上電啟動(dòng)或者Reset后,都會(huì)先進(jìn)入兼容速率模式(Backwards Compatibility with legacy MMC card)。在完成對(duì)eMMC的初始化后,Host可以通過(guò)特定的流程,讓eMMC進(jìn)入其他高速率模式,目前支持以下幾種速率模式。

34f3e490-8f38-11ee-939d-92fbcf53809c.png

Snipaste_2023-10-11_21-09-03

Extended CSD寄存器的HS_TIMING[185],可以配置總線速率模式。

Extended CSD寄存器的BUS_WIDTH[183],可以配置總線寬度和Data Strobe。

在一個(gè)時(shí)鐘周期內(nèi),DAT0~DAT7信號(hào)線上傳輸1個(gè)比特時(shí),就是SDR(Single Data Rate)模式。

在一個(gè)時(shí)鐘周期內(nèi),DAT0~DAT7信號(hào)線上傳輸2個(gè)比特時(shí),就是DDR(Double Data Rate)模式。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 半導(dǎo)體
    +關(guān)注

    關(guān)注

    334

    文章

    27286

    瀏覽量

    218075
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209326
  • 子系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    109

    瀏覽量

    12392
  • emmc
    +關(guān)注

    關(guān)注

    7

    文章

    203

    瀏覽量

    52721

原文標(biāo)題:Linux MMC子系統(tǒng) - 1.eMMC簡(jiǎn)介

文章出處:【微信號(hào):嵌入式那些事,微信公眾號(hào):嵌入式那些事】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux下輸入子系統(tǒng)上報(bào)觸摸屏坐標(biāo)

    ??在 Linux 中,輸入子系統(tǒng)是由輸入子系統(tǒng)設(shè)備驅(qū)動(dòng)層、輸入子系統(tǒng)核心層(Input Core)和輸入子系統(tǒng)事件處理層(Event Ha
    的頭像 發(fā)表于 09-25 08:56 ?2476次閱讀
    <b class='flag-5'>Linux</b>下輸入<b class='flag-5'>子系統(tǒng)</b>上報(bào)觸摸屏坐標(biāo)

    Linux LED子系統(tǒng)詳解

    Linux LED子系統(tǒng)詳解
    的頭像 發(fā)表于 06-10 10:37 ?1539次閱讀
    <b class='flag-5'>Linux</b> LED<b class='flag-5'>子系統(tǒng)</b>詳解

    Windows10內(nèi)置Linux子系統(tǒng)使用

    周?chē)耐瑢W(xué)都已經(jīng)用win10內(nèi)置的Linux子系統(tǒng)了,在堅(jiān)持過(guò)幾個(gè)Linux實(shí)驗(yàn)后,我也懷著好奇心試了一把。
    發(fā)表于 07-26 07:10

    如何使用Linux內(nèi)核中的input子系統(tǒng)

    的 input 子系統(tǒng)下提供的 API 函數(shù)接口,完成設(shè)備的注冊(cè)即可。在本章節(jié)中我們來(lái)學(xué)習(xí)一下如何使用 Linux內(nèi)核中的 input 子系統(tǒng)。
    發(fā)表于 12-29 07:20

    s3c2440 mmc和camera的linux驅(qū)動(dòng)

    本站提供的s3c2440 mmc和camera的linux驅(qū)動(dòng)資料,詳細(xì)講訴了s3c2440 mmc和camera的linux驅(qū)動(dòng)的步驟,希望對(duì)你的學(xué)習(xí)有所幫助。
    發(fā)表于 05-25 15:53 ?54次下載
    s3c2440 <b class='flag-5'>mmc</b>和camera的<b class='flag-5'>linux</b>驅(qū)動(dòng)

    基于Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究

    Linux因其完全開(kāi)放的特性和穩(wěn)定優(yōu)良的性能深受歡迎,當(dāng)推出了內(nèi)核輸入子系統(tǒng)后,更方便了嵌入式領(lǐng)域的驅(qū)動(dòng)開(kāi)放。介紹了Linux的設(shè)備驅(qū)動(dòng)基礎(chǔ),詳細(xì)闡述了基于Linux內(nèi)核輸入
    發(fā)表于 09-12 16:38 ?23次下載

    Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究

    Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究
    發(fā)表于 10-31 14:41 ?14次下載
    <b class='flag-5'>Linux</b>內(nèi)核輸入<b class='flag-5'>子系統(tǒng)</b>的驅(qū)動(dòng)研究

    詳細(xì)了解Linux設(shè)備模型中的input子系統(tǒng)

    linux輸入子系統(tǒng)linux input subsystem)從上到下由三層實(shí)現(xiàn),分別為:輸入子系統(tǒng)事件處理層(EventHandler)、輸入
    發(fā)表于 05-12 09:04 ?1045次閱讀
    詳細(xì)了解<b class='flag-5'>Linux</b>設(shè)備模型中的input<b class='flag-5'>子系統(tǒng)</b>

    Embeded linux中的MMC驅(qū)動(dòng)

    Embeded linux中的MMC驅(qū)動(dòng)
    發(fā)表于 05-14 16:08 ?1156次閱讀
    Embeded <b class='flag-5'>linux</b>中的<b class='flag-5'>MMC</b>驅(qū)動(dòng)

    Windows 子系統(tǒng)助力 Linux 2.0

    Windows 子系統(tǒng)助力 Linux 2.0
    的頭像 發(fā)表于 01-04 11:17 ?648次閱讀

    Linux系統(tǒng)中NFC子系統(tǒng)架構(gòu)分析

    目前在Linux系統(tǒng)中,每個(gè)廠家都使用不同的方式實(shí)現(xiàn)NFC驅(qū)動(dòng),然后自己在應(yīng)用層上面做適配。但是Linux也已經(jīng)推出NFC子系統(tǒng),很多廠家也逐步在統(tǒng)一。
    發(fā)表于 01-04 14:01 ?2036次閱讀

    linux-usb子系統(tǒng)的核心描述

    本文將描述linux-usb子系統(tǒng)的核心,主要分析其核心的初始化流程,文中源碼基于內(nèi)核版本:4.1.15。
    的頭像 發(fā)表于 01-14 09:37 ?2707次閱讀

    Linux MMC開(kāi)發(fā)指南

    介紹 Linux 內(nèi)核中 SD/MMC 子系統(tǒng)的接口及使用方法,為 SD/MMC 設(shè)備驅(qū)動(dòng)的開(kāi)發(fā)提供參考。
    的頭像 發(fā)表于 03-06 10:21 ?3221次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>MMC</b>開(kāi)發(fā)指南

    Linux內(nèi)核之LED子系統(tǒng)(一)

    Linux內(nèi)核的LED子系統(tǒng)是一種重要的框架,用于管理和控制設(shè)備上的LED指示燈。在嵌入式系統(tǒng)和物聯(lián)網(wǎng)設(shè)備中,LED子系統(tǒng)發(fā)揮著關(guān)鍵作用,為開(kāi)發(fā)者提供了一種統(tǒng)一的方式來(lái)控制和定制LED
    發(fā)表于 10-02 16:53 ?1324次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核之LED<b class='flag-5'>子系統(tǒng)</b>(一)

    Linux clock子系統(tǒng)是什么

    clock子系統(tǒng) Linux的時(shí)鐘子系統(tǒng)由CCF(common clock framework)框架管理, CCF向上給用戶提供了通用的時(shí)鐘接口,向下給驅(qū)動(dòng)開(kāi)發(fā)者提供硬件操作的接口 。各結(jié)構(gòu)體關(guān)系
    的頭像 發(fā)表于 09-27 14:25 ?829次閱讀
    <b class='flag-5'>Linux</b> clock<b class='flag-5'>子系統(tǒng)</b>是什么
    RM新时代网站-首页