最近在调试zynq上适配EMMC(MTFC8GACAAAM-1M),文件系统的时候出现了这样的问题:
同样的板卡做出来了十块,其中九块板卡emmc正常,还有一块板卡emmc死活传输失败。
失败现象:
1、裸机测试正常,上vx系统后emmc传输一两页数据后失败,然后重新传输。
2、硬件测试了波形、数据线、时钟线等等。
然后我们小组的几个人一起加班搞了一周最后都没啥希望了,硬件、软件都是一样的就这个板卡要娇贵些。
到了最后才想起来emmc tuning的概念。我下面将对emmc tuning来做一些说明:
eMMC(嵌入式多媒体卡)调优是一种针对嵌入式系统中使用eMMC存储器的优化过程。eMMC是一种集成了闪存存储芯片和控制器的存储解决方案,广泛应用于移动设备、嵌入式系统和消费类电子产品中。
在进行eMMC调优时,目标是优化存储器的性能、稳定性和功耗。
-
时序调整:eMMC存储器使用特定的时序来读取和写入数据。通过调整时序参数,可以优化读取和写入性能。这包括时钟频率、信号延迟、时序间隔等方面的调整。
-
数据预取和缓存配置:eMMC存储器通常具有数据预取和缓存功能,可以提高数据传输效率。通过适当配置预取和缓存设置,可以优化存储器的读取和写入性能。
-
块大小设置:eMMC存储器将数据划分为块进行存储和访问。通过选择合适的块大小,可以提高存储器的性能。较小的块大小适用于小文件和随机读写,而较大的块大小适用于大文件和顺序读写。
-
TRIM命令支持:TRIM命令是一种用于闪存的数据管理命令,可用于提高写入性能和闪存寿命。通过启用和配置eMMC存储器的TRIM支持,可以优化写入性能和闪存擦除过程。
-
垃圾回收和均衡:eMMC存储器在使用过程中会产生垃圾数据和不均衡的数据分布。通过执行垃圾回收和均衡操作,可以优化存储器的性能和寿命。
-
异常处理和错误校正:eMMC存储器可能会出现读取错误、写入错误或其他异常情况。通过实施错误校正机制和异常处理策略,可以提高存储器的可靠性和稳定性。
需要注意的是,具体的eMMC调优步骤和方法可能因存储器厂商、芯片型号、操作系统和应用场景而异。在进行eMMC调优之前,建议参考相关文档、厂商建议或专业资料,以了解适用于特定系统和存储器的最佳实践和调优方法。
上面是概念性的说明:文件描述
第三张图片中频率是0~26Mhz这里是说的是 1,4,8三种情况的时候芯片的自适应频率
但是zynq上面的频率是固定的如果我nyzq输出的频率超过了emmc自己可调整的频率,就会出现emmc读写异常的现象。
参考上面的资料我用简单的大白话来总结一下:
emmc内部的频率是更具外部的电压及频率来匹配的,从而达到芯片性能的最大值,emmc芯片在生产的时候可能会因为硬件上的微小差异造成频率和电压到了但是存储速度没达到理论速度。
但是外部给的时钟和电压是固定的,芯片一直在匹配高于当前性能的频率和电压,所以造成了emmc读写速度更不上,反复重传的现象。
解决这样的办法就是降低emmc的SDIO总线频率。来解决但是具体降低多少基于具体的情况而定。
ps:上面的描述是个人的见解,经供参考。