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.

[参考译文] AM4378:从 MMC0接口引导时出现问题

Guru**** 2551110 points
Other Parts Discussed in Thread: TIDEP0014, AM4378

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/601257/am4378-issues-booting-from-mmc0-interface

器件型号:AM4378
主题中讨论的其他器件:TIDEP0014

我们正在尝试使用 MMC0接口引导至 Linux 操作系统。  似乎处理器启动并与 MMC0端口进行初始交互、它似乎与 SD 卡进行通信。  然后处理器进入速度更高的时钟(25MHz)、它仍将使用 CMD 线路与 SD 卡通信、数据看起来会在 D0线路上发送、但不会超出此范围。

我不确定要查看其他什么来调试这个问题、我们已经仔细检查并验证了自举引脚、它们是正确的。  如果有任何帮助,将不胜感激。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Brian、我认为这是定制板? 原理图检查清单还提供了一些提示
    processors.wiki.ti.com/.../AM437x_Schematic_Checklist

    尤其是检查 MMC_CLK 上的串联电阻。 您能否在引导期间获得时钟的示波器截图?

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

    是的、这是定制板、但我们基于 AM437x GP EVM 进行设计。  我已附上来自定制板和 AM437x GP EVM 的示波器截图、其中显示了启动期间的 MMC0_CLK 和 MMC0_CMD 信号。  初始化似乎在两个电路板上都发生了相同的情况、但在我们的定制电路板上之后没有发生任何情况、与 AM437x GP EVM 相比、您可以看到 CLK 和 CMD 信号在初始化之后继续。

    AM437x GP EVM 启动

    自定义电路板启动

    下面是 MicroSD 连接器与处理器之间的原理图;

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

    以下是显示所有数据线的范围截图;

    AM437x GP_EVM 启动

    自定义电路板启动

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

    Brian、

    我有几个问题可以帮助您更好地了解您的电路板设置。

    您的 SYSBOOT 配置是什么?

    使用了什么参考时钟频率?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们的 SYSBOOt 配置当前设置为:01100b MMC0

    时钟频率设置为:01b = 24MHz (这应与我们拥有的 TIDEP0014开发套件相同)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你。  仅需说明一下、您的 SYSBOOT 配置如下所示?

    SYSBOOT[17]=?
    SYSBOOT[16]=无关
    SYSBOOT[15:14]= 01
    SYSBOOT[13:12]= 00
    SYSBOOT[11:5]=无关
    SYSBOOT[4:0]= 01100

    如果放大 MMC0活动的逻辑分析仪轨迹、您是否看到存储卡对 AM437x 的 CMD1命令或 AM437x 的 CMD55+ACMD41命令的响应?

    MMC0接口上的原始突发活动实际上在目标硬件上的持续时间是否比在 EVM 上的持续时间长?  从逻辑分析器跟踪图中可以看出、它看起来更长了一点(例如、更多的事务)、但并不清楚、我不想做出假设。

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

    下面是 SYSBOOT 配置的屏幕截图、我刚才从数据表中截取了一个屏幕截图并突出显示了配置。

    我可以尝试获取更多响应范围的快照、但由于存储器为我提供了帮助、我记得我们在开发套件或定制板上的初始化过程中获得了相同的响应。  初始交互可能发生在300kHz 左右、然后时钟速度增加到12MHz。  接下来、当我们的定制板不再具有交互功能时、开发套件上的自定义板将继续读取、我认为此时时钟速度再次提高到50MHz。  

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

    添加一些有关定制板上 MMC0接口信号的更多信息。  MMC0_CLK 以250kHz 的频率开始(图像中的前三个"数据包")、当 MMC0接口开始在 MMC0_CMD 上传输数据时、时钟频率变为200kHz。

    以下是在 MMC0_CMD 线路上传输的第一条消息、该消息没有响应;

    MMC0_CMD 行上的下一条消息确实得到响应、数据在映像中;

    MMC0_CMD 行上的消息3看起来是 CMD55、并且似乎有响应;

    MMC0_CMD 上的消息4是 ACMD41消息、看起来对此也有响应;

    然后、一系列 CMD55...ACMD41...CMD55...ACMD41在处理器和 microSD 卡之间继续运行。  在将时钟速度从200kHz 更改为12MHz 之前、MMC0_CMD 线路上的最后一条消息是 CMD9、它询问特定于卡的数据、似乎卡对该数据做出了响应。

    然后、处理器在 MMC0_CMD 线路上发送 CMD4、然后改变时钟速度;

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

    如果您看到 MMC0时钟速度跳至12MHz、这应该表示 MLO (第一个内核由 ROM 代码从 SD 卡复制到内部存储器)接管并执行。  ROM 代码(也称为引导 ROM)以1位模式和最慢时钟速度读取 MMC 接口、以适应各种存储器。  然后、该 MLO 重新配置时钟、以支持以更快的速率从 SD 卡读取 u-boot。  MLO 正在从内部存储器中执行。

    在此期间是否有任何数据从 UART 发出?

    如果 DDR 时序或任何时钟配置关闭、则可能在 UART 上看不到任何输出。  如果数据来自 UART、我将查看 DDR 时序。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    UART 应该使用哪些设置? 我应该连接到哪个 UART? 我之前尝试连接一次、但没有收到任何消息、我使用115200、8、N、1连接到 UART0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    MLO 代表什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不要混淆、但 MLO 是 ROM 代码在 SD 卡的 FAT 文件系统中查找的文件名。  它是 SPL 的重命名、即辅助程序加载程序。

    http://processors.wiki.ti.com/index.php/The_Boot_Process

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我无法从定制板上的 UART 获取任何通信信息。

    那么、这个问题的根源在哪里、为什么我们无法引导到 microSD 卡上的操作系统中?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您的设计基于 GP EVM、我可以想象它是 UART0。 我认为这些是适当的设置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想知道这是否会导致我们的问题、在开发套件中、DDR3内存为 MT41K512M8RH-125、即800MHz 时钟速率。  遗憾 的是 DDR3内存已过时、制造商建议的替代部件是933MHz 时钟速率的 MT41K512M8DA-107。  AM4378处理器是否与933MHz 时钟速率 DDR3存储器兼容?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Brian、让我们确保您在尝试调试 DDR 问题之前从 ROM 中取出。 我有几个问题:
    -您的定制板上是否有 JTAG 访问权限? 如果您这样做、我们可以确认您所获得的引导过程的距离。
    -R152相对于处理器和卡固定框架的物理位置在哪里? 理想情况下、它应尽可能靠近处理器放置。
    -我看到了您的示波器截图、但我想看到 MMC_CLK 上的放大版本(主要是在发生故障的高频率下)。 我们可能需要调整 R152的值、以确保时钟上没有反射。

    此致、
    James
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    -我们可以访问 JTAG 端口,它与开发套件上的 J8是同一个连接器,我们有 XDS2000调试器。
    - R152的位置与开发套件上的位置几乎完全相同、我认为我们没有移动它。
    -当 MMC0_CLK 以12MHz 运行时、我将跟踪它的示波器快照。 我确实将其与来自开发套件的相同信号进行了比较、没有什么看起来太普通、实际上、我们的定制板看起来可能会更好一些。 我曾在一个点上将 R152更改为24欧姆电阻器、同样的问题仍然存在。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以12MHz 运行时定制板上的 MMC0_CLK 信号。

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

    这是开发套件上的 MMC0_CLK 信号。

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

    好的、我看不到任何反射的证据、所以我不认为这是问题。  您能否在启动电路板后连接 JTAG 并查看程序计数器(PC)的位置?  如果它在0x30000-0x40000内的某个位置、那么它仍在执行 ROM。  如果它在0x40300000或更高版本中、则它在 MLO 或 u-boot 中。  缩小范围后、我们可以继续进行调试。  尝试多次此实验以确保结果一致。

    此致、

    James

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

    我已经能够将 JTAG 连接到处理器、但如何查看程序计数器?

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

    我们在定制板上运行调试器并暂停运行、程序计数器为0x0000000C。 它从未如此高过。 当我从调试器内执行系统复位时、它卡在该值。  如果我断开与目标的连接并重新连接、则它会转到下面的较高值。

    当我们执行此操作时、我们必须在设置中出现错误、因为在进一步测试时、程序计数器将 始终到达0x402F4500。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、您将从 ROM 中取出并进入 MLO。 因此、您的引导加载程序似乎存在问题。 在这里、您可以叠加 MLO 中的符号并在 CCS 中进行调试。 MLO 的符号文件是 spl\u-boot-spl、它位于构建目录中。 您可以在 CCS 中执行 Run->Load->Load Symbols 并单步执行引导加载程序以查看其挂起位置。 您甚至可以进行源代码关联以逐步浏览源代码、从而更轻松地进行调试。
    在大多数情况下、问题将出现在您的 DDR 配置中。

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

    我们正在尝试根据新的 DDR 存储器更新相应的寄存器、并且我们正在努力加载所有正确的值。  我们使用随附的电子表格作为指南、以根据本指南 http://www.ti.com/lit/an/sprac70/sprac70.pdf 查找需要加载的值。  如果能提供任何指导或帮助来纠正这些价值观、我们将不胜感激。  此外、我们如何生成自己的 GEL 文件?

    DDR 数据表

    e2e.ti.com/.../1586.4Gb_5F00_DDR3L.pdf

    参数电子表格

    e2e.ti.com/.../SPRAC70_5F00_AM437x_5F00_EMIF_5F00_Configuration_5F00_Tool_5F00_V20.xlsx