eMMC设备无法设别

文章讲述了在基于IntelATOME3950的嵌入式系统中,三星64GBeMMC(KLMCG2KCTA-B041)无法识别的问题。问题根源在于CLK信号的overshoot和undershoot导致CMD初始化失败,解决方法是增加电容和调整补偿电阻以改善信号完整性。
摘要由CSDN通过智能技术生成

问题描述:eMMC设备无法识别

基于Intel ATOM平台的E3950的嵌入式主板,存储搭配三星64GB的eMMC:KLMCG2KCTA-B041

bug描述:

从U盘BOOT进入系统后,找不到eMMC。无法安装系统至eMMC。

Debug过程:

1,首先在设计中搭配该CPU的eMMC分别有Sandisk,ISSI以及Samsung。唯独Samsung的eMMC会出现这种找不到设备的现象。
2,从linnux的打印中可以看出Samsung的eMMC初始化失败。
3,量测eMMC的cmd,复位,以及clk发现samsung Fail时会有如下特征:
在这里插入图片描述
a:Samsung eMMC的CMD在reset的推high后,会拉低一段时间再释放,正常板子的情况是CMD在复位之前推high,而且不会拉低。
b:正常能boot的eMMC,是能够在boot过程中抓到50Mhz的clk的,先是390KHZ的Fpp,然后是50MHZ的Fod,最后是200MHZ的clk。而Samsung的eMMC在量测到390khz的clk后,没有50mhz,直接跳到100khz,而这个时候也是无法识别eMMC device。
4,实验:
a:在eMMC clk的末端加22PF电容到GND。发现可以识别Samsung的eMMC。后面发现有的板子需要上到33pf才能设别到eMMC。
b:CPU端的eMMC Rcomp,调节该补偿电阻,增大至350ohm,发现有效果。有的板子需要增大Rcomp到470ohm,才能识别eMMC。但是重启会有概率丢失。

5,参看apollolake的PDG关于eMMC的design guide,在CLK/CMD/DATA上都有串接10ohm的Rs,旨在抑制overshoot,undershoot。
在这里插入图片描述
Root Cause:
在打cmd 初始化device的时候,clk的波形overshoot,undershoot过大。但是基于经验增加20~33pf在1.8v电平的clk上,对于50MHZ左右的波形,会有帮助。而对于390khz的波形不会有大的影响。

待测量:
1, cmd第一次推high的时候,clk的频率。
如果没有clk或者频率为390khz,
如果推测是root cause是cmd初始化的时候fail的,也就是刚开始推high的时候。那么增加电容改善了此时CLK 的波形。
那么我继续增大电容,会不会有反作用。

正常能识别eMMC主板的CMD以及CLK的波形:
在这里插入图片描述
正常能识别eMMC主板的触发CMD的下降沿,抓到如下图示:
在这里插入图片描述
Fail主板的CMD动作的波形与上附图一样。说明33PF电容影响的是50MHZ CLK的overshoot以及undershoot。

只要50MHZ CLK能推出来,就能抓到eMMC,如下是在clk末端对地接15PF电容的波形:
在这里插入图片描述
这张50MHZ的eMMC CLK可能就处在Fail的边缘。Overshoot,undershoot过大。
下图是将Rcomp改为470ohm,pass的主板的50mhz clk:
在这里插入图片描述
10片里面会有一半的板子,重启会找不到eMMC。所以如上图的50mhz,fail的概率也很大。
总结:
eMMC clk属于单端CLK,而且频率能到50MHZ,200MHZ,所以必须注意其信号完整性的问题。即在eMMC CLK/CMD/DATA处必须预留电阻来抑制信号的overshoot,undershoot。本次案例由于在CPU与eMMC clk之间是直连的,所以只能在eMMC device端,在CLK的过孔处对地接33PF电容。暂时解除主板无法识别Samsung eMMC的bug。
HS200就是最好200M clock,Single data rate,数据速率也是200MB/s
HS400也是最高200M clock,Dual data rate,数据速率400MB/s

DAT0-7
在eMMC上电或者软复位后,只有DAT0可以进行数据传输,完成初始化后,可配置DAT0-3或者DAT0-7进行数据传输,即数据总线可以配置为4bits或者8bits模式。

Data Strobe
Data strobe时钟信号由eMMC发送给Host,频率与CLK信号相同,用于Host端进行数据接收的同步。Data strobe信号只能在HS400模式下配置启用,启用后可以提高数据传输的稳定性,省去总线tuning过程。

怀疑:E3845的eMMC clk的驱动强度弱,而E3950的驱动强度强,导致E3950对于三星eMMC的不兼容?

  • 28
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值