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.

[参考译文] Linux/AM5728:U-Boot 无法调试、SPL 正常工作

Guru**** 2575385 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/615531/linux-am5728-u-boot-fails-to-debug-spl-works

器件型号:AM5728

工具/软件:Linux

大家好、我想知道是否有人可以告诉我 U-Boot 为什么无法调试。  我一直遵循 U-Boot 指南:  

虽然我的 SPL 按预期工作、U-Boot 在运行时会立即卡住。  U-Boot 加载到正确的 RAM 地址0x80800000、在 CCS 调试器中有可视内存、通过查看 RAM 芯片的电源轨可以看到 SPL 的末级操作、 据我们所知、这表示在 SPL 结束时发生的重定位。  

但是、当 U-Boot 通过 JTAG 加载并运行时、即使定义了调试、串行控制台上也不会显示任何消息、并且由于没有编程符号、因此无法判断程序在何处崩溃。  有什么想法吗?  这对我们来说是一个相当大的障碍,我被骗了。

ADDENUM:我知道我在这里有类似的帖子:

但我已经用这种方法到达了一堵墙、我只需要朝着正确的方向微移。

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

    您使用的是哪种版本的 AM572x PSDK?

    比您使用的 wiki 更新版、请参阅以下内容:

    processors.wiki.ti.com/.../Sitara_Linux_Training:_uboot_linux_debug_with_ccsv5_sdk7

    另请参阅如果您遇到 LCPD-8265问题:

    processors.wiki.ti.com/.../Processor_SDK_Linux_Release_Notes

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用的是 PSDK v3.03和 CCSv7。 我可以将更改应用到 PSDK v4、然后重试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已将 RAM 配置和器件树更改应用于 PSDK 4 u-boot 构建、并按照您之前分享的调试培训链接进行操作、但未成功。  在运行 u-boot 时没有收到调试信息的情况下也会出现同样的问题。

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

    您无法调试 u-boot、但能否成功加载/引导 u-boot? 问题可能出在 DDR 中无法正常工作。 您是否已验证 DDR 是否正确? 如果是、如何操作?

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

    可以是这样。  但我已经上下过 DDR 配置、它们看起来不错。  我当前的假设是、在通过 UART 发送调试横幅之前、u-boot 会停留在某个循环中。  

    我无法将 u-boot 加载/引导至 Linux 内核。  我一直遵循上面的培训指南、其中 u-boot 通过 JTAG 加载到 SDRAM 中。  u-boot-spl 设法将 PC 寄存器重新定位到0x80800000、并且 U-Boot 大于 AM5728上的 SRAM 高速缓存、实际上通过 JTAG 加载到电路板上、这一事实让我认为我的 SDRAM 配置正常工作。  

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

    请检查您是否符合以下 DDR 配置要求:

    www.ti.com/.../sprac36a.pdf

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我之前已经看过这份工作手册、但再次通读它和《AM5728技术参考手册》、我有几个关于我发现的差异的问题。

    在 SPRAC36工作簿中、我生成的 EMIF_EXT_PHY_CTRL 寄存器数组都会注释掉。 这在某种程度上是合理的、因为我们在使用硬件矫正、而这些寄存器在大多数情况下用于软件矫正。 但是、在 AM572x TRM 的第15.3.5.1.1.1节中、它注意到、即使我使用硬件调平、我的 EMIF_EXT_PHY_CTRL_1寄存器也应该具有一些填充值。 我应该跟随哪一个?

    另一件事是、在这个 wiki 页面中的"快速轻松"部分之后: processors.wiki.ti.com/.../Common_DDR_Issues 、我注意到、当我在运行 SPL 后加载 U-Boot 时、我可以在 CPU 内存视图和物理内存视图中查看内存。 在"Physical Memory"视图中调整值不会更改 CPU Memory 视图中同一地址的值、反之亦然。 这是正常的吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="TOM Wallis">在 SPRAC36工作簿中、我生成的 EMIF_EXT_PHY_CTRL 寄存器数组都会注释掉。 这在某种程度上是合理的、因为我们在使用硬件矫正、而这些寄存器在大多数情况下用于软件矫正。 但是、在 AM572x TRM 的第15.3.5.1.1.1节中、它注意到、即使我使用硬件调平、我的 EMIF_EXT_PHY_CTRL_1寄存器也应该具有一些填充值。 我应该遵循哪一项?

    我认为应使用 EMIF_EXT_PHY_CONTRAIN_1寄存器进行硬件矫正。 我看到它用于 u-boot 和 GEL 文件中的 AM57x TI 电路板 DDR3配置。

    u-boot/arch/arm/include/asm/emif.h
    u-boot/arch/arm/mach-omap2/emif-common.c
    u-boot/arch/arm/mach-OMAP2/omap5/SDRAM.c
    u-boot/board/ti/am57xx/board.c

    ccsv6/ccs_base/emulation/boards/am572x/gel/am572x_DDR_config.gel

    您还可以测试 DDR3存储器、如以下 wiki 所示:

    processors.wiki.ti.com/.../Sitara_Linux_Training:_Tuning_the_DDR3_Timings_on_BeagleBoneBlack

    我还建议在 DDR3工作正常的 AM57x TI 电路板(EVM 或 IDK)上尝试 u-boot 调试、从而隔离 DDR3故障。

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

    啊,很好的一点。  然后、我将保持该寄存器不变。

    关于您链接的 wiki 页面中的 DDR3测试、我们已经完成了该过程和"节拍"值、但当我们尝试使用 Fill Memory 选项时、这些值不会被粘滞。  有什么关于这是为什么的想法吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不能通过 U-Boot 是否可能是因为没有 U-Boot 符号、U-Boot 在打印任何内容之前卡住而导致的? 我注意到、每当我暂停调试器时、它就会卡在以下位置:

    FDT_find_regions (void *、unsigned char *、int、unsigned char *、int、struct FDT_region *、int、unsigned char *、 int、int)

    这看起来可能是由我的器件树中的某些错误引起的。

    我仍然相当确信 RAM 配置是正常的、但如果器件树也是合理的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另一件事是:我为 AM5728 EVM (GP)使用了新的 PSDK 映像、可以观察到 U-Boot 中的相同行为。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、只是想知道这方面是否有任何更新?  我继续进行这方面的工作、还注意到当 u-boot 和 MLO 加载到 SD 卡上时(通过 create-sdcard.sh 脚本、然后清除 rootfs 分区的内容)、当我们使用自定义板时、不会出现 U-Boot 控制台、 但是、在上述方法中将 EVM 与库存 PSDK4版本配合使用、仅使用 U-Boot 和 MLO、会按预期加载 U-Boot 控制台。  但是、由于不同的 RAM 大小导致数学运算以查找偏移、因此使用我们产品上 EVM 的 bdinfo 结果迄今未成功。

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

    实验室需要一些更新。 SPL/;u-boot 现在使用附加在构建过程中的器件树。 对于 SPL、您可能需要使用 u-boot-spl-dtb.bin。 对于 u-boot、您可能希望使用 u-boot-dtb.bin 进行调试。 对于符号、您仍然可以使用 ELF 二进制文件。

    Steve K.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于 u-boot-dtb.bin,我应该再次使用 tools->load memory 选项,并加载到0x80800000?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Tom 对此问题是否有任何解决方法?  是 DDR 问题还是设备树或符号问题、您采取了哪些措施来解决该问题?

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

    [引用用户="Tracy Smith6"]

    Tom 对此问题是否有任何解决方法?  是 DDR 问题还是设备树或符号问题、您采取了哪些措施来解决该问题?

    [/报价]

    尊敬的 Tracy:

    这是 wiki 方法上的一个问题。  实质上、wiki 文章在原始帖子中提到的 u-boot.bin 需要是 u-boot-dtb.bin。  这可能是因为该 Wiki 文章是在将器件树添加到 U-Boot 和 Linux 之前编写的。  对于 SPL、我还使用了 u-boot-spl-dtb.bin、也取得了一些成功。  遗憾的是、我从未设法使 Linux 调试工作。

    我还注意到、在运行 U-Boot 和 SPL 时、我遇到了 EMIF 配置问题、并且在修改后、我能够进入 U-Boot 命令行。

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

    谢谢 Tom。 现在看看类似的问题。