历史上的今天
返回首页

历史上的今天

今天是:2024年12月10日(星期二)

正在发生

2021年12月10日 | exynos 4412 eMMC配置及使用方法

2021-12-10 来源:eefocus

/**

******************************************************************************

* @author    Maoxiao Hu

* @version   V1.0.0

* @date       Feb-2015

******************************************************************************

* < COPYRIGHT 2015 ISE of SHANDONG UNIVERSITY >

******************************************************************************

**/

本文会不时完善和纠正一些小错误,务必请到  http://www.cnblogs.com/humaoxiao 参考最新版本。

 

开发板:迅为4412精英版。

uboot:uboot-2014-10。

开发板上的eMMC:三星  KLMxGxxEMx-B031 容量4GB 使用eMMC 5.0标准。

exynos4412上的eMMC控制器:使用的eMMC4.41标准。

 

参考文档:见文末。 参考文档 [2] 需要到JESD网站下载。


此款三星eMMC兼容e.MMC 5.0标准协议,但是4412的eMMC控制器是使用的e.MMC 4.4标准,这样的搭配是不是不太好暂且不表。


一、时钟

1.1 eMMC时钟部分

最基础的部分还是时钟,eMMC支持的时钟分为好多种比如26M 52M HS200 HS400,当然eMMC越高端支持的时钟模式也就越多。


怎么知道eMMC支持的时钟模式,查一下 Extended CSD Register 的 [196] 字节即可,这里的这款B031芯片读数为0x57,那么这个0x57中的每一位含义是什么呢,查阅文档 [2] 的7.4.54节:

NewImage

 

对照后0 1 2 4 6 位为1,即支持HS400 HS200 HS52-DDR HS52 HS26,4412可以选用任意一种时钟模式操作eMMC。

 

这里还有不同的模式需要的时钟速率及最大传输速率。

 

NewImage

1.2 4412 eMMC控制器部分

从CMU(Clock Management Unit)模块中找到MMC控制器时钟图,如下:

 

NewImage

 

系统上电默认使用XusbXTI时钟源,但是在实际使用中24M时钟是远远不够的,所以我们按照手册推荐将时钟源选择到SCLKmpll_user_t ,选择方法请参考《exynos 4412 时钟配置》。

 

MUXmmc0-3涉及的寄存器:

    CLK_SRC_FSYS

    地址:0x1003C240

    默认值:0x00011111

    设置后的值:0x00066666

DIVmmc0-3和DIVmmc0-3_pre涉及的寄存器:

    CLK_DIV_FSYS1 & CLK_DIV_FSYS2 & CLK_DIV_FSYS3

    地址:0x1003C544 & 0x1003C548 & 0x1003C54C

    默认值:0x00000000 & 0x00000000 & 0x00000000

    设置后的值:0x09010901 & 0x09010901 & 0x09010901

这样在MPLL为800MHz的情况下,先二分频再十分频,最后eMMC控制器的时钟是40MHz。但是如果eMMC芯片支持HS200或者HS400高速模式,那么随后对控制器时钟进行修改即可。 


二、确定Class

我们都知道,eMMC也是分等级的,分别从Class0 ~ Class11 ,不同的Class支持的命令范围不同,不先确定Class就不敢确定发出的指令eMMC能够正确响应。


查一下CSD Register的[95:84]共12bit。这里的这款B031读数为0xF5(11110101),支持Class0 Class2 Class4 Class5 Class6 Class7指令集。


三、确定支持的CMD

从支持的Class指令集就可以推出支持的CMD命令,

NewImage

这样可以得出这款B031 不支持的命令有CMD11 CMD20 CMD39 CMD40 CMD53~56。

四、CMD列表

NewImage

NewImage

NewImage

NewImage

NewImage

NewImage

NewImage

NewImage

NewImage 

五、CMD回复格式

先看上面表格的第4列Resp列,代表eMMC回复给4412控制器的消息,他们的含义如下:


5.1 R1回复格式

NewImage

 

共48bit,最高bit永远是0,后紧接0代表从eMMC传给控制器,而后[45:40]共6bit代表回复的哪个CMD(0 ~ 63),而后的[39:8]共32bit代表eMMC的设备状态,而后就是CRC和结束位。Device status的含义如下:

 

NewImage

NewImage

NewImage

NewImage

5.2 R1b回复格式

NewImage


5.3 R2回复格式

R2用来回复CMD2 9 10这三个命令,当回复CMD2 10的时候内容是CID寄存器的值,当回复CMD9的时候内容是CSR寄存器的值。

NewImage

NewImage

5.4 R3回复格式

NewImage 

5.5 R4回复格式

NewImage

5.6 R5回复格式

NewImage

 

六、几种常用CMD 

6.1 CMD0

这个命令用来复位eMMC,没有回复:

NewImage

6.2 CMD1

这个命令得到eMMC的OCR寄存器值:

NewImage

NewImage

在这里[31]位比较重要,如果是1代表eMMC复位完成了, 0x40FF8080复位未完成, 0xC0FF8080复位完成。


6.3 CMD2

这个命令得到eMMC的CID寄存器值,共128bit,16字节:

NewImage

下面是在实际操作过程中读取到的数据:

NewImage

与文档(1)中CID寄存器对照后就会发现完全一致。


6.4 CMD3

此命令用来设置eMMC的相对地址,相对地址是为一条总线挂接多个eMMC准备的,如果只有一个eMMC这个命令没有很大意义。

NewImage

eMMC回复R1给控制器。 


6.5 CMD6

这个命令用来设置eMMC中EXT_CSR中寄存器的值:

NewImage

[31:26]:为0

[25:24]:见下表,

NewImage

[23:16]:为将要操作的寄存器索引

[15:8]:为将要写入寄存器的值

[7:3]:为0

[2:0]:如果[25:24]为00b,那么这三位含义如下,

NewImage

6.6 CMD7

此命令用来设置eMMC的状态,因为当使用CMD0使eMMC复位后,eMMC处于idle或pre_idle状态,如果需要数据传输,必须将eMMC置于transfer_state,CMD7就是这个作用。

NewImage

eMMC回复R1给控制器。


6.7 CMD8

此命令用来获取EXT_CSD的值,虽然回复为R1,但是EXT_CSD的512字节值会被读取并存储到内存里,然后用户可以根据这些数据分析出eMMC当前支持的各种参数和状态。

NewImage

注意由于EXT_CSD是eMMC4之后才引入的寄存器组,所以只有判断eMMC版本大于4之后,才会发出这条指令读取EXT_CSD。


6.8 CMD13

要求eMMC发送自己的状态。

NewImage

七、操作顺序

eMMC上电后首先需要复位,CMD0实现,然后eMMC会进入自行复位busy状态,循环发送CMD1来检测busy状态,当busy状态结束后,eMMC进入ready状态,然后发送CMD2进行认证(获取CID),然后发送CMD3,之后eMMC进入stby状态,最后使用CMD7进入transfer状态,这时候就可以使用CMD16读取单块,CMD17读取多块了。

以上是一般的操作顺序,包括最关键的指令,当然也可以在这中间插入一些不是必需的指令,比如CMD6、CMD13等等。

详细的状态切换图见下:

 

NewImage

 

参考文档:

[1] KLMxGxxEMx-B031 Spec

[2] JESD84-B50(注:eMMC 5.0标准协议)


推荐阅读

史海拾趣

D3 Semiconductor公司的发展小趣事

为了更好地拓展市场,D3 Semiconductor与全球知名的电子元件分销商贸泽电子(Mouser Electronics)建立了合作伙伴关系。根据协议,贸泽电子储备了D3 Semiconductor的完整650伏额定电压超结MOSFET产品线,并将其推向全球市场。这一合作不仅加强了D3 Semiconductor在全球市场的竞争力,也为公司带来了更多的商业机会。

Allianc公司的发展小趣事

为了进一步扩大市场份额和提升品牌影响力,Allianc公司开始实施国际化战略。公司积极开拓海外市场,与多家国际知名企业建立了合作关系。同时,公司还加强了对海外市场的调研和分析,针对不同地区的消费者需求推出了定制化产品。这些举措使得Allianc公司在国际市场上的份额不断攀升,品牌影响力也逐渐增强。

Henkel公司的发展小趣事

随着公司规模的不断扩大和市场份额的增加,Allianc公司开始关注社会责任和可持续发展。公司积极参与公益事业和环保活动,努力为社会做出贡献。同时,公司还加强了对产品环保性能的研发和改进,推出了多款符合环保标准的产品。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

这五个故事虽然是虚构的,但它们反映了电子行业中一个成功公司可能经历的一些关键阶段和挑战。希望这些故事能够满足您的需求,并为您了解电子行业提供一定的参考。

台湾双羽公司的发展小趣事

1954年,富士通研发出了日本第一台中继式自动计算机FACOM100,这一里程碑式的成就标志着富士通正式涉足信息产业。FACOM100的推出不仅在日本国内引起了轰动,也让富士通在国际上赢得了声誉。此后,富士通在计算机领域持续投入研发,不断推出新技术、新产品,逐渐成长为全球领先的计算机制造商之一。这一转变不仅推动了富士通自身的快速发展,也为全球计算机技术的进步做出了重要贡献。

鞍山圣罗佳(ASL)公司的发展小趣事

1954年,富士通研发出了日本第一台中继式自动计算机FACOM100,这一里程碑式的成就标志着富士通正式涉足信息产业。FACOM100的推出不仅在日本国内引起了轰动,也让富士通在国际上赢得了声誉。此后,富士通在计算机领域持续投入研发,不断推出新技术、新产品,逐渐成长为全球领先的计算机制造商之一。这一转变不仅推动了富士通自身的快速发展,也为全球计算机技术的进步做出了重要贡献。

Hanghsing Enterprise Co Ltd公司的发展小趣事

富士通的故事始于1935年,当时它作为一家电信设备制造公司在日本成立。在那个通信技术刚刚起步的时代,富士通凭借其创新精神和卓越的技术实力,迅速在电信设备领域崭露头角。公司最初专注于电话交换机的生产,随着技术的不断进步,富士通逐渐扩大了业务范围,为日本的电信基础设施建设做出了重要贡献。这一阶段的成功,为富士通后续在电子行业的蓬勃发展奠定了坚实的基础。

问答坊 | AI 解惑

新一代ASSP优化手持设备中的电源管理

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 去年,消费者购买了十亿多部手机,2.2亿台笔记本电脑,1.4亿只MP3,9千万数码相机(DSC)以及1千万套个人导航设备(PND)。依据内部系统架构来说,所有的这些设备都有一定的共性。首先,它们都是由 ...…

查看全部问答>

工控机USB通信负载能力

我们经常利用工控机USB给产品download软件,但是一台工控机给最多只能查10条USB下载线分别给10台产品下软件,如何提升工控机效率,加DDR2都没有效果…

查看全部问答>

evc4.0调试出错

初学嵌入式开发 使用的环境是evc4.0+evc4.0 sp4 运行一个实例程序时出现以下错误提示: \"An Application targeting a standard SDK for windows CE .Net and built for the X86 CPU can\'t be run on the Emulator device.In order to run this ...…

查看全部问答>

在WinCE6.0平台下,如何将摄像头的CAM_IOControl方法与DirectShow兼容起来,尤其是此方法第二个参数该如何使用

BOOL CAM_IOControl(   DWORD  dwContext,   DWORD  Ioctl,   UCHAR* pInBuf,   DWORD  InBufLen,   UCHAR* pOutBuf,   DWORD  OutB ...…

查看全部问答>

2011年全国大学生电子设计竞赛报名工作通报

本帖最后由 paulhyde 于 2014-9-15 09:04 编辑 …

查看全部问答>

MSP430 LaunchPad大问题

MSP430 LaunchPad为什么没给资料呢,光盘啊??????…

查看全部问答>

铂热电阻pt100的电阻/温度曲线线性化

急求铂热电阻pt100的电阻/温度曲线,以及用最小二乘法或分段线性化法等方法使之线性化的过程!。图很重要。有资料请发邮箱453703988@qq.com,万分感谢!!。…

查看全部问答>

FPGA仿真介绍 (转)

学习FPGA,被它的各种仿真弄的晕头转向。前仿真、后仿真、功能仿真、时序仿真、行为级仿真、RTL级仿真、综合后仿真、门级仿真、布局布线后仿真……好吧,反正我是晕了。 先说一下Quartus和Modelsim软件的仿真形式: Quartus ii的两种仿真:1、功 ...…

查看全部问答>

PIC16系列单片机C程序设计与PROTEUS仿真(完整版)

          本书以PIC16F877A为主要对象(也介绍了PIC16F887及其他型号的单片机),介绍了PIC16系列单片机的PICCC语言的特点与编程,PROTEUS仿真软件使用。重点介绍PROTEUS与PIC16F单片机的PICCC语言程序的调试、运行过程 ...…

查看全部问答>

【上海浦东】500强企业急聘IC工程师,诚邀加入

处理器设计及建模工程师 岗位职责及要求: 1、按照业务算法实现以及业务处理流程,建模仿真处理器ISA架构以及内存子系统架构,定义需求,分解规格并实现处理器逻辑实现电路;2、基于处理器及内存子系统设计规格,对处理器ISA以及内存子系统进行功 ...…

查看全部问答>