emmc波形异常,导致无法写入 因为英文不好,所以只能中文来描述问题。 本人制作了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上的电阻,但是无效。 所以我们想知道,电压幅值降低是不是导致mmc无法正常工作的原因?是什么导致了mmc引脚的电压幅值从3.3V降低到2,0v?如果需要其他的额外信息来进行判断,我可以提供图片,希望技术支持和论坛大佬,能够提提意见,非常感谢! i.MX6Quad 回复: emmc波形异常,导致无法写入 你好,你这个问题解决了吗, 我这边遇到类似的问题,VCCQ都是接的3.03v 有两块不同的硬件板子,同样的固件在一块板子A上正常存储数据,在另一个板子B上存储不稳定,长期运行数据存储异常,底层读写报错。 Re: emmc波形异常,导致无法写入 那除了layout ,pcb的板材,制程。没有其他原因了。 Re: emmc波形异常,导致无法写入 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电平. Re: emmc波形异常,导致无法写入 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的时候的供电。 Re: emmc波形异常,导致无法写入 好的,非常感谢您的建议! 1.我们试过用4bit的方式来读写emmc,如果emmc时钟大于13M,仍然会提示错误. 2.可以确定,我们pcb布线的时候数据线都是等长的;且制板的时候已经向板厂交代阻抗匹配相关信息.但是具体的阻抗参数,我们没有专用的仪器可以验证. 3.我们调整过原理图上data,cmd,clk上的电阻,不管是调大或者调小,但是都无效. Re: emmc波形异常,导致无法写入 嗨,@yacheng_zhang、
不应手动更改或硬编码 eMMC 时钟。 可以使用各种设备树绑定来指定设备树中支持的速度模式。
https://github.com/nxp-imx/linux-imx/blob/lf-6.1.y/Documentation/devicetree/bindings/mmc/mmc-controller.yaml
谢谢& Regards, Ritesh M Patel Re: emmc波形异常,导致无法写入 1. 如前面的说的。 不管高速低俗1.8v 都是正确的电压。而且不是不要高速用3.3v。当然可以省一个电压。 2. 看log的error 要详细看一下layout的等长± 50 mils。 和50ohm 阻抗匹配。 3. 要降频也不用去代码。只要在device tree 里面写上 max-frequency = <26000000>; 硬改代码会带来不必要的,和连自己都不知道的副作用。 4. 可以试试4bit mode,但是还是要先检查一下等长和阻抗匹配。 5. 可以调整一下 clock 上的串阻, 如果data上有也可以调整。 Re: emmc波形异常,导致无法写入 你好,非常感谢你的回答! 1.我们的核心版参考了其他厂家的硬件设计,vccq使用3.3V,因为我们不需要高速模式. 2.查看设备树配置如下,已经默认添加no-1-8-v,具体参数如下 3.通过查看 /sys/kernel/debug/mmc3/ios,具体如下,可以看到协商成ddr52,这是我想要的模式;时钟之所以是40M,是我修改内核代码,手动改成40M. 请问我的参数,哪里可能存在不正常的地方?谢谢 Re: emmc波形异常,导致无法写入 硬件设计: 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 Re: emmc波形异常,导致无法写入 是的,eMMC 初始化成功,我可以看到 emmc 信息。 复制文件时,emmc 提示以下错误 问题的原因可能是什么?这是否与 PCB 有关?我们可以提供 PCB 文件。 谢谢 Re: emmc波形异常,导致无法写入 嗨,@yacheng_zhang、
希望你一切都好。
电压下降发生后,eMMC 初始化是否成功完成? 当 eMMC 故障频率超过 13M 时,能否共享日志?
谢谢& Regards, Ritesh M Patel
View full article