This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM623:eMMC 测试获取失败、采用某种模式

Guru**** 2422790 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1532184/am623-emmc-test-get-failed-with-some-pattern

器件型号:AM623


工具/软件:

AM6232 上有定制 Yocto 映像。 SD 卡中恢复过来。 正确引导。 我想测试 eMMC 是否存在错误的块。 我使用了下面的脚本来实现这一点。

========================== START ==============================

#!/bin/sh

eMMC_dev=“/dev/mmcblk0
BLOCK_SIZE=512
START_BLOCK=0
TMP_FILE=“/tmp/pattern.bin
log_file=“/tmp/emmc_bad_blocks.log

#检查引导源

boot_dev=$(cat /proc/cmdline | sed -n 's/.*root=\([^]*\).*/\1/p')
回显“Boot device:$boot_dev“

如果[[“$boot_dev"==“==*“mmcblk1"*]]“]];则
回显“从 SD 卡 ($boot_dev) 引导“
暴露
回显“未从 SD 卡引导。 正在中止测试。“
退出 1
和数据

#生成 512 字节测试模式 (0x55AA55AA)
回波“正在生成测试模式...“
>“$TMP_FILE"</s>“
COUNTER=0
while [$counter -lt $((block_size / 4))];do
printf '\X55\XAA\X55\XAA'>>“$TMP_FILE"</s>“
counter=$((counter + 1))
已完成

#获取块总数
Total_Blocks=$(cat /sys/block/mmcblk0/size)
如果[-z “$total_blocks"]“];则
回显“无法确定 eMMC 大小。“
退出 1
和数据

回显“从块$START_BLOCK 到$TOTAL_BLOCKS 开始逐块测试...“
回显“将坏块记录到$LOG_FILE“
>“$LOG_FILE"</s>“

失败=0
TESTED= 0
counter=$start_block

而[$counter -lt $total_blocks ]; do
ECHO “Testing block $counter/$TOTAL_BLOCKs“

#写入图形
DD if=“$TMP_file" of="$EMMC_DEV"“ of="$EMMC_DEV" BS=$BLOCK_SIZE“ BS=$BLOCK_SIZE count=1“ count=1 seek=$counter 2>/dev/null
同步

#读取并验证
dd if=“$EMMC_DEV" BS=$BLOCK_SIZE“ BS=$BLOCK_SIZE count=1 skip=$COUNTER 2>/dev/null | CMP -“$TMP_FILE">“>/dev/null
如果[$? -ne 0 ];然后
回显“块计数器验证失败“| TEE -a “$LOG_FILE"</s>“
失败=$(失败+ 1)
和数据

已测试=$(已测试+ 1)
counter=$((counter + 1))
已完成

回波“"</s>“
回波“测试完成“。
ECHO “测试的总块数:$tested“
回显“故障块总数:$Failed“
echo “登录的坏块:$LOG_FILE“

#清理
rm -f “$TMP_FILE"</s>“

====================== END ========================

此脚本的输出如下所示

******************************** 启动*********************************

root@ETN-cbc9000:~# flash-eMMC-test
正在生成测试模式...
从块 0 到 62160896 开始逐块测试...
将错误模块记录到/tmp/emmc_bad_blocks.log
测试块 0/62160896
测试块 1/62160896
测试块 2/62160896
块计数器验证失败
测试块 3/62160896
块计数器验证失败
测试块 4 / 62160896
块计数器验证失败
测试块 5/62160896
块计数器验证失败
测试块 6/62160896
块计数器验证失败
测试块 7/62160896
块计数器验证失败
测试块 8/62160896
测试块 9/62160896
测试块 10/62160896
块计数器验证失败
测试块 11/62160896
块计数器验证失败
测试块 12/62160896
块计数器验证失败
测试块 13/62160896
块计数器验证失败
测试块 14/62160896
块计数器验证失败
测试块 15/62160896
块计数器验证失败
测试块 16/62160896
测试块 17/62160896
测试块 18/62160896
块计数器验证失败
测试块 19/62160896
块计数器验证失败
测试块 20/62160896
块计数器验证失败
测试块 21/62160896
块计数器验证失败
测试块 22/62160896
块计数器验证失败
测试块 23/62160896
块计数器验证失败
测试块 24/62160896
测试块 25/62160896
测试块 26/62160896
块计数器验证失败
测试块 27/62160896
块计数器验证失败

******************************** 结束日期*************************************

通过块模式:1,2,8,9,16,17,24,25,32,33,40,41,48,49………

另一个块测试失败。

在 AM62x-SK 板中、相同的测试通过。 我没有为定制硬件更改 DTS 文件。

连接原理图以供参考。

/resized-image/__size/320x240/__key/communityserver-discussions-components-files/791/pastedimage1750855402617v2.png

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在 dmesg 上、我发现以下错误

    [71919.793205] mmc0:运行 CQE 恢复
    [71919.798323] mmc0:正在运行 CQE 恢复
    [71919.802992] mmc0:正在运行 CQE 恢复
    [71919.807674] I/O 错误、dev mmcblk0、扇区 0 op 0x1:(write) 标志 0x800 phys_seg 1 prio 类 0
    [71919.816631] dev mmcblk0 上的缓冲区 I/O 错误,逻辑块 0 ,丢失异步页写入

    正在寻找解决此问题的输入。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、我正在领导这项工作。 Parvez 在我的方向上发布了更多详细信息。 我想补充一点。  

    我在这里看到了一些可能相关的材料:

    AM623:定制硬件 — 启动期间 eMMC CQE 恢复 — 处理器论坛-处理器 — TI E2E 支持论坛

    由于 eMMC 存储器损坏是一个至关重要的问题、我们正在系统性地解决这个问题、并正在寻找准确的解决方案。 我们已经仔细检查了所有布线、尽管布线略有不同、但布线看起来与 PhyTech 参考板相同。  

    上述测试基于内核 6.12.24。  

    如果您仔细查看上述 512 字节的块、即在地址中设置了位 2 或位 3 的块。 这在各个块中是一致的。 现在、某些模式不会触发错误、也不会触发错误、然后在第二次尝试后成功或成功。  我认为这可能是一个红色的鲱鱼,但这是值得提及的。 Linux 在这里进行了大量的缓存和排队。  

    现在、我们将了解各种驱动器选项、例如调整速度和禁用 CQE 等、并了解哪些选项可能起作用。  我知道引脚端接设置会影响 DTS(我们在这里的设置应与开发板相同)。   但任何建议都值得赞赏。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为了跟进此问题、在进行广泛的测试(包括将总线大小减小到 1 和 4)后、我们确定这实际上是一个硬件问题、我们对 eMMC 的布线长度不一致。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们确定这实际上是一个硬件问题 — eMMC 的布线长度不一致。  [/报价]

    感谢 Peter 的确认。

    此致

    Ashwani