Other Parts Discussed in Thread: AM62L, TMDS62LEVM
器件型号: AM62L
主题中讨论的其他器件: CSD、 TMDS62LEVM
您好团队、
在检查 eMMC 引导时、我们发现 某些电路板出现问题
我附上了日志,我可能知道失败背后的原因.
Bootissue.log
此致、
Ninad
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.
Other Parts Discussed in Thread: AM62L, TMDS62LEVM
器件型号: AM62L
主题中讨论的其他器件: CSD、 TMDS62LEVM
您好团队、
在检查 eMMC 引导时、我们发现 某些电路板出现问题
我附上了日志,我可能知道失败背后的原因.
Bootissue.log
此致、
Ninad
你好 Ninad J S,
我对答复的延误深表歉意。
据我了解、eMMC 引导故障发生在一些 PCB 上、仅在某些情况下、AM62L ROM 加载程序从 MMCSD0 eMMC 引导。 因此、它可能源于 eMMC 硬件电气接口以及 PCB 布局实现。 根本原因也可能源于 eMMC 分区布局、SDK 等
问题 1: 对于启动失败的 PCB、您是否确定这些 PCB 上安装的 eMMC 硬件接口的所有电气元件都遵循 TI 推荐的 eMMC 原理图 BOM 和检查清单?
问题 2: 您能否在 AM62L 和 eMMC 闪存之间发送 eMMC 硬件接口示意图? 如果您无法在此处提供、请通过私人消息或电子邮件发送。
问题 3 您能否在(成功和失败)引导期间提供一些 eMMC_DAT0、eMMC_CLK、eMMC_CMD 示波器。
问题 4 什么是确切的引导模式[15:0]设置 — 需要知道所使用的 eMMC 引导模式的确切类型?
此外、如果发现有关软件问题(eMMC 存储器布局问题,格式化,分区等)的任何提示、我还会让我们的 Linux eMMC 驱动程序专家对日志进行评论。
我期待您的反馈!
谢谢
此致
Anastas Yordanov
你好 Ninad、
EXT_CSD(卡专用数据寄存器)在 eMMC 存储器端可用。 通常、您应该能够写入 EXT_CSD 可写的 eMMC 硬件接口上的位字段。 请查看 eMMC 闪存的文档中有关相关位字段属性的信息、即它们是可写的、 详细信息等
以下是 EXT_CSD 相关示例线程摘录 、其中显示了 eMMC 闪存。EXT_CSD 寄存器位可写:

这里也是以下 eMMC 相关常见问题解答的 EXT_CSD 相关摘录:常见问题解答 — eMMC 存储器接口 :


谢谢
此致
Anastas Yordanov
您能否判断 这是 EVM 板值?
这来自 eMMC 卡。 由于您能够从 eMMC 引导、因此无需手动向 EXTCSD 写入任何内容。 您报告的问题与 EXTCSD 寄存器无关。
EXTCSD 寄存器中包含所有内容、此时用于从 eMMC 引导。
关于这个问题、我认为它与以下主题中报告的相同
正如另一个线程和这里所指出的、问题也可能是由硬件引起的。 请检查 TI 的原理图。
谢谢!
您好 Prashant、
感谢您及时确认并提示、这可能与 eMMC 硬件电气连接实施密切相关。
Ninad、
请提供所请求的硬件数据吗?
我还有几个问题:
[Q5]如果 eMMC 存储器数据表在公共域中不可用、请提供该数据表。 如果收到保密协议 (NDA)、请使用 E2E 私人消息或我的电子邮件、您无法在此处提供。
问题 6. 在非 ROM 阶段引导时尝试使用的最大 eMMC 速度(最大速度模式)是多少?
我在 AM62Lx 器件勘误表 SR1.0 - SR1.1 中看到了一些有关 AM62L eMMC 引导模式可能问题的提示。 但我将会在 Q1-Q4 详细信息中确认您是否提供了所需的。
Q7 — 您是否检查过隔离式 PCB 样片的 eMMC 信号布线上是否没有不良的焊接连接。
如果您可以根据我的 Q3 提供示波图 — 能否在信号目标点探测信号(如果布局设计允许)-即在 eMMC 存储器侧探测 eMMC_CLK、在 AM62L 侧探测 eMMC_DS 等
谢谢!
此致
Anastas Yordanov
你好 Ninad、
感谢您提供的数据。
1.我认为安装了正确的上拉和下拉电阻器 (我认为您可以保持外部 10k 拉电阻器、无需将数据和命令 I/O 上的上拉电阻器替换为 47k)。 另一个问题来了:您是否有任何串联终端电阻器的占位符、它们尽可能靠近 eMMC 信号源引脚(信号驱动器)。 一个好的方法是使用 0r 个串联电阻值开始测试、并使用示波器探测 eMMC_CLK、eMMC_DAT0-eMMC_DAT7、eMMC_CMD 线路以评估信号完整性。 如果存在过冲/下冲、您可以逐渐将串联电阻增加至 10R、22R、33R、直到信号形状得到改善并保持上升和下降时间仍然可接受。
由于这似乎是一种更复杂的情况(间歇性发生引导故障): 如果可能、我更倾向于根据我的 Q3 设置示波图、因为可以从测量的信号参数中最好地推断出信号完整性图。 我无法排除其他高速信号源可能存在的噪声干扰。
2.我了解在您的电路板上、AM62L ROM 应在 eMMC 交替引导模式((BOOTMODE[15:12]=4b'1000 或 4b'1011、处于 5MHz 的 eMMC_CLK 频率处)引导(请参阅 AM62L 器件勘误表中的 i2465 公告)。 我怀疑在执行 ROM eMMC 引导期间、5MHz 频率可能会发生引导故障。
3.是否可以确认提供的引导日志实际上反映了引导失败?
如果 eMMC 引导成功、您能否提供日志?
4.对于 eMMC HS200 速度模式,应考虑一些 PCB 原理图和布局规则。 请参阅以下 E2E 主题:
Prashant,
请确认我的理解、即使在 AM62L ROM 引导阶段也存在问题、并观察到挂起、因为我能够在日志中看到多个重复的文本片段。 看起来 ROM 代码无法成功运行 U-Boot SPL 多次、并且复位是手动或自动触发 (WDT)。 在结束时、U-Boot SPL 加载并尝试执行 U-Boot.img、但失败。
NOTICE: bl1_plat_arch_setup arch setup [2026-01-06 17:56:00] NOTICE: Booting Trusted Firmware [2026-01-06 17:56:00] NOTICE: BL1: v2.12.0(release):9f56914fa-dirty [2026-01-06 17:56:00] NOTICE: BL1: Built : 13:13:15, Nov 27 2025 [2026-01-06 17:56:00] NOTICE: BL1: dram_class: 11 [2026-01-06 17:56:00] NOTICE: lpddr4: post start - PI training status=0x27c0a000 [2026-01-06 17:56:00] NOTICE: bl1_platform_setup DDR init done [2026-01-06 17:56:00] NOTICE: k3_bl1_handoff ENTERING WFI - end of bl1 [2026-01-06 17:56:01] NOTICE: BL31: v2.12.0(release):9f56914fa-dirty [2026-01-06 17:56:01] NOTICE: BL31: Built : 13:13:15, Nov 27 2025 [2026-01-06 17:56:01] NOTICE: SYSFW ABI: 4.0 (firmware rev 0x000b '11.2.3-v11.02.03 (Fancy Rat)') [2026-01-06 17:56:01] ERROR: Agent 0 Protocol 0x10 Message 0x7: not supported [2026-01-06 17:56:01] [2026-01-06 17:56:01] U-Boot SPL 2025.01-g674977ce0b8d (Dec 17 2025 - 13:20:57 +0000) [2026-01-06 17:56:01] SPL initial stack usage: 1936 bytes [2026-01-06 17:56:01] Trying to boot from MMC0 [2026-01-06 17:56:01] mmc_load_image_raw_sector: mmc block read error [2026-01-06 17:56:01] Partition 1 invalid on device 0 [2026-01-06 17:56:01] spl_register_fat_device: fat register err - -1 [2026-01-06 17:56:01] spl_load_image_fat: error reading image u-boot.img, err - -1 [2026-01-06 17:56:01] SPL: failed to boot from all boot devices [2026-01-06 17:56:01] ### ERROR ### Please RESET the board ### [2026-01-06 17:56:03] NOTICE: bl1_plat_arch_setup arch setup [2026-01-06 17:56:03] NOTICE: Booting Trusted Firmware [2026-01-06 17:56:03] NOTICE: BL1: v2.12.0(release):9f56914fa-dirty [2026-01-06 17:56:03] NOTICE: BL1: Built : 13:13:15, Nov 27 2025 [2026-01-06 17:56:03] NOTICE: BL1: dram_class: 11 [2026-01-06 17:56:03] NOTICE: lpddr4: post start - PI training status=0x27c0a000 [2026-01-06 17:56:03] NOTICE: bl1_platform_setup DDR init done [2026-01-06 17:56:03] NOTICE: k3_bl1_handoff ENTERING WFI - end of bl1 [2026-01-06 17:56:04] NOTICE: BL31: v2.12.0(release):9f56914fa-dirty [2026-01-06 17:56:04] NOTICE: BL31: Built : 13:13:15, Nov 27 2025 [2026-01-06 17:56:04] NOTICE: SYSFW ABI: 4.0 (firmware rev 0x000b '11.2.3-v11.02.03 (Fancy Rat)') [2026-01-06 17:56:04] ERROR: Agent 0 Protocol 0x10 Message 0x7: not supported [2026-01-06 17:56:04] [2026-01-06 17:56:04] U-Boot SPL 2025.01-g674977ce0b8d (Dec 17 2025 - 13:20:57 +0000) [2026-01-06 17:56:04] SPL initial stack usage: 1936 bytes [2026-01-06 17:56:04] Trying to boot from MMC0 [2026-01-06 17:56:04] mmc_load_image_raw_sector: mmc block read error [2026-01-06 17:56:04] Partition 1 invalid on device 0 [2026-01-06 17:56:04] spl_register_fat_device: fat register err - -1 [2026-01-06 17:56:04] spl_load_image_fat: error reading image u-boot.img, err - -1 [2026-01-06 17:56:04] SPL: failed to boot from all boot devices [2026-01-06 17:56:04] ### ERROR ### Please RESET the board ###
谢谢
此致、
Anastas Yordanov
2.我了解在您的电路板上、AM62L ROM 应在 eMMC 交替引导模式((BOOTMODE[15:12]=4b'1000 或 4b'1011、处于 5MHz 的 eMMC_CLK 频率处)引导(请参阅 AM62L 器件勘误表中的 i2465 公告)。 我怀疑在执行 ROM eMMC 引导期间、5MHz 频率可能会发生引导故障。
因此、我们应该做些什么改变或做些什么呢?
谢谢你
尊敬的 Anastas:
您是否要确认我的理解、即使在 AM62L ROM 启动阶段也存在问题、并观察到挂起、因为我能够在日志中看到多个重复的文本片段。 看起来 ROM 代码无法成功运行 U-Boot SPL 多次、并且复位是手动或自动触发 (WDT)。 在结束时、U-Boot SPL 加载并尝试执行 U-Boot.img、但失败。
问题源自 A53 SPL 加载 A53 U-Boot (u-boot.img)、这是在 ROM 执行之后的。 这是 U-Boot 本身中的一个问题。 理想情况下、问题应该仅来自硬件、但我们可以尝试在 U-Boot 中添加更多调试功能、并查看这是否有帮助。
NOTICE: bl1_plat_arch_setup arch setup [23.673] NOTICE: Booting Trusted Firmware [0.000] NOTICE: BL1: v2.12.0(release):2e577e283 [0.000] NOTICE: BL1: Built : 10:14:50, Jan 8 2026 [0.000] NOTICE: BL1: dram_class: 11 [0.000] NOTICE: lpddr4: post start - PI training status=0x27c0a000 [0.026] NOTICE: bl1_platform_setup DDR init done [0.000] NOTICE: k3_bl1_handoff ENTERING WFI - end of bl1 [0.527] NOTICE: BL31: v2.12.0(release):2e577e283 [0.027] NOTICE: BL31: Built : 10:14:52, Jan 8 2026 [0.000] NOTICE: SYSFW ABI: 4.0 (firmware rev 0x000b '11.2.3-v11.02.03 (Fancy Rat)') [0.095] ERROR: Agent 0 Protocol 0x10 Message 0x7: not supported [0.042] [0.000] U-Boot SPL 2025.01-00603-g674977ce0b8d-dirty (Jan 12 2026 - 15:26:03 +0530) [0.023] SPL initial stack usage: 1936 bytes [0.000] Trying to boot from MMC0 [0.057] CMD_SEND:0 [0.000] ARG 0x00000000 [0.000] MMC_RSP_NONE [0.000] CMD_SEND:8 [0.000] ARG 0x000001aa [0.000] RET -110 [0.000] CMD_SEND:55 [0.000] ARG 0x00000000 [0.000] RET -110 [0.000] CMD_SEND:0 [0.000] ARG 0x00000000 [0.000] MMC_RSP_NONE [0.000] CMD_SEND:1 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R3,4 0x40ff8080 [0.000] CMD_SEND:1 [0.000] ARG 0x40300080 [0.000] MMC_RSP_R3,4 0x40ff8080 [0.000] CMD_SEND:1 [0.000] ARG 0x40300080 [0.000] MMC_RSP_R3,4 0xc0ff8080 [0.000] CMD_SEND:2 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R2 0x45010044 [0.000] 0x47343030 [0.000] 0x3801f3c7 [0.042] 0x2e392c00 [0.000] [0.000] DUMPING DATA [0.000] 000 - 45 01 00 44 [0.000] 004 - 47 34 30 30 [0.000] 008 - 38 01 f3 c7 [0.000] 012 - 2e 39 2c 00 [0.000] CMD_SEND:3 [0.000] ARG 0x00010000 [0.000] MMC_RSP_R1,5,6,7 0x00000500 [0.000] CMD_SEND:9 [0.000] ARG 0x00010000 [0.000] MMC_RSP_R2 0xd00f0032 [0.000] 0x8f5903ff [0.000] 0xffffffef [0.000] 0x8a404000 [0.000] [0.000] DUMPING DATA [0.000] 000 - d0 0f 00 32 [0.000] 004 - 8f 59 03 ff [0.000] 008 - ff ff ff ef [0.000] 012 - 8a 40 40 00 [0.000] CMD_SEND:7 [0.019] ARG 0x00010000 [0.000] MMC_RSP_R1,5,6,7 0x00000700 [0.000] CMD_SEND:8 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.015] CMD_SEND:6 [0.000] ARG 0x03b70200 [0.055] MMC_RSP_R1b 0x00000800 [0.000] CMD_SEND:13 [0.000] ARG 0x00010000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CURR STATE:4 [0.000] CMD_SEND:6 [0.000] ARG 0x03b90200 [0.000] MMC_RSP_R1b 0x00000800 [0.000] CMD_SEND:13 [0.000] ARG 0x00010000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CURR STATE:4 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.041] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.041] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.041] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.042] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:21 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:8 [0.000] ARG 0x00000000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.044] CMD_SEND:6 [0.000] ARG 0x03b34900 [0.000] MMC_RSP_R1b 0x00000800 [0.000] CMD_SEND:13 [0.000] ARG 0x00010000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CURR STATE:4 [0.000] CMD_SEND:16 [0.000] ARG 0x00000200 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:17 [0.000] ARG 0x00001000 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:16 [0.000] ARG 0x00000200 [0.000] MMC_RSP_R1,5,6,7 0x00000900 [0.000] CMD_SEND:18 [0.000] ARG 0x00001000 [0.000] RET -70 [0.000] mmc_load_image_raw_sector: mmc block read error [0.000] CMD_SEND:16 [0.000] ARG 0x00000200 [0.060] RET -110 [0.000] CMD_SEND:16 [0.000] ARG 0x00000200 [0.000] RET -110 [0.000] CMD_SEND:16 [0.000] ARG 0x00000200 [0.000] RET -110 [0.000] CMD_SEND:16 [0.000] ARG 0x00000200 [0.000] RET -110 [0.000] CMD_SEND:16 [0.000] ARG 0x00000200 [0.000] RET -110 [0.000] CMD_SEND:16 [0.000] ARG 0x00000200 [0.000] RET -110 [0.000] CMD_SEND:16 [0.000] ARG 0x00000200 [0.000] RET -110 [0.000] CMD_SEND:16 [0.000] ARG 0x00000200 [0.000] RET -110 [0.000] CMD_SEND:16 [0.000] ARG 0x00000200 [0.000] RET -110 [0.000] CMD_SEND:16 [0.000] ARG 0x00000200 [0.000] RET -110 [0.000] Partition 1 invalid on device 0 [0.030] spl_register_fat_device: fat register err - -1 [0.000] spl_load_image_fat: error reading image u-boot.img, err - -1 [0.000] SPL: failed to boot from all boot devices [0.000] ### ERROR ### Please RESET the board ###
嗨、Ninad、
关于我最初提供给您的硬件指南:
“1. 我认为安装了正确的上拉和下拉电阻器 (我认为您可以保留外部 10k 拉电阻器、无需将数据和 I/O 上的上拉电阻器替换为 47k)。 另一个问题来了:您是否有任何串联终端电阻器的占位符、它们尽可能靠近 eMMC 信号源引脚(信号驱动器)。 一个好的方法是使用 0r 个串联电阻值开始测试、并使用示波器探测 eMMC_CLK、eMMC_DAT0-eMMC_DAT7、eMMC_CMD 线路以评估信号完整性。 如果存在过冲/下冲、您可以逐渐将串联电阻增加至 10R、22R、33R、直到信号形状得到改善、并保持上升和下降时间仍可接受。“
我必须纠正自己如下:
正确、最好使用 47k CMD 和 eMMC_DAT0 外部上拉电阻值为 47k Ω、因为 10k Ω 是 JEDEC eMMC 建议的最小上拉电阻值、并避免任何负容差百分比问题。
这符合以下 文件的第 25 页中的设计说明:sprcal9\TMDS62LEVM 设计文件包 Altium (Rev B)\PROC180\PROC181E1_1\1_schematic\3_PDF_Intelligent\PROC181E1-1_S_SCH_Altium With_Design_Updates..Notes_V1.0.pdf

对于 eMMC_DAT1 - eMMC_DAT7 线路、请确保启用内部上拉电阻器。 同样、将一个 10k Ω 下拉电阻连接到更靠近 eMMC 存储器 eMMC_CLK 输入的位置、并在更靠近 AM62L 处理器 eMMC_DS 输入的位置连接一个 10k Ω 下拉电阻。
根据 TMDS64LEVM 原理图和原理图审阅检查清单、实际上需要在尽可能靠近信号源(AM62L eMMC_CLK 输出引脚)的位置、仅为 eMMC_CLK 时钟线路的串联终端电阻器提供一个占位符。 您应该从 0R 电阻器开始、并逐渐增加该值 (3R3、4R7、10R、22R、33R...) 或其他标准化低电阻值、直到时钟在平坦区域具有可忽略的振铃效应(过冲/下冲)。 同时、应遵循最高频率 (200MHz) 上升和下降时间的建议、不允许更高的串联电阻值将 eMMC 时钟上升/下降时间增加到允许的最大值以上。
以下是 AM62L 原理图审阅检查清单的 MMC0 - eMMC(嵌入式多媒体卡)接口一节的摘录


请提供所用测量设备的详细信息、前提是要求的详细信息可在此处披露。
谢谢你
此致
Anastas Yordanov
A53 SPL 将 u-boot.img 从 eMMC 存储器读取到 RAM 时、eMMC_CLK 频率是多少? 是 25MHz 还是更高?
默认情况下、eMMC 在 HS200 中初始化、因此为 200MHz。
Successfull boot
在比较非工作日志和工作日志时、第一个差异出现在以下位置

这是为了读取 u-boot.img 而启动的 CMD18。 在不工作的情况下、此命令失败、并出现通信错误(–70)。 我在软件中看不到可能导致此问题的任何内容。 假设您仅使用最新版本、MMC 驱动程序在最新版本中非常稳定。
在这个注意事项上、您能否确认所使用的 SDK 版本准确无误?
日志显示 U-Boot 版本如所示
U-Boot SPL 2025.01-00603-g674977ce0b8dirty (1 月 12 日 2026 - 15:26:03 +0530)
提交“674977ce0b8d"不“不存在于`ti-u-boot`存储库中、它必须来自您在源代码中所做的更改。 我可以说、 U-Boot 版本基于 SDK v11.1 中的 U-Boot 版本(标签:11.01.16)。
如果确实如此、请确认您是否对 MMC 驱动程序进行了任何更改? 此外、您是否也使用最新的 SDK 进行了测试?
除非对 MMC 驱动程序进行一些自定义更改、
问题应主要由硬件引起。 请查看建议的原理图更改、看看这样是否解决了问题。
e2e.ti.com/.../TISPL.zip
如果您无法获得.bin 文件
您是否可以接受 PM 请求、以便我可以与您共享驱动器链接
谢谢你
我没有看到从提供的`tispl.bin`中提取的 dtb 的 eMMC 节点有任何差异。 因此、从 eMMC 的角度来看、您与 SDK v11.1 具有相同的基准。
现在、我只能建议在 HS 模式下初始化 eMMC、这样不会导致问题
diff --git a/dts/upstream/src/arm64/ti/k3-am62l3-evm.dts b/dts/upstream/src/arm64/ti/k3-am62l3-evm.dts
index 03a62341846..0f95267d537 100644
--- a/dts/upstream/src/arm64/ti/k3-am62l3-evm.dts
+++ b/dts/upstream/src/arm64/ti/k3-am62l3-evm.dts
@@ -645,6 +645,7 @@
&sdhci0 {
/* eMMC */
+ /delete-property/ ti,otap-del-sel-hs200;
non-removable;
pinctrl-names = "default";
pinctrl-0 = <&main_mmc0_pins_default>;
你好 Ninad、
根据 Prashant 的评论、eMMC_CLK 频率< 52MHz 时没有引导问题。
为了识别 SDMMC0 高速下的任何潜在硬件问题、可以执行以下步骤:
硬件团队是否可以通过某种方法在尽可能靠近 AM62L eMMC_CLK 引脚的位置添加一个串联端接电阻器?
提供串联电阻器后、请 在 U-Boot 阶段 (52MHz) 测试时钟信号、使用 足够好的探头和示波器((BW >=<xmt-block2> 400MHz</xmt-block> - 1GHz、2Gsmps/s 或更多) 并 400MHz并尽可能靠近 eMMC 闪存的 CLK 输入端。 请从低串联电阻值开始、即 3R3、观察 时钟脉冲的正/负平坦区域是否存在任何绝对值 (> 0.2V) 的下冲/过冲。 请增加串联电阻值 (4R7、10R、22R、33R)、直到摆动降至 0.1V - 0.2V 以下。同时测量 eMMC_CLK t_RISE、并确保仅在 t_RISE 满足要求 t_rise_eMMC_clk < t_rise_eMC_clk_ max 时增大串联电阻
为消除任何噪声源的影响、请求的 eMMC_DAT0 和 eMMC_CMD 信号的示波图将是一个加号。
请告诉我您的初步观察结果、我们可以优化设置。
谢谢
此致、
Anastas Yordanov
嗨、Ninad、
[引述 userid=“677845" url="“ url="~“~/support/interface-group/interface/f/interface-forum/1603454/am62l-emmc-boot-failure-in-some-boards/6189554您好、如果原理图中有问题、它如何在 200MHz 的内核中正常工作?
到目前为止、我们在 52MHz 内核和 200MHz 内核中遇到了任何 uboot 问题
[/报价]答 1。 遗憾的是、eMMC 时钟信号完整性问题可能会影响引导和读取/写入数据。 如何 — eMMC 存储器检测到一些杂散时钟转换。 要评估这种“潜力“,我需要有 52MHz 时钟示波器与改进的测量设备((如果可能 — 使用至少一个 200MHz 2GSa/s 示波器)和正确的设置 — 一个探头与接地弹簧和 200MHz BW。 如果没有更好的示波器、请提供第二个示波器、测量 10 或 50MHz 参考振荡器的输出。 在 25MHz 示波器图中、我看到过冲/下冲、这可能仍然不超过 VIH_min 和 ViL_max 阈值、不会导致虚假 eMMC 存储器时钟转换 、但在 52MHz 和更高频率下、这可能会发生变化。 出现意外反射(过冲和下冲)的另一个结果是、超出 AM62L eMMC CLK 输出电压的绝对最大额定值。
A2。 eMMC_CLK 信号布线旁边没有 0r 个串联终端电阻器占位符、这与 TI 原理图审阅检查清单和定制电路板硬件设计指南针对 AM62L eMMC 接口建议的内容相矛盾。 我将在内部与我们的信号完整性专家进行讨论。
这些值的决定依据是什么? 我们可以测试的其他可能值有哪些 ? 为什么<0x6>处于默认状态
正如 Prashant 所说、 eMMC HS200 模式下的访问操作需要精确的时序。 对于这种高速模式、 在软件中执行自动调优、以找到合适的 Rx(输入)时钟抽头延迟值。 对于所选的 HS200 模式、需要 在位字段 MMCSD0:MMC_SSCFG_PHY_CTRL_4_REG [16:12]OTAPDLYSEL 中手动设置一个固定 Tx(输出)时钟抽头延迟值= 0x6、这似乎是上述 Linux DTS 行的结果。
请与本节中的 MMCSD/MMC0 - AM62L DS 的 eMMC/SD/SDIO 接口

谢谢
此致
Anastas Yordanov
您好、
与提到的解决方法类似、我们删除了属性 (ti、otap-del-sel-HS200) 并保留为开机关闭测试、现在不会解决先前的问题、但在内核中有时引导失败、出现以下错误
[ 3.718850] mmc0:使用 ADMA 64 位的 fa10000.mmc [fa10000.MMC]上的 SDHCI 控制器
[ 3.794027] sdhci-am654 fa10000.mmc:找不到、调整失败
[ 3.800788] mmc0:调整执行失败:–1
[ 3.805171] mmc0:初始化 MMC 卡时出现错误–1
[ 3.926328] sdhci-am654 fa10000.mmc:找不到、调整失败
[3.933076] mmc0:调整执行失败:–1
[3.937450] mmc0:初始化 MMC 卡时出现错误–1
[ 4.063372] sdhci-am654 fa10000.mmc:找不到、调谐失败
[ 4.070095] mmc0:调优执行失败:–1
[ 4.074480] mmc0:初始化 MMC 卡时出现错误–1
[4.250761] sdhci-am654 fa10000.mmc:找不到、调整失败
[4.257475] mmc0:调优执行失败:–1
[4.261834] mmc0:初始化 MMC 卡时出现错误–1
[4.268345] mmc0:无法初始化不可拆卸的卡
[ 5.200499] sdhci-am654 fa00000.mmc:开机失败
[ 5.241633] mmc1:使用 ADMA 64 位的 fa00000.mmc [fa00000.MMC]上的 SDHCI 控制器
[ 5.249430]正在等待根设备/dev/mmcblk0p2...
你好 Ninad、
我不熟悉构建的 Linux 内核和适用的补丁。
根据日志、我可以得出以某种方式 AM62L U-Boot 从 eMMC 存储器引导 Linux 内核 在 HS200 模式下不稳定 。
我认为、删除设备树初始化: (TI、OTAP-DEL-SEL-HS200)=<0x6>不应修复问题、因为在这种情况下、我认为在 HS200 模式下无法保证可重复的精确 eMMC 自动调优。 因此、并非总是能够在 HS200 模式下成功引导内核。 我没有其他价值建议。
[引述 userid=“531297" url="“ url="~“~/support/interface-group/interface/f/interface-forum/1603454/am62l-emmc-boot-failure-in-some-boards/6188095所以这将引导 eMMC 与 52MHz 在 U 引导,然后在内核中它将是 200MHz 的前面我是正确的?
正确。
该补丁基本上会禁用 HS200 模式、因此这不是一个修复方法、而只是一种权变措施。 对于该修复、需要确定 HS200 模式下故障的根本原因、这是未知的。
[/报价]我不确定是否理解。 我是否可以认为、 在 DTS 中恢复:(TI、OTAP-DEL-SEL-HS200)=<0x6>会导致 A53 SPL 重复并在 52MHz 处成功引导 U-Boot(PHY 调优不相关)、U-Boot 成功并在 HS200 处重复引导 Linux
或
在 eMMC_CLK 频率= 52MHz 的情况下、A53 SPL 仍无法启动 U-Boot.img?
请澄清!
谢谢
此致
Anastas Yordanov
如果我们删除属性 (ti、otap-del-sel-HS200)=<0x6> u boot 在 52MHz 和 200MHz 中的内核中工作、但有时仍会发生不同的错误
[ 3.718850] mmc0:使用 ADMA 64 位的 fa10000.mmc [fa10000.MMC]上的 SDHCI 控制器
[ 3.794027] sdhci-am654 fa10000.mmc:找不到、调整失败
[ 3.800788] mmc0:调整执行失败:–1
[ 3.805171] mmc0:初始化 MMC 卡时出现错误–1
[ 3.926328] sdhci-am654 fa10000.mmc:找不到、调整失败
[3.933076] mmc0:调整执行失败:–1
[3.937450] mmc0:初始化 MMC 卡时出现错误–1
[ 4.063372] sdhci-am654 fa10000.mmc:找不到、调谐失败
[ 4.070095] mmc0:调优执行失败:–1
[ 4.074480] mmc0:初始化 MMC 卡时出现错误–1
[4.250761] sdhci-am654 fa10000.mmc:找不到、调整失败
[4.257475] mmc0:调优执行失败:–1
[4.261834] mmc0:初始化 MMC 卡时出现错误–1
[4.268345] mmc0:无法初始化不可拆卸的卡
[ 5.200499] sdhci-am654 fa00000.mmc:开机失败
[ 5.241633] mmc1:使用 ADMA 64 位的 fa00000.mmc [fa00000.MMC]上的 SDHCI 控制器
[ 5.249430]正在等待根设备/dev/mmcblk0p2...
但 Dint 像以前一样面临着任何问题
##错误:未定义“loadbootscript"或“或
** fs_devread 读取错误 — 块
无法设置块设备
**无分区表 — MMC 0 **
找不到分区 MMC 0:2
这些都没有再次发生。
因此,我们尝试删除 DTS 中的“MMC-HS200-1_8v"属性“属性,并尝试测试,但 dint 目前面临任何问题。 这两个属性是否都与内核中的另一个问题引起的问题相关? Prashant Shivhare
你好 Ninad、
所以我们尝试删除 DTS 中的“MMC-HS200-1_8v"属性“属性并尝试测试、但 Dint 到目前为止遇到了任何问题。 这两个属性是否与内核中的另一个问题引起的问题相关?
我不确定是否理解你的最后一条评论。 请确认、一旦 从 DTS 中删除了两个属性 (ti、OTAP-del-SEL-HS200)=<0x6>和 MMC-HS200-1_8v 属性、一切都能重复正常运行?
除此之外,为了从硬件的角度帮助提高这些间歇性引导故障期间的可见性,我需要更详细地说明 — 我需要您提供我之前请求的数据- 52MHz (U-Boot SPL) 阶段和 200MHz(U-Boot 引导内核)阶段的 eMMC_DAT0、eMMC_CMD、eMMC_CLK 的示波图。
Prashant,
您是否有相同的期望,上述属性将被删除?
谢谢
此致
Anastas Yordanov
尊敬的 Anastas:
如果我们删除 U-Boot 中的“ti、OTAP-del-SEL-HS200“属性、它会在 U-Boot 中禁用 HS200、这意味着 eMMC 将在下一个可能的高速模式、即 HS 模式 (52MHz) 中初始化。 完成此更改后、U-Boot 始终会成功工作、这涉及成功引导 Linux 内核。
但是、仅在 U-Boot 中进行更改、因此 Linux 内核仍在默认速度模式 (HS200) 下初始化 eMMC。 在这种情况下、客户报告内核有时无法初始化 eMMC。
现在、如果客户删除了“MMC-HS200-1_8v"属性“属性、则内核还能够枚举 eMMC Always、这与预期的情况类似、因为删除此属性也会有效地禁用内核中的 HS200 模式。
这意味着、当 U-Boot 和 Linux 内核仅在 HS 模式下枚举 eMMC、则所有操作都正常。 但是、如果其中任何一个尝试在 HS200 中枚举 eMMC、则会发生随机故障、这很可能仅表明存在某些电路板问题。
此致、
Prashant
你好 Ninad、
如果有任何误解的话、很抱歉!
现在、我知道 U-Boot 和 Linux 内核都成功重复地引导并以 eMMC_CLK 频率= 52MHz 运行。 这证实了以下假设:某些在> 52MHz 时表现出的高速信号完整性违规(原理图/电路板布局布线/引脚设置)可能会导致 HS200 模式失效。
我希望示波图能够进一步分析。
Prashant,
非常感谢您的详细澄清!
谢谢
此致
Anastas Yordanov
你好 Prashant Shivhare
阐明内核本身在 200MHz 下工作 
此外,我们一直为 eMMC 应力测试长期运行,我们 dint 面临的任何问题.
但是,如果 eMMC 处于 HS200 模式,我们会遇到 U boot 自身主板无法启动的问题,正如我们之前讨论过的。
注意-“ti、otap-del-sel-HS200“ 如果删除、Uboot 可在 200MHz 和电路板启动中工作、但在内核中看到一些故障情况
[4.261834]
[4.268345] mmc0:无法初始化不可拆卸的卡
[ 5.200499] sdhci-am654 fa00000.mmc:开机失败
[ 5.241633] mmc1:使用 ADMA 64 位的 fa00000.mmc [fa00000.MMC]上的 SDHCI 控制器
[ 5.249430]正在等待根设备/dev/mmcblk0p2...
从长远来看
因此,我们删除了 uboot 中的“MMC-HS200-1_8v"属性“属性,现在就像在 uboot 中之前一样, 52MHz 内核在 200MHz 中,但从未在内核和 uboot 中看到过这个问题。
我们的结论意见-
| 外壳 | ti,otap-del-sel-hs200 |
mmc-hs200-1_8v |
U-Boot MMC 速度 | 内核 MMC 速度 | 观察到的结果 |
|---|---|---|---|---|---|
| 1. | 难题 | 难题 | 200MHz | 200MHz | 电路板无法引导、并出现复位错误或 OSPI 映像加载错误 |
| 2. | 已删除 | 难题 | 52MHz | 200MHz | 电路板启动、但mmc0: error -1在内核中的 MMC 初始化期间有时会失败 |
| 3. | 已删除 | 已删除 | 52MHz | 52MHz | 到目前为止、在测试过程中未发现任何问题 |
注意 — 我们添加了细绝缘铜线,在“eMMC CLK 10K 下拉电阻“处进行探测、此时、随着 U boot 中的 200MHz 和内核中的 200MHz、我们在同一问题板中遇到了错误
谢谢您、
等待您对此的意见
此致、
Ninad
您的回复存在不一致之处。
阐明我们的内核在 200MHz 本身的工作原理
您说内核在 HS200 中工作、但您得出的行为表明、如果内核在 HS200 中初始化 eMMC、则存在随机故障。
注意-“ti, OTAP-del-sel-HS200“ 如果这被删除 Uboot 可在 200MHz 和主板启动中工作、但在内核中看到一些失败的情况
如果删除此属性、U-Boot 不会在 HS200 中初始化 eMMC。
我们得出的结论意见-
得出的行为与我之前的回答一致。 如果 U-Boot 或内核在 HS200 中初始化 eMMC、则会出现随机故障。 但是、如果在 HS 模式下初始化 eMMC、则不会出现故障。
[引述 userid=“677845" url="“ url="~“~/support/interface-group/interface/f/interface-forum/1603454/am62l-emmc-boot-failure-in-some-boards/6201607| 3. | 已删除 | 已删除 | 52MHz | 52MHz | 到目前为止、在测试过程中未发现任何问题 |
您必须对内核进行一些更改、以便仅在 HS 模式下初始化 eMMC、否则它将始终尝试在 HS200 中初始化 eMMC。
无论如何、
注意 — 我们在“eMMC CLK 10K 下拉电阻“处添加了薄绝缘铜线、这一点与 U boot 中的 200MHz 和内核中的 200MHz 一起、我们在同一问题板中遇到了错误
您是否认为 HS200 中的此硬件修改没有问题?
我们得出的结论意见-
| 外壳 | ti,otap-del-sel-hs200 |
mmc-hs200-1_8v |
U-Boot MMC 速度 | 内核 MMC 速度 | 观察到的结果 |
|---|---|---|---|---|---|
| 1. | 难题 | 难题 | 200MHz | 200MHz | 电路板无法引导、并出现复位错误或 OSPI 映像加载错误 |
| 2. | 已删除 | 难题 | 52MHz | 200MHz | 电路板启动、但mmc0: error -1在内核中的 MMC 初始化期间有时会失败 |
| 3. | 已删除 | 已删除 | 52MHz | 200MHz | 到目前为止、在测试过程中未发现任何问题 |
请考虑更新后的表
| 2. | 已删除 | 难题 | 52MHz | 200MHz | 电路板启动、但mmc0: error -1在内核中的 MMC 初始化期间有时会失败 |
| 3. | 已删除 | 已删除 | 52MHz | 200MHz | 到目前为止、在测试过程中未发现任何问题 |
如果删除了“ti、otap-del-sel-HS200“、则“MMC-HS200-1_8v"无关紧要“无关紧要、因此这两种情况相同、因此应具有相同的行为。 如果第三种情况的行为与第二种情况不同、则第三种情况必须有一些额外的变化。