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.

[参考译文] TDA4VM:可以在 HS200模式下识别 Samsung eMMC 和#39;t

Guru**** 2553450 points
Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1095291/tda4vm-the-samsung-emmc-can-t-be-identified-on-hs200-mode

器件型号:TDA4VM

您好: Shiou Mei、

继续上一个主题: TDA4VM:无法在 HS200模式-处理器论坛-处理器- TI E2E 支持论坛上识别 Samsung eMMC、  

第一个问题是找不到 eMMC。

当尝试再次抓取波形时、无法再现问题。   未连接示波器探头时可以再现该图、而连接探头时无法再现。
探头:我们使用差分探头和信号端探头
是否有办法解决这个问题?


第二个问题与 eMMC 测试有关。

从 eMMC 读取数据:
clk 在 SOC 和 eMMC 之间具有22R 串联电阻、数据具有33R。
以200MHz 测试 eMMC。我们发现设置时间小于1.4ns、不符合要求。
将 clk 中的22R 更改为0r、我们发现设置时间可以满足要求。
可以在某个位置更改延迟或 IO 驱动器吗?

如果 CMD 连接探头、读取数据失败、是否有其他方法可以解决该问题?


将数据写入 eMMC:
clk 在 SOC 和 eMMC 之间具有22R 串联电阻、数据具有33R。
在200MHz 下测试 eMMC。如果数据或 CMD 连接探头、则写入数据失败、是否有其他方法可以解决该问题?


谢谢!

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

    您好:Shiou Mei、

    您能提供一些建议吗?

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

    鲁伊丰

    我收到了你的问题。  将查看您提供的最新信息、并以其他意见/问题回复。

    此致、

    石尾

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

    鲁伊丰

    几个问题:

    22R 串联电阻连接在何处?  通常使用串联端接电阻来避免反射并提高信号完整性; 在您的情况下、如果没有端接电阻器、信号完整性实际上会更好、这是正确的吗?  

    此外、在 HS200模式下、TDA4VM 可动态调整用于数据采集的 CLK、从而以良好的设置/保持裕度捕获数据。  因此、我们的数据表中没有为此特定模式定义时序要求。  您在哪里读取了1.4ns 作为设置要求?   

    至于第一个与未找到的 eMMC 相关的问题、似乎探头负载可能会影响信号。  您能更详细地描述什么是 eMMC 问题吗?   

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

    您好 TI:

    我们希望解决 Samsung eMMC 无法在 HS200模式下尽快识别的问题。(可以 在其他模式下识别。 )

    如果我们在 CMD 行中添加10pF、则 可以在 HS200模式下识别 eMMC。

    我们认为 EMMC AC 或时序 测试问题 可能 与之相关。

    系统启动时,我们可以在安装 eMMC 后的日志中找到 CMD6错误。

    我们使用 示波器来测试 CLK 和 CMD 线路、  安装 eMMC 后 CMD6成功记录在日志中。

     我们认为探头的寄生参数会影响 CLK 和 CMD 的相位。  (我们尝试使用差分探头和信号端探头)

     我们要求 EMMC 制造商进行分析。

    他们发现、CLK 在不连续性之前和之后的波形相位与 CMD 的波形相位相差近180度。

    这违反了 EMMC 规范。

    之前、您希望我们测量 CMD6误差的波形和数据、因为探头会影响 EMMC 的识别。 我们未能成功测量您想要的波形。  

    您是否还有其他一些方法?

    基于上述内容、请向我提供一些修改建议?

    谢谢!!

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

    所有器件都以向后兼容时序开始。  在该速度模式下、CMD 和 DAT 均在 CLK 上升沿进行采样、但信号可以从 CLK 下降沿发起。  在 HS200模式下、CMD 和 DAT 均通过 CLK 上升沿进行采样和启动。   CMD6是用于切换模式的命令、因此这将说明您在 CMD 启动后看到相位变化的原因。

    是的、探针负载确实可能会影响 CLK-DAT 信号。  您是否使用低电容有源探头进行测量?  即使系统在测量过程中也在通过、也请分享您测得的波形。  另请注意测量位置。  如果读取故障、则应在更靠近 TI 处理器的位置进行探测。  如果写入失败、请在更靠近 Samsung eMMC 设备的位置进行探测。

    在前面的注释中、提到了 CLK 通道上的22R 串联电阻和 DAT 通道上的33R。  这些电阻器位于何处?  您能否将这些电阻器替换为0欧姆、并探测波形以了解它们对您的系统的影响?

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

    您好 TI:

    下面是一些要询问的问题。

    所有器件都以向后兼容时序开始。  在该速度模式下、CMD 和 DAT 均在 CLK 上升沿进行采样、但信号可以从 CLK 下降沿发起。  在 HS200模式下、CMD 和 DAT 均通过 CLK 上升沿进行采样和启动。   CMD6是用于切换模式的命令、因此这将说明您在 CMD 启动后看到相位变化的原因。

    在向后兼容的时序模式中,我们发现 CMD  在下降 CLK 边沿上采样,但信号可以从上升 CLK 边沿发出。  

    clk 是400kHz 而不是200MHz、对吧?

     

    想与您确认、TI 驱动程序中的 HS200模式转换是否遵循以下流程?

    如何理解“ 在 HS200模式下,CMD 和 DAT 均通过 CLK 上升沿进行采样和启动。 ”?

     我认为 、当 CMD 和 DAT 线路稳定为高电平或低电平、尽可能靠近器件时、应测量 CLK 输入参数。

    如果  CMD 和 DAT 都是从 CLK 上升沿采样和启动的、,收集的数据是否不稳定?

     对于串联电阻问题,、我们将根据不同状态进行一些测试、并在稍后提供反馈。

    谢谢!!

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

    1.是的、在初始化期间、时钟仅以400kHz 的频率运行。  在您的捕获中、DAT/CMD 从上升沿时钟而不是下降沿 CLK 启动。  

    A. 您何时捕获波形?  

    B. 器件是否已切换至 HS200模式、但频率尚未更新至200MHz (粘贴序列的步骤4)?  

    C. 您在 MMCSD0_SS_PHY_CTRL_4_REG 和 MMCSD0_SS_PHY_CTRL_5_REG 中设置了哪些值?

    D.  一段时间前、我们研究了 MMCSD0_HOST_CONTROL1的设置[2] HIGH_SPED_ENA。  您能否检查该位是否已设置?

    另请确认波形是 TI 输出还是 eMMC 输出。   

    2.您共享的顺序看起来正确

    3.当 CMD 和 DAT 稳定时、应进行与您一致的 CLK 捕获。  在 HS200模式下、标准过程是让主机/器件驱动 CMD/DAT 关闭上升沿 CLK、以便信号在上升沿 CLK 捕捉之前保持稳定。

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

    > a. 您何时捕获波形?  

    我们测量 CMD6返回误差的波形。

    > b. 器件是否已切换至 HS200模式、但频率尚未更新至200MHz (粘贴序列的步骤4)?  

    该器件应处于 LS 模式、并在发送 CMP6以设置位宽误差时准备切换到 HS200。

    > c. 您在 MMCSD0_SS_PHY_CTRL_4_REG 和 MMCSD0_SS_PHY_CTRL_5_REG 中设置了哪些值?

    此时、MMCSD0_SS_PHY_CTRL_4_REG 和 MMCSD0_SS_PHY_CTRL_5_REG 设置为0x10610f 和0x7。 未  设置 HIGH_SPED_EN。

    > d.  一段时间前、我们研究了 MMCSD0_HOST_CONTROL1的设置[2] HIGH_SPED_ENA。  您能否检查该位是否已设置?

    另请确认波形是 TI 输出还是 eMMC 输出。   

    如前所述、在切换到 HS200模式之前、不需要设置 MMCSD0_HOST_CONTROL1 [2] HIGH_SPED_ENA 标志。

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

    您好:

    A. 在凝块前后捕获的波形。

    在凝块:之前

    CLK 扑动:Ω

    在凝块:后

    另请确认波形是 TI 输出还是 eMMC 输出。   

    我们认为波形是 TI 输出。

    我们可以看到波形的前两位 在两个周期为“01”,即 EMMC 规范中的主机输出。

    3.当 CMD 和 DAT 稳定时、应进行与您一致的 CLK 捕获。  在 HS200模式下、标准过程是让主机/器件驱动 CMD/DAT 关闭上升沿 CLK、以便信号在上升沿 CLK 捕捉之前保持稳定。

    我能不能  ?CMD 和 DAT 都是在 CLK 上升沿 μ s 进行采样的

    也就是说、CMD 和 DAT 在 CLK 的上升沿处于稳定状态、不应处于转换状态。

    那么、如果上图中测量的 CMD 在 CLK 的上升沿跳转、是否存在问题?

    谢谢!!

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

    郭瑞峰

    是的、CMD 和 DAT 应在捕获的 CLK 边沿周围保持稳定。   MMCSD0_SS_PHY_CTRL_4_REG 和 MMCSD0_SS_PHY_CTRL_5_REG 用于控制 CLK 和 CMD/ DAT 之间的延迟、应根据速度模式进行相应设置。  在传统速度模式下、PHY_CTRL5_REG [17:16] SELDLYTXCLK 和 SELDLYRXCLK 应设置为0x1。

    您是否看到写入或读取问题?

    当没有发送活动的 CMD 或 DAT 时、主机将对 CLK 进行门控、这就是在连续 CLK 传输之间发生中断的原因。  它出现在门控 CLK 之前/之后、 MMCSD0_HOST_CONTROL1 [2] HIGH_SPED_ENA 位由 SW 设置。  您能否在门控 CLK 部分前后读出 CMD 行上发送的两个 CMD 的整个位?  请同时包含主机和 eMMC 器件传输的数据。

    根据您共享的波形、应采用以下格式:

    (2 CMD 之前)?

    (1 CMD 之前) 0 1 001101

    门控 CLK

    (之后为1个 CMD) 0 1 000110

    (2个 CMD 之后)?

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

    您好:

    基于波形:

    门控时钟之前:

    如果通过上升沿采样,CMD 为0 1 001101。

    门控 CLK:

     门控 CLK 之后:

    如果通过下降沿采样,CMD 为0 1 000110。

     串联电阻问题:

    CLK 上靠近 SOC 侧放置了一个22R 串联电阻。

    CMD 上靠近 EMMC 侧放置了一个33R 串联电阻。

      在 靠近 EMMC 侧放置的数据上有一个33R 串联电阻。

    我们尝试将 CLK/CMD 上的任一个调整为0r,、然后 可以在 HS200模式下识别 EMMC。

    但是、当我们执行 EMMC 读写测试时、一旦 CMD 连接到探头、频率将立即降至400kHz、并在日志中报告错误。

    我们认为、对该串联电阻的调整与向 CMD 添加电容器相同。

    调整延迟还是驱动能力都可以解决这个问题。

    谢谢!!

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

    请 从 eMMC 中读出完整的48位 CMD 和相应的响应。  

    很高兴听到 HS200在移除串联电阻后工作正常!  我们的参考设计不建议在 SoC-eMMC 路径之间放置一个电阻器、除非它有助于提高信号完整性。  添加电阻器后、您是否会看到更好的信号完整性?   

    此外、 请确保您使用具有低电容和短 Fly-Bare 的有源探头来测量信号;这将有助于最大程度地减小探头的影响。  如果在连接了探头的情况下打开电路板电源、是否会发现与以前相同的问题?

    可以在 MMCSD0_SS_PHY_CTRL_1_REG 中设置 eMMC 驱动强度;可以在 TRM 中找到更多信息。

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

    您好:

    首先确保波形问题:

    关于我们在400KHZ 测试的 CLK 和 CMD 相位的波形、结合 TI 的驱动器、您认为有问题吗?

    如果没有问题并且它满足 TI 的要求、为什么不关注这个波形?

    如果存在问题并且不符合 TI 的要求、应该改进什么方向?

    第二个关于 EMMC 交流时序问题:

    在 EMMC 规范中、HS200模式下有时间要求。

    在您提供“此外,在 HS200模式下,TDA4VM 动态调整用于数据采集的 CLK,以便以良好的设置/保持裕度捕获数据。  因此、我们的数据表中没有为此特定模式定义时序要求。  您在哪里读取了1.4 ns 作为设置要求?  ”

    ?、我们是否仍然需要根据 EMMC 标准进行测试、包括一些参数、例如设置时间和保持时间

    或者、TI 的驱动程序将自动调整此时间、我们无需注意?

    关于串联电阻:的第三个问题

    我们在测试前尝试安装探头、在测试期间安装探头。结果是日志中将报告错误、频率将变为400kHz。

    在探头方面、使用有源差分探头进行测试、效果相同。 (此探针可用于测试 MIPI/SGMII/PCIe 等信号)。

    由于探头对 CMD 有如此大的影响、这是否意味着 CLK/CMD 的相位裕度不够好?

    谢谢!!

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

    您好:Shiou Mei、

    1。  

    MMCSD0_SS_PHY_CTRL_4_REG 和 MMCSD0_SS_PHY_CTRL_5_REG 用于控制 CLK 和 CMD/ DAT 之间的延迟、应根据速度模式进行相应设置。

    根据 TRM、我了解到修改 OTAPLYENA 和 OTAPLYSEL 可以控制 CLK TX 的延迟。 对吗? 您能给我一个建议值吗?

    2.

    您可以在 MMCSD0_SS_PHY_CTRL_1_REG 中设置 eMMC 驱动强度;更多信息可在 TRM 中找到。

      

    请帮助澄清需要更改 MMCSD0_SS_PHY_CTRL_1_REG 寄存器的哪个位字段来提高 EMMC 驱动器的强度?

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

    郭瑞峰

    问:关于我们在400KHZ 测试的 CLK 和 CMD 相位的波形、结合 TI 的驱动器、您是否认为存在问题?答:波形显示 DAT 是从 CLK 上升沿启动的。  在传统速度模式(400kHz)下、数据应从 CLK 下降沿开始、除非 CMD6已将其更改为 HS200模式、在这种情况下、应相应地设置 OTAPLYSEL 比率。

    您能否 在 转储日志中打印出 MMCSD0_HOST_CONTROL1的寄存器值、该日志还会显示发生故障的位置?  此外、之前要求打印 完整的48位 CMD 和 eMMC 的相应响应。 也请提供此信息。

    (2 CMD 之前) 0 1 001101和?

    (1 CMD 之前) 0 1 001101 和?

    门控 CLK

    (之后为1个 CMD) 0 1 000110和?

    (2 CMD 之后) 0 1 000110和?

    问: 那么、我们是否仍然需要根据 EMMC 标准进行测试、包括一些参数、例如设置时间和保持时间? 或者、TI 的驱动程序将自动调整此时间、我们无需注意?
    答:  当主机根据 eMMC 标准读取时、调整算法仅适用于 HS200模式。  对于传统 SDR、高速 SDR、高速 DDR 等低速模式以及 eMMC 器件的输入、仍然需要检查设置/保持时间。

    问:由于探头对 CMD 有如此大的影响、这是否意味着 CLK/CMD 的相位裕度不够好?
    答: 由于器件无法读取正确的 CMD、请确保您正在 eMMC 侧进行探测。  如果在 eMMC 侧探测此波形、则 可以检查 eMMC 规格以确认 CLK/CMD 阶段是否满足设置/保持时间要求。  串联端接电阻器、阻抗不匹配等会影响建立/保持时间

    问:根据 TRM、我了解到修改 OTAPLYENA 和 OTAPLYSEL 可以控制 CLK TX 的延迟。 对吗? 您能给我一个建议值吗?
    答: 可以在数据手册中找到该值。

    问:请帮助澄清需要更改 MMCSD0_SS_PHY_CTRL_1_REG 寄存器的哪个位字段来提高 EMMC 驱动器的强度?
    答:[22:20]位 DR_TY 会更改主机的驱动强度。  

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

    您好:ShiouMei、

    > Q: 根据 TRM、我了解到修改 OTAPLYENA 和 OTAPLYSEL 可以控制 CLK TX 的延迟。 对吗? 您能给我一个建议值吗?
    > A: 可以在数据手册中找到该值。

    根据 表12-6154。 TRM、 ITAPLYENA 和 ITAPLYSEL 中的 MMCSD0_SS_PHY_CTRL_4_REG 寄存器字段说明用于非 HS200/HS400模式。 为什么建议在数据表 tda4vm.pdf 中进行设置?

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

    您好:ShiouMei、

    >是否可以 在 转储日志中打印出 MMCSD0_HOST_CONTROL1的寄存器值、该日志还显示发生故障的位置?  此外、之前要求打印 完整的48位 CMD 和 eMMC 的相应响应。 也请提供此信息。

    寄存器转储日志为:

    e2e.ti.com/.../emmc-log-failed.txt

     当更改 串联电阻时、可以识别 eMMC、日志为:

    e2e.ti.com/.../emmc-log-ok.txt

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

    您好:

    在400kHz 模式下、CLK/CMD 波形的详细信息如下所示::

    您对 A/B 波形前后主机输出阶段的变化有何看法?

    您是否需要更多波形、能否告诉我您需要它们的位置?

    总波形:

    详细波形:

    主机输出波形:

    eMMC 输出波形:

    B 详述波形:

    主机输出波形:

    eMMC 输出波形:

    EMMC 读写测试:

    根据你的答覆,我可否理解,在 HS200模式下,我们不需要测试 EMMC 的读写时间? TI 驱动器的这一部分是否会自行调整?

    此外、当 EMMC 写入操作在 HS200模式下执行时、探头位于 EMMC 侧、中间不存在串联电阻的影响。 当探头连接到 CMD 时、CLK 将自动更改为400kHz、并报告错误。 无法测量200MHz 时的 CLK/CMD。设置保持时间。

    期待您的回复!!

    谢谢!!

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

    您好:ShiouMei、

    驱动器强度与以下寄存器无关? 应该设置什么值?

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

    您好:

    补充;

    (2 CMD 之前) 0 1 000110 和0 0 000110

    (1 CMD 之前) 0 1 001101和 0 001101

    门控 CLK

    (之后为1个 CMD) 0 1 000110和 0 000110

    (2 CMD 后) 0 1 001101和 0 001101

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

    郭瑞峰

    您不理解。  HS200读取时序根据调优算法进行动态调整;但是、写入时序在 DM 中进行了规范、并定义了限制、应检查其与 eMMC 的兼容性。  低速模式(传统 SDR、高速 SDR、高速 DDR)也具有 DM 中指定的时序要求和开关特性、如果使用了这些特性、则应进行检查。   

    ITADPDLY 与输入时序相关、需要针对传统 SDR 进行设置、这是在焊接串联端接电阻时遇到问题的400kHz 速度模式。

    我将详细了解波形并记录日志、并在明天回答其他问题/评论。

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

    郭瑞峰

    SDIO1_CTRL 与 MMC1、MMC2相关、与您现在使用的模块 MMC0无关。

    请在示波器上观察到的故障前后为2个 cm 提供完整的48位 CMD 和 CMD RSP。  您的响应仅为每个 CMD 和 CMD RSP 列出了8位。  此数据将帮助您隔离导致系统行为变化的 CMD。

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

    您好:

    通过使用不同的测试方法、可以看到多种不同的状态。

    1.CLK/CMD 未连接到任何外部测试设备。 如果 CLK/CMD 正常通电并启动、则日志中会报告 CMD6错误。 如下所示:

    2.CLK/CMD 连接到 N2874A 探针、并且器件已通电并已启动、日志中将报告 CMD1错误。 如下所示:

    连接 CLK/CMD 外部 PVP2350探针、器件通电并启动、EMMC 器件可在 HS200模式下识别、如下所示:

    根据测试状态3、在 EMMC 识别期间捕获了 Gated CLK 前后的波形。 如下所示:

    全部:

    2 CMD 之前:

    2 CMD 之前的值:主机输出:0 1 000110 000000111010000000100000001 0101001 1

    2 CMD 之前的版本:EMMC 输出:0 000110 00000000000000000000000000000000100000000 1101110 1

    1 CMD 优先级:

    1 CMD 之前的值:主机输出:0 1 001101 0000000000000000000100000000000000 0101001 1

    1 CMD 之前的版本:EMMC 输出:0 001101 000000000000000000000000000000000000100000000 0011111 1.

    门控 CLK:

    1 CMD 后:

    1 CMD 之后:主机输出:0 1 000110 00000011101101110000001000000001 0000010 1.

    1 CMD 之后:EMMC 输出:0 000110 0000000000000000000000000000100000000 1101110 1.

    2 CMD 后:

    2之后的 CMD:主机输出:0 1 001101 0000000000000000000100000000000000 0101001 1

    2之后的 CMD:EMMC 输出:0 001101 000000000000000000000000000000000000100000000 0011111 1.

    您是否对上述波形和 CLK/CMD 的边沿状态有任何问题? (在 EMMC 侧测量)

    目前、无法暂时捕获 CMD6误差的波形、连接后探针的状态将发生变化。

    至于 CMD1出错时的波形、软件正在更改触发模式、然后我们将对此波形捕获提供反馈。

    谢谢!!

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

    补编:

    2.CLK/CMD 连接到 N2874A 探针、并且器件已通电并已启动、日志中将报告 CMD1错误。 如下所示:

    波形如下:

    全部为:μ A

    1:μ A

    2:μ A

    3:μ A

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

    感谢您提供 CMD6故障的详细波形!  对于 CMD1故障、请获取详细的波形并读出与 CMD6类似的位。

    您的系统最近是否发生了变化? 在您之前提到的消息中、如果系统在 CLK 和 CMD 线路上未连接串联电阻器的情况下通电、则不会发生 CMP6错误、并成功枚举了 HS200。  发生了什么变化、使情况不再如此?

    CMP6故障

    在第一个示例中、 系统 尝试将总线宽度设置为8时发生故障。 如果您将总线宽度保持在单通道模式、您是否会看到通过行为? 此外、"CMD 6 cmplt status CMD to ERR (5)"是什么意思? 是否为命令超时?

    前面提到过、在传统 SDR 模式下、应根据 DM 中的表设置 PHY_CTRL4。  PHY_CTRL4[8] ITADLYENA = 1、[4:0] ITADLYSEL = 0x10。 PHY_CTRL5 [17:16] SELDLYTX/RXCLK = 0x1、[2:0] CLKBUFSEL = 0x7。 在寄存器转储中、它们显示为0x0。  请进行此更新。

    根据您的捕获、当 CLK 被选通时、软件可能会将启动 CLK 边沿从下降边沿更改为上升边沿。 因此、您可以在波形中看到、后面的 cmds 以 CLK 的下降沿而不是上升沿为中心。   但是、这种情况为什么不会反映在寄存器转储中是很有趣的。 请验证寄存器转储和 CMD6输出之间是否有其他函数调用。

    探头差异

    N2874A 和 PVP2350探针之间有何区别?  

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

    您好:

    感谢您提供 CMD6故障的详细波形!  对于 CMD1故障、请获取详细的波形并读出与 CMD6类似的位。

    我认为 CMD1波形完全错误。 无法从波形中确定起始位和停止位的位置、因此无法读取数据。

    您的系统最近是否发生了变化? 在您之前提到的消息中、如果系统在 CLK 和 CMD 线路上未连接串联电阻器的情况下通电、则不会发生 CMP6错误、并成功枚举了 HS200。  发生了什么变化、使情况不再如此?

    添加串联电阻以重现问题。 即使移除了串联电阻、也可以成功识别 HS200模式、但上述波形是否一致? 有与 CLK 上升沿对齐的相位波形、CMD 在400kHz 时跳转、仍然不明白为什么?

    探头差异

    N2874A 和 PVP2350探针之间有何区别?  

    PVP2350

    N2874A

    谢谢!!

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

    您好:ShiouMei、

    > CMD6故障

    > 在第一个示例中 ,系统 尝试将总线宽度设置为8时发生故障。 如果您将总线宽度保持在单信道模式、您是否看到"通过">" 行为"? 此外、"CMD 6 cmplt status CMD to ERR (5)"是什么意思? 是否为命令超时?

    我不太清楚您的意思、您的意思是不发送修改总线宽度的命令吗?
    关于错误代码返回值5的含义、您能否帮助确认它是否为超时?

    > 之前在传统 SDR 模式中提到过、应根据 DM 中的表设置 PHY_CTRL4。  PHY_CTRL4[8] ITADLYENA = 1、[4:0]>  ITADLYSEL = 0x10。 PHY_CTRL5 [17:16] SELDLYTX/RXCLK = 0x1、[2:0] CLKBUFSEL = 0x7。 在寄存器转储中、它们显示为0x0。  请> 进行此更新。

    我更新了寄存器值、但仍然失败。 在 LS 模式下运行时、日志如下所示。

    e2e.ti.com/.../EMMC_5F00_FAILED.txt

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

    鲁伊丰

    即使旧版 SDR 的当前寄存器更新未解决此当前调试问题、也应在 SW 中进行这些设置、作为最佳做法。  

    在我之前的答复中、还有两个额外的操作:

    1、 根据您的捕获、当 CLK 被选通时、软件可能会将启动 CLK 边沿从下降边沿更改为上升边沿。 因此、您可以在波形中看到、后面的 cmds 以 CLK 的下降沿而不是上升沿为中心。   但是、这种情况为什么不会反映在寄存器转储中是很有趣的。 请验证寄存器转储和 CMD6输出之间是否有其他函数调用。

    2. 检查总线宽度= 1是否正常工作。  现在您的系统在尝试设置总线宽度= 8时失败。  此操作将证明故障与 DAT[1:7]无相关性

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

    您好:ShiouMei、

    [~ userid="117980" URL"/support/processors-group/processors/f/processors-forum/1095291/tda4vm-the-sums-eMMC-ca-t-be-identified -on HS200-mode/4098492#4098492]1.  根据您的捕获、当 CLK 被选通时、软件可能会将启动 CLK 边沿从下降边沿更改为上升边沿。 因此、您可以在波形中看到、后面的 cmds 以 CLK 的下降沿而不是上升沿为中心。   但是、这种情况为什么不会反映在寄存器转储中是很有趣的。 请验证寄存器转储和 CMP6输出之间是否有其他函数调用。

    如前所述、在发送命令后、它将等待一段时间、在三次尝试失败后、将 GPIO 拉至高电平。
    我无法确认代码位置与 CLK 波形对应的位置。 您是否有任何建议来了解在此期间调用了哪些函数?
    基于 TI SDK8.0、我们尚未对 eMMC 驱动程序部分进行任何更改、请帮助查看代码流、谢谢!

    [~ userid="117980" URL"/support/processors-group/processors/f/processors-forum/1095291/tda4vm-the-sums-eMMC-ca-t-be-identified -on HS200-mode/4098492#4098492]2.  检查总线宽度= 1是否正常工作。  现在您的系统在尝试设置总线宽度= 8时失败。  此操作将证明故障与 DAT[1:7]没有相关性

    我跳过了更改总线宽度函数、但在 CMP6上仍然失败。

    修补程序是:

    @@ -928,17 +937,18 @@ static int _mmc_init_hs200( sdio_hc_t *hc, int bus_width )
     {
            sdio_dev_t              *dev;
            int                             status;
    -       int                             bus_mode;
    +//     int                             bus_mode;
    
            dev     = &hc->device;
            status  = EINVAL;
    
    -               // set bus width
    -       bus_mode        = bus_width / 4;
    -       if( ( status = mmc_switch( dev, MMC_SWITCH_CMDSET_DFLT, MMC_SWITCH_MODE_WRITE, ECSD_BUS_WIDTH, bus_mode, SDIO_TIME_DEFAULT ) ) ) {
    -               sdio_slogf( _SLOGC_SDIODI, _SLOG_ERROR, hc->cfg.verbosity, 0, "%s: switch ext_csd_bus_width (%dbit)", __FUNCTION__, bus_width );
    -               return( status );
    -       }
    +       printf("Ruifeng Skip set bus width in %s\n", __func__);
    +//             // set bus width
    +//     bus_mode        = bus_width / 4;
    +//     if( ( status = mmc_switch( dev, MMC_SWITCH_CMDSET_DFLT, MMC_SWITCH_MODE_WRITE, ECSD_BUS_WIDTH, bus_mode, SDIO_TIME_DEFAULT ) ) ) {
    +//             sdio_slogf( _SLOGC_SDIODI, _SLOG_ERROR, hc->cfg.verbosity, 0, "%s: switch ext_csd_bus_width (%dbit)", __FUNCTION__, bus_width );
    +//             return( status );
    +//     }
    
            sdio_bus_width( hc, bus_width );
    

    日志是:

    e2e.ti.com/.../EMMC_5F00_FAILED_5F00_20220602.txt

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

    鲁伊丰

    您能否在_MMC_init_HS200 ()函数的第17行之前再次转储寄存器?  此外、请共享您尝试访问的 PHY_CTRL4、PHY_CTRL5和 HOST_CONTROL1、HOST_CONTROL2寄存器的完整地址。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="117980" URL"~/support/processors/group/processors/f/processors-forum/1095291/tda4vm-the-sungs-eMMC-co-t-be-identified -on HS200-mode/4103198#4103198"]您能否在_mmc_init_function (_mmc_init_mc_中的第17行之前再次转储寄存器?  此外、请共享您尝试访问的 PHY_CTRL4、PHY_CTRL5和 HOST_CONTROL1、HOST_CONTROL2寄存器的完整地址。  [/报价]

    日志是

    e2e.ti.com/.../EMMC_5F00_FAILED_5F00_20220607.txt

    SDMMC_SS_PHY_CTRL4 和 SDMMC_SS_PHY_CTRL5由 MMCSD0_SS_CFG_BASE 0x10c 和0x110偏移。

     HOST_CONTROL1和 HOST_CONTROL2 由 MMCSD0_CTL_CFG_BASE 0x28和0x3E 偏移。

    调试代码是  

    #define MMCSD0_SS_CFG_DEBUG     1
    #define MMCSD0_CTL_CFG_DEBUG    1
    
    void dump_SDMMC_SS_PHY_CTRL4_5(sdio_hc_t *hc)
    {
            int i;
    #if MMCSD0_SS_CFG_DEBUG
            am65x_ext_t *ext = (am65x_ext_t *)hc->bs_hdl;
            uintptr_t   MMCSD0_SS_CFG_base = ext->ss_base;
    
            printf("MMCSD0_SS_CFG_base address = 0x%lx SDMMC_SS_PHY_CTRL1(0x100) = 0x%x SDMMC_SS_PHY_CTRL4(0x10c) = 0x%x SDMMC_SS_PHY_CTRL5(0x110) = 0x%x\n",
                    MMCSD0_SS_CFG_base,
                    sdhci_in32(MMCSD0_SS_CFG_base + 0x100),
                    sdhci_in32(MMCSD0_SS_CFG_base + 0x10c),
                    sdhci_in32(MMCSD0_SS_CFG_base + 0x110));
            printf("Dump MMCSD0_SS_CFG...\n");
    
            for (i = 0; i < 0x138; i++)
            {
                    if (i % 0x20 == 0)
                    {
                            printf("\n[0x%03x] ", i);
                    }
    
                    if (i % 8 == 0)
                            printf("| ");
    
                    printf("%02x ", sdhci_in8(MMCSD0_SS_CFG_base + i));
            }
            printf("\n\n");
    #endif
    
            sdhci_hc_t              *sdhc;
            uintptr_t               MMCSD0_CTL_CFG_base;
    
            sdhc    = (sdhci_hc_t *)hc->cs_hdl;
            MMCSD0_CTL_CFG_base    = sdhc->base;
    
            printf("MMCSD0_CTL_CFG_base = 0x%lx MMCSD0_HOST_CONTROL1(0x28) = 0x%x HIGH_SPEED_ENA(0x28 bit[2]) = %d MMCSD0_HOST_CONTROL2(0x3e) = 0x%x\n",
                    MMCSD0_CTL_CFG_base,
                    sdhci_in8(MMCSD0_CTL_CFG_base + 0x28),
                    !!(sdhci_in8(MMCSD0_CTL_CFG_base + 0x28) & (1 << 2)),
                    sdhci_in8(MMCSD0_CTL_CFG_base + 0x3e));
    
    #if MMCSD0_CTL_CFG_DEBUG
            printf("Dump MMCSD0_CTL_CFG...\n");
    
            for (i = 0; i < 0x268; i++)
            {
                    if (i % 0x20 == 0)
                    {
                            printf("\n[0x%03x] ", i);
                    }
    
                    if (i % 8 == 0)
                            printf("| ");
    
                    printf("%02x ", sdhci_in8(MMCSD0_CTL_CFG_base + i));
            }
            printf("\n\n");
    #endif
    }

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

    您好:ShiouMei、

    寄存器物理地址输出如下:

    SDMMC_SS_PHY_CTRL4物理地址= 0x4f8810c
    SDMMC_SS_PHY_CTRL5物理地址= 0x4f88110
    MMCSD0_HOST_CONTROL1物理地址= 0x4f80028
    MMCSD0_HOST_CONTROL2物理地址= 0x4f8003e


    修补程序是:

            mem_offset64(MMCSD0_SS_CFG_base + 0x10c, NOFD, 32, &phyAddr, NULL);
            printf("SDMMC_SS_PHY_CTRL4 physical address = 0x%llx\n", phyAddr);
    
            mem_offset64(MMCSD0_SS_CFG_base + 0x110, NOFD, 32, &phyAddr, NULL);
            printf("SDMMC_SS_PHY_CTRL5 physical address = 0x%llx\n", phyAddr);
    
            mem_offset64(MMCSD0_CTL_CFG_base + 0x28, NOFD, 8, &phyAddr, NULL);
            printf("MMCSD0_HOST_CONTROL1 physical address = 0x%llx\n", phyAddr);
    
            mem_offset64(MMCSD0_CTL_CFG_base + 0x3e, NOFD, 8, &phyAddr, NULL);
            printf("MMCSD0_HOST_CONTROL2 physical address = 0x%llx\n", phyAddr);
    

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

    添加所有日志总数:

    e2e.ti.com/.../EMMC_5F00_FAILED_5F00_20220622.txt

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

    鲁伊丰

    感谢您的更新。  再次查看您的波形和日志、CMD 信号实际上在门控 CLK 发生之前切换为从上升沿启动、而不是 像前面提到的那样在之后启动。  这 可能与 V1P8_SIGNAL _ENA 的 MMCSD0_HOST_CONTROL2值更新为0x8有关。  您能否注释掉更新了该寄存器的代码、以便该值保持在0x0?   

    谢谢、此致、

    石尾

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

    您好:ShiouMei、

    我们能否先切换到50MHz HS 模式,然后切换到200MHz HS200模式?  

    如何配置它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="117980" URL"~/support/processors/group/processors/f/processors-forum/1095291/tda4vm-the-sums-eMMC-ca-t-be-identified -on HS200-mode/4122259#4122259]\n 您是否可以注释掉更新此寄存器的代码、以便该值保持在0x0?   [/报价]

    跳过将电压设置为1.8V、仍然找不到 eMMC、日志为:

    e2e.ti.com/.../emmc_5F00_failed_5F00_20020627.txt

    Ruifeng MMC_INIT_HS200 1073 Skip 将电压设置为1.8V。
    MMCSD0_CTL_CFG_BASE = 0x4c184cb000 MMCSD0_HOST_CONTROL1 (0x28)= 0x18 HIGH_SPEED_ENA (0x28位[2])= 0 MMCSD0_HOST_CONTROL2 (0x3E)= 0x0

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

    鲁伊丰  

    您能否再次捕获相同的 CLK、CMD、DAT0波形?  V1P8_SIGNAL _ENA 被禁用后、您现在是否看到 CMD 从上升沿启动?  此外、在您的日志中、您还遇到了一些其他崩溃。  您是否能够在 PORz 之后生成干净的日志、或者是否每次都发生相同的崩溃?

    您可以通过修改 arch/arm64/boot/dts/ti/k3-j721e-main.dtsi、找到 main_sdhci0并注释掉定义  MMC-DDR-1_8v  和  MMC-HS200-1_8v 的行、将速度模式更改为高速模式。

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

    >您可以通过修改 arch/arm64/boot/dts/ti/k3-j721e-main.dtsi 将速度模式更改为高速,找到 main_sdhci0并注释掉定义  MMC-DDR-1_8v  和  MMC-HS200-1_8v 的行。

    我的意思是、在一次引导中、首先切换到 HS 模式、然后切换到 HS200模式。 操作系统为 QNX,需要更改哪个参数? 谢谢。

    我将在  禁用 V1P8_SIGNAL _ENA 的版本上捕获波形、并在稍后分享给您。

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

    鲁伊丰

    有关 QNX 驱动程序更新、请直接联系 QNX。

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

    您好;

    CLK、CMD、DAT0波形。

    黄色:CLK

    粉色:CMD

    蓝色:DAT0

    绿色:GPIO

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

    您好,

    当 SKIP 将电压设置为1.8V 时、请帮助解析此波形和寄存器转储。 谢谢。

    另一个问题:

    我们想知道 eMMC 控制器在从400k 模式转换到高速模式(50M/200M)期间会发送哪些操作/命令、以及该功能是什么?
    在模式切换过程中、EMMC 是否仍具有数据传输功能? 如何在切换频率时确保数据的稳定性?

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

    郭瑞峰

    很难理解基于波形在总线上发生了什么、您能像以前那样读出这些位吗?  看起来 CMD 现在是从下降沿启动的、这是正确的吗?

    至于 eMMC 控制器所做的工作、这非常特定于驱动程序。  由于您使用的是 QNX 的驱动程序代码、因此请在这方面咨询 QNX。  通常、数据传输会暂停、直到握手完成、模式切换将被视为握手序列的一部分。