栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

mmc子系统分析

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mmc子系统分析

文章目录
  • 前言
  • 一、MMC子系统介绍
    • 1.1 基本概念
    • 1.2 mmc规范简介
      • 1.2.1 卡的规范
      • 1.2.2 总线的规范
      • 1.2.3 控制器的规范
  • 二、mmc代码分布
  • 三、mmc子系统框架
  • 四、SD总线协议
    • commands
    • card register
    • response
  • 五、初始化流程
  • 总结


前言

本文主要是分析Linux系统中mmc子系统的框架和实现。在linux中,kernel使用MMC subsystem统一管理MMC、SD、SDIO等设备。


一、MMC子系统介绍 1.1 基本概念

MMC是MultiMediaCard的简称,从本质上看,它是一种用于固态非易失性存储的内存卡(memory card)规范[1],定义了诸如卡的形态、尺寸、容量、电气信号、和主机之间的通信协议等方方面面的内容。

从1997年MMC规范发布至今,基于不同的考量(物理尺寸、电压范围、管脚数量、最大容量、数据位宽、clock频率、安全特性、是否支持SPI mode、是否支持DDR mode、等等),进化出了MMC、SD、microSD、SDIO、eMMC等不同的规范(如下面图片1所示)。虽然乱花迷人,其本质终究还是一样的,丝毫未变,这就是Linux kernel将它们统称为MMC的原因。

MMC、SD、SDIO的技术本质是一样的(使用相同的总线规范,等等),都是从MMC规范演化而来;
MMC强调的是多媒体存储(MM,MultiMedia);
SD强调的是安全和数据保护(S,Secure);
SDIO是从SD演化出来的,强调的是接口(IO,Input/Output),不再关注另一端的具体形态(可以是WIFI设备、Bluetooth设备、GPS等等)。

1.2 mmc规范简介

MMC分别从卡(Card Concept)、总线(Bus Concept)以及控制器(Host Controller)三个方面,定义MMC system的行为。

1.2.1 卡的规范

卡的规范主要是规定卡的形状、物理尺寸、管脚、内部block组成,寄存器等。下图是eMMC的示例图:

卡的内部由以下几个block组成:
Memory core,存储介质,一般是NAND flash、NOR flash等。
Memory core interface,管理存储介质的接口,用于访问(读、写、擦除)存储介质。
Card interface(cmd、clk、data),总线接口,外界访问卡内部存储介质的接口,和具体的管脚有关。
Card interface controller,用于访问内部存储介质。
Power模块,提供reset、上电检测等功能。
寄存器,用于提供卡的信息、参数、访问控制等功能。

卡的管脚有Vdd、GND、RST 、CLK、CMD和DATA等,Vdd和GND提供power,RST用于复位,CLK、CMD、DATA为MMC总线协议的物理通道:
CLK一条线,提供同步时钟,可以在CLK的上升沿、下降沿、上升沿河下降沿采集数据;
CMD一条线,用于传输双向的命令。
DATA 1条(1bit)、4条(4bit)、8条(8bit),用于传输双向的数据。

1.2.2 总线的规范 1.2.3 控制器的规范 二、mmc代码分布

drivers/mmc/card 存放卡设备相关的驱动,如MMC/SD卡设备等。

​​drivers/mmc/host 针对不同主机端的SDHC、MMC控制器的驱动。

drivers/mmc/core mmc子系统的核心层,完成了不同协议和规范的实现,为HOST层和设备驱动层提供了接口。

三、mmc子系统框架

mmc子系统款家图

四、SD总线协议

SD总线通信是基于指令和数据比特流,起始位和停止位结束。SD总线通信有三个元素:
command:由host发送到卡设备,使用cmd线发送
response:从card端发送到host端,是对接收到的cmd的回应,也通过cmd线发送;
data:可以从host到card,也可以从card到host,通过data线传输。

commands

四种用于控制卡设备的指令类型,每个command占48bit
1、broadcast commands(bc),no response 广播类型指令,不需要响应;
2、broadcast commands with response(bcr):需要响应的广播类型指令;
3、addressed(pint-to-point) commands(ac):由HOST发送到指定的卡设备,没有数据的传输;
4、address(point-to-point) data transfercommands(adtc):由HOST发送数据到指定卡设备;

card register

主要的寄存器:OCR、CID、CSD、RCA、SCR:
operation condition register(OCR) 32位的OCR包含卡设备支持的工作电压列表;
card identification number register(CID) 用于卡识别的卡信息,包括制造商ID,产品名等;
relative card address regisger(RCA) 存放在卡识别阶段分配的卡地址,缺省地址为0000h;
SD card configuration register(SCR) 配置寄存器,用于配置SD memory的特殊功能;

response

所有的response都经过cmd线发送给HOST端,R4和R5响应是SDIO中特有的
1、R1(normal response command) 用来响应常用指令;
2、R2(CID/CSD register) 用来响应CMD2、CMD10、CMD9,并把CID和CSD寄存器作为响应数据;
3、R3(OCR register) 响应ACMD41指令,并把OCR寄存器作为响应数据;
4、R4(CMD5) 响应CMD5,把OCR寄存器作为响应数据
5、R5(CMD52) CMD52是一个读写寄存器的指令,R5用于返回寄存器数据;
6、R6(pulished RCA response) 分配卡地址的响应;
7、R7(card interface condition) 响应CMD8,返回卡支持的电压信息;

五、初始化流程

此处初始化流程以emmc设备为例。
Linux内核版本:4.9.37

总结

提示:这里对文章进行总结:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/998268.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号