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.

[参考译文] AM5728:从 eMMC 硬件引导分区读取错误

Guru**** 2473270 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1462357/am5728-bad-reads-from-emmc-hardware-boot-partitions

器件型号:AM5728

工具与软件:

我最近开始在 eMMC 上使用硬件启动分区。 从/dev/mmcblk1boot 读取[0|1]通常会返回预期的数据。  但有时、执行读操作将返回的数据不是来自/dev/mmcblk1boot0、而是来自/dev/mmcblk1。  使用 hexdump、我可以看到指定的偏移量是正确的、只是数据来自错误的器件节点。     下面是这种情况的一个示例。  我尝试使用 strace 运行 hexdump 以比较好与坏的读取、这两者之间唯一有意义的区别是返回的数据。  我可以看到两者都打开了器件节点/dev/mmcblk1boot0。  该 eMMC 器件也用于另一个非 AM57目标、并且没有同样的行为。  

我的 Linux 内核版本是6.1.38、可以在中编译 CONFIG_MMC_OMAP 和 CONFIG_MMC_OMAP_HS。  是否想过哪些问题可能会导致偶尔出现的不良读取?

良好的阅读:

hexdump -C /dev/mmcblk1boot0 -s 0x3FC000 -n 20.

003fc000 4b D8 fa 7e 42 4F 54 5F 41 5F 4c 45 46 54 3d |k..~boot_a_left=|
003fc010 33 00 42 4F |3.BO|
003fc014

错误读取:

hexdump -C /dev/mmcblk1boot0 -s 0x3FC000 -n 20.

003fc000 51 b9 9a 36 f0 56 e7 C4 D3 36 2b 2d 2c D2 E5 BD |Q.6.V.6+-、...|
003fc010 66 8a 00 98 |f
003fc014

从/dev/mmcblk1的相同偏移量读取

hexdump -C /dev/mmcblk1 -s 0x3FC000 -n 20.

003fc000 51 b9 9a 36 f0 56 e7 C4 D3 36 2b 2d 2c D2 E5 BD |Q.6.V.6+-、...|
003fc010 66 8a 00 98 |f
003fc014

谢谢!

Dave

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

    Dave、您好!

    需要与我们的 MMC 工程师进行沟通。 请预计会有一些响应延迟。 我的脑袋上没有任何东西。

    有几个问题。

    • 是否会在多个器件上发生这种情况?

    • 器件是定制器件还是 TI EVM?
    • 我假设您使用的是最新的 SDK 9.2/3、对吗?

    -若苏厄

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

    您好、Josue:

    我测试的每个器件都会发生这种情况。  该器件是定制的、我们使用 Yocto 从主线存储库中通过 Linux 内核6.1.38构建映像。  如果我能提供任何其他信息、请告知我。

    感谢您的答复。

    -Dave

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

    您是否有 TI EVM? 这在 TI EVM 上是否可重复?

    -若苏厄

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

    很遗憾、我没有。

    -Dave

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

    Dave、

    它是用于 eMMC 引导还是用于其他目的?

    您是否有现成的测试用例/程序?

    -若苏厄

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

    是的、我同时使用 硬件启动分区进行 eMMC 启动、并且启动本身从来就不是问题。  在用户空间中使用 libubootenv 中的 fw_printenv 打印 u-boot env 的内容时发现了此问题。  对于测试用例、可以使用任何应用程序从/dev/mmcblk1boot0.读取来观察读取失败   在我的系统上、/dev/mmcblk1中的地址0处存在非零数据。  如果我使用 hexdump 从/dev/mmcblk1boot0从偏移0开始打印1000字节的数据、最终、在几次读取之后、将返回/dev/mmcblk1中地址0处的数据。  有时、我必须在对 hexdump 的调用之间等待几秒钟才能使问题出现。  其他时候、它会立即发生。

    -Dave

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

    Dave、

    我必须在本地运行一些测试。 请注意、我们的软件版本未验证 eMMC 引导、因此我们的标准支持不支持该引导。 测试会有一些延迟。 感谢您的耐心。

    我将尝试在一周结束之前对其进行测试。

    -若苏厄

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

    谢谢。  如果可以解决问题、则与 eMMC 引导无关。  系统已完全启动、并且在 Linux 中出现错误读取。

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

    我懂了。

    谢谢 Dave。

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

    关于这一问题的最新情况。  Linux 内核5.15没有问题。  我将在平分后发布更新、以缩小问题的原因

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

    真有意思。 这可能会消除 IT 成为硬件问题的可能性。

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

    在读取之间延迟0-2秒似乎对我有用。  如果我在两次读取之间等待20秒、我就会开始看到问题。  您是否能够像以前那样运行环路测试、然后等待20秒、再尝试其他几次读取。  这很可靠地重现了我的问题。

    -Dave

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

    Dave、

    我今天不在办公室。 明天会再来的。

    -若苏厄

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

    Dave、

    我今天没有时间、但我希望能够在星期五之前做到这一点。

    -若苏厄

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

    问题似乎来自 v5.16中的此提交。  我现在要通过合并中的每个提交来查看哪一个导致我的系统上的回归。  可能缺少更新所需的 Kconfig 或设备树设置?

    提交8a73c77c809a7342497b78a2b4555aa40506af94
    合并:316b7eaa932d 348ecd61770f
    作者:Linus Torvalds
    日期:2021年11月1日星期一18:55:12 -0700

    合并 git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc 的标签"mc-v5.16"

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

    此提交导致了回归。   3edf588e7fe00e90d1dc7fb9e599861b2c2cf442

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

    Dave、

    很棒的发现! 在内部、我们怀疑这是 PM 问题。

    恢复该"激进 PM"补丁是否会为您提供预期行为?

    -若苏厄

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

    是的、恢复积极的 PM 补丁确实可以解决问题。  我偶然发现了一个内核邮件列表文章关于相同的修补程序集,但一个不同的问题,不幸的是,修补程序在原来的文章中提到的东西没有解决这个特定的问题。  到目前为止、仅恢复 PM 提交才会执行此操作。

    此处是原始 PM 修复的链接、其中包含返回原始讨论的链接:  lore.kernel.org/.../

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

    谢谢 Dave! 可牢记这一点。 我很高兴您能够解决您的特定问题。

    -若苏厄