emmc波形异常,导致无法写入

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

emmc波形异常,导致无法写入

3,062 Views
yacheng_zhang
Contributor I

因为英文不好,所以只能中文来描述问题。

本人制作了imx6q的核心板,使用的是emmc5.1的芯片,VCCQ和VCC都是3.3V。在实际的测试中发现,只有当imx6q的emmc时钟是13M,系统才能正常启动、读写。如果大于13M,则读写的时候会提示错误。

首先我们排除内核的问题,我们有一块一模一样的6Q核心板,emmc也是同一型号的,但是是其他公司制作的,我们的内核能够正常运行。

回到我们自己制作的核心板,用高速示波器测试发现,在启动阶段mmc时钟400K的电平是3.3V,但是随着初始化结束,mmc的频率提高到13M或者更高,则3.3v会降低到2.0V,从测试结果来看,频率越快,电压降低的幅度越大。以下是我们的原理图,我们更换过clk和cmd上的电阻,但是无效。

emmc.JPG

所以我们想知道,电压幅值降低是不是导致mmc无法正常工作的原因?是什么导致了mmc引脚的电压幅值从3.3V降低到2,0v?如果需要其他的额外信息来进行判断,我可以提供图片,希望技术支持和论坛大佬,能够提提意见,非常感谢! 

 

Labels (1)
0 Kudos
10 Replies

3,042 Views
riteshmpatel
NXP TechSupport
NXP TechSupport

Hi @yacheng_zhang,

I hope you are doing well.

After the voltage drop occurs, does the eMMC initialization completes successfully?
Could you please share the logs when eMMC fails at a frequency greater than 13M?

Thanks & Regards,
Ritesh M Patel

0 Kudos

3,014 Views
yacheng_zhang
Contributor I

yes,The eMMC initialization completes successful.I can see the emmc information.

yacheng_zhang_0-1687748087516.png

When I copy the file, the emmc prompts the following error

emmc-log.JPG

What may be the cause of the problem. Is this related to the PCB? We can provide PCB files.

Thank you

 

 

0 Kudos

3,001 Views
Mestkim
Contributor III

硬件设计:

1. 这个不是问题, 但是指出来一下。 

    VCCQ 没有必要用3.3v, 1.8v 可以支持HS200,HS400 和所有的legacy speed。

     也就是说emmc 的IO 用1.8v总是对的。 

     详见EMMC 的JEDEC spec. bus speed modes 章节

      

2. 目前的设计最有可能的是,协商成了高速模式。 但是IO 供电是3.3v。 emmc 做了切换,所以会量到一个2.0 的间于3.3v 和1.8v的中间电平。但是你们没有提供有用信息。可以cat /sys/kernel/debug/mmc3/ios

拿到协商后的信息。看工作在什么模式下面。 

目前可以在软件上fix 一下模式。 device tree 里面加一下no-1-8-v 。只用legacy speed,i.MX6 也支持到DDR52. 

或者 只作为测试 uboot 的bootargs 加  sdhci.debug_quirks2=0x4 的 no 1v8 的 quirks

  

 

 

0 Kudos

2,992 Views
yacheng_zhang
Contributor I

你好,非常感谢你的回答!

1.我们的核心版参考了其他厂家的硬件设计,vccq使用3.3V,因为我们不需要高速模式.

2.查看设备树配置如下,已经默认添加no-1-8-v,具体参数如下

yacheng_zhang_0-1687759782482.png

3.通过查看 /sys/kernel/debug/mmc3/ios,具体如下,可以看到协商成ddr52,这是我想要的模式;时钟之所以是40M,是我修改内核代码,手动改成40M.

捕获1.JPG

请问我的参数,哪里可能存在不正常的地方?谢谢

0 Kudos

2,956 Views
riteshmpatel
NXP TechSupport
NXP TechSupport

Hi @yacheng_zhang,

One should not manually change or hardcode the eMMC clock. One can specify the speed mode supported in the device tree using various device tree bindings. 

https://github.com/nxp-imx/linux-imx/blob/lf-6.1.y/Documentation/devicetree/bindings/mmc/mmc-control...

Thanks & Regards,
Ritesh M Patel

0 Kudos

2,982 Views
Mestkim
Contributor III

1. 如前面的说的。 不管高速低俗1.8v 都是正确的电压。而且不是不要高速用3.3v。当然可以省一个电压。 

2. 看log的error 要详细看一下layout的等长± 50 mils。 和50ohm 阻抗匹配。

3. 要降频也不用去代码。只要在device tree 里面写上 max-frequency = <26000000>; 硬改代码会带来不必要的,和连自己都不知道的副作用。 

4. 可以试试4bit mode,但是还是要先检查一下等长和阻抗匹配。 

5. 可以调整一下 clock 上的串阻, 如果data上有也可以调整。 

 

0 Kudos

2,944 Views
yacheng_zhang
Contributor I

好的,非常感谢您的建议!

1.我们试过用4bit的方式来读写emmc,如果emmc时钟大于13M,仍然会提示错误.

2.可以确定,我们pcb布线的时候数据线都是等长的;且制板的时候已经向板厂交代阻抗匹配相关信息.但是具体的阻抗参数,我们没有专用的仪器可以验证.

3.我们调整过原理图上data,cmd,clk上的电阻,不管是调大或者调小,但是都无效.

0 Kudos

2,935 Views
Mestkim
Contributor III

1. 可以去问一下emmc 厂家dual voltage (1.8v/3.3v) 那个VCCQ 在3.3v 时候要不要接。或者仔细看一下emmc的手册。 

2. 如果可以rework 板子。 吧VCCQ 改成1.8v

3. 波形量一下 不过意义不大。 因为你说 高速时候3.3v 降到了2.0v。波形应该是不符合要求的。 所以#1 问一下emmc 厂家,3.3v的时候的供电。 

Tags (1)
0 Kudos

2,932 Views
yacheng_zhang
Contributor I

1.我们是参考其他的板子,emmc型号一模一样的,原理图一模一样,其他板子用同样的代码能够正常运行.

2.有考虑过vccq的问题,我们尝试将3.3V的vccq调整到1.8V,emmc的时钟可以到达40M,读写都是没问题,但是不能到达52M;但是示波器看波形也不太好,测量的时候非常容易受干扰.看手册,vccq关系到emmc的io电压,emmc从3.3V降到2V,这个2v对于1.8V来说,就是有效电压1.2V对于3.3v来说,其实是0电平.

0 Kudos

2,923 Views
Mestkim
Contributor III

那除了layout ,pcb的板材,制程。没有其他原因了。

0 Kudos