• Linux MMC子系统 - 1.eMMC简介


    By: Ailson Jack
    Date: 2023.10.21
    个人博客http://www.only2fire.com/
    本文在我博客的地址是:http://www.only2fire.com/archives/160.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。

    微信公众号嵌入式那些事

    前言

    下面首先简单的介绍了MMC,SD和SDIO,对这些名词有个概念即可。

    从本文开始会重点讲讲eMMC相关的内容(Linux MMC子系统系列文章介绍的eMMC协议为:eMMC 5.1协议),对eMMC相关的知识有了一定的了解之后,后续文章也会对Linux的MMC子系统做一个介绍,包括MMC子系统的初始化过程,MMC host驱动与host设备是如何匹配的,MMC host驱动的基本框架,MMC驱动和MMC卡设备是如何关联起来的,MMC子系统是如何实现块设备驱动的等等。

    对于MMC卡,SD卡或者SDIO接口的设备,Linux MMC子系统同样适用。

    好了,废话不多说,下面开始本文的内容吧。

    MMC SD SDIO介绍

    MMC

    多媒体卡(MMC)全称Multi Media Card,是由西门子公司和SanDisk公司于1997年推出的多媒体记忆卡标准。MMC卡尺寸为32mm x 24mm x 1.4mm,它将存储单元和控制器一同做到了卡上,这种携带方便、可靠性高、重量轻的数据载体一经推出,市场占有率不断上升,广泛应用于移动电话,数码相机,MP3等产品。

    MMC卡具有MMC和SPI两种工作模式,MMC模式是默认工作模式,具有MMC的全部特性。而SPI模式则是MMC协议的一个子集,主要用于低速系统。

    SD

    SD卡(Secure Digital Memory Card)是一种基于半导体快闪存记忆器的新一代记忆存储设备。SD卡是由松下、东芝和SanDisk公司于1999年8月共同开发的新一代记忆卡标准,已完全兼容MMC标准。SD卡比MMC卡多了一个进行数据著作权保护的暗号认证功能。

    SD卡尺寸为32mm x 24mm x 2.1mm,长宽和MMC卡一样,只是比MMC卡厚了0.7mm,以容纳更大容量的存储单元。SD卡与MMC卡保持向上兼容,也就是说,MMC卡可以被新的设有SD卡插槽的设备存取,但是SD卡却不可以被设有MMC插槽的设备存取。

    SDIO

    SDIO全称为Secure Digital Input and Output,中文名称为:安全数字输入输出接口。SDIO是在SD标准上定义的一种外设接口,它使用SD的I/O接口来连接外围设备,并通过SD上的I/O数据接口与这些外围设备传输数据。现在已经有很多手持设备支持SDIO接口,而且许多SDIO外设也被开发出来,目前常见的SDIO外设有:WIFI Card、GPS Card、 Bluetooth Card等等。

    eMMC介绍

    eMMC卡全称为Embedded Multi Media Card,是MMC协会所制定的内嵌式存储器标准规格。通俗点讲,eMMC就是一个类似于SD卡一样的存储芯片。eMMC主要应用于智能手机和平板电脑等产品。eMMC在封装中集成了一个控制器,提供标准接口来管理闪存,使得产品开发过程中不再需要考虑NAND Flash兼容性问题和管理问题,让产品开发人员能够专注于产品开发,缩短产品推向市场的时间。

    eMMC整体结构

    eMMC的整体结构如下图所示:

    在这里插入图片描述
    eMMC主要由设备控制器和存储阵列组成。设备控制器主要提供主机接口和存储管理功能。

    eMMC主机接口

    HOST和eMMC之间的接口连接如下图所示:

    在这里插入图片描述
    eMMC与HOST之间的通信涉及的信号线描述如下:

    • CLK:时钟线上的每个时钟周期,意味着命令线上传输了1bit命令,或者数据线上完成了1bit或者2bit的数据传输。时钟频率的范围为:0~最大时钟频率。
    • CMD:该信号线主要用于传输HOST到eMMC的command和eMMC到HOST的response。
    • DAT0-DAT7:用于传输数据的8bit数据线。在上电或者复位以后,仅仅只有DAT0数据线可以用于数据传输。可以通过eMMC主机控制器来配置eMMC的数据总线位宽,eMMC支持的数据线宽度有:1bit(DAT0),4bit(DAT0-DAT3),8bit(DAT0-DAT7)。
    • Data Strobe:该信号是从eMMC设备输出给Host的时钟信号,频率和CLK信号相同,用于Host进行接收数据的同步。该信号只在HS400模式下使用,启用后可以提高数据传输的稳定性,省去总线tuning过程。

    HOST和eMMC之间的通信都是以HOST发送一个Command给eMMC开始的,eMMC对于收到的不同Command会做出不同的response,当然了eMMC对于收到的部分Command可以不做response。

    聊了这么久的eMMC,到底eMMC长什么样,大多数的eMMC芯片一般是黑色的外观,来欣赏下某厂商的eMMC芯片外观图:

    在这里插入图片描述
    大多数的eMMC芯片一般采用BGA封装,下图是某厂商的BGA封装的eMMC芯片引脚图:

    在这里插入图片描述
    eMMC接口各个引脚的输入输出类型以及相关描述可以参考下图进行理解:

    在这里插入图片描述

    eMMC存储阵列

    eMMC的存储阵列是由非易失性的存储器组成,目前,绝大多数eMMC芯片内部的存储器都是由Nand Flash组成的。

    在智能手机或者其他嵌入式设备中,可以使用eMMC的存储阵列来存放操作系统,应用数据等信息。

    eMMC存储管理

    eMMC芯片内部的设备控制器具有存储管理功能,主要用于对Nand Flash的管理,包括:擦写均衡,坏块管理,ECC校验等。相比于直接将NAND Flash连接到Host端,采用eMMC芯片屏蔽了NAND Flash的物理特性,可以减少Host端软件的复杂度,让Host端专注于上层业务,省去对NAND Flash进行特殊的处理。同时,eMMC通过使用Cache、Memory Array等技术,在读写性能上也比NAND Flash要好很多。

    eMMC寻址

    以前实现的eMMC协议(比如eMMC 4.1协议)采用的是32位域的字节寻址。这种寻址机制限制了eMMC的最大容量为2GB。

    为了支持更大容量的eMMC,后续的eMMC协议(比如eMMC 5.1协议)增加了sector寻址方式(1 sector=512B)。容量大于2GB的eMMC,都是采用sector寻址的方式。

    为了确定eMMC的寻址模式,主机可以读取eMMC的OCR寄存器,通过OCR寄存器的bit[30:29]可以知道eMMC的寻址模式。

    eMMC速率模式

    随着eMMC协议的不断更新,eMMC总线的速率越来越高。为了兼容旧版本的eMMC,所有eMMC在上电启动或者Reset后,都会先进入兼容速率模式(Backwards Compatibility with legacy MMC card)。在完成对eMMC的初始化后,Host可以通过特定的流程,让eMMC进入其他高速率模式,目前支持以下几种速率模式。

    在这里插入图片描述

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

    Extended CSD寄存器的BUS_WIDTH[183],可以配置配置总线宽度和Data Strobe。

    在一个时钟周期内,DAT0~DAT7信号线上传输1个比特时,就是SDR(Single Data Rate)模式。

    在一个时钟周期内,DAT0~DAT7信号线上传输2个比特时,就是DDR(Double Data Rate)模式。

    欢迎关注博主的公众号(微信搜索公众号:嵌入式那些事),可以扫描下面的公众号二维码:

    在这里插入图片描述
    如果文中有什么问题欢迎指正,毕竟博主的水平有限。

    如果这篇文章对你有帮助,记得点赞和关注博主就行了^_^。

    排版更好的内容见我博客的地址:http://www.only2fire.com/archives/160.html

    注:转载请注明出处,谢谢!^_^

  • 相关阅读:
    Zabbix监控系统与部署Zabbix5.0监控(系列操作完整版)
    黑神话悟空 虚幻引擎(Unreal Engine)写mod
    Day719. 矢量运算 -Java8后最重要新特性
    基于I/Q数据的5G控制信道盲检
    [附源码]计算机毕业设计springboot汽车美容店管理系统
    R语言生物群落(生态)数据统计分析与绘图教程
    Python 神器!自动识别文字中的省市区并绘图
    许战海战略文库|无增长则衰亡:中小型制造企业增长困境
    浅谈数据结构之链表
    IEEE 802.11ax High-Efficiency WLANs
  • 原文地址:https://blog.csdn.net/jackailson/article/details/133959112