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.

[参考译文] AM62D-Q1:在定制电路板上运行 DDR-MARGIN-FW 时出现问题

Guru**** 2810285 points

Other Parts Discussed in Thread: AM62D-Q1, AM62P

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1622715/am62d-q1-issues-running-ddr-margin-fw-on-custom-board

器件型号: AM62D-Q1
主题: AM62P 中讨论的其他器件

大家好、我联系了有关在 AM62D-Q1 定制电路板设计上运行 DDR-MARGIN-FW 测试固件的一些支持。 受测特定电路板是一款具有 8Gb FS RAM 的 HS-LPDDR4 器件。 在本练习中、我使用 CCS 20.4.1 和 XDS110 调试探针。

JTAG 访问良好;连接测试(目标配置>高级>测试连接...)通过。 我能够暂停 A53 内核并尝试加载程序。 但是、我在分享这些信息的过程中遇到了一些错误。

DDR-MARGIN-FW 测试随附的 readme.txt 文件显示以下关于硬件初始状态的信息:

要求事先启用 A53、DDRSS 和 UART0 的器件 PLL 和 PSC。 此外、在运行固件之前、用户必须使用自己的配置来配置 DDR。 此配置将由固件测试。

我想我要通过引导 Linux 映像来完成此操作、它会初始化列出的所有接口。

接下来、我尝试遵循已编译程序的“JTAG 加载“指令。 我在这一步遇到了一个问题:

连接到 SMS0_TIFS_0 内核

尝试从 CCS 执行此操作时、会收到以下错误消息:

SMS0_TIFS_0:连接到目标时出错:(错误–1170 @ 0x0)无法访问 DAP。 重置器件、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电、和/或尝试更可靠的 JTAG 设置(例如下 TCLK)。 (仿真包 20.4.0.3835)

然后、我尝试重置设置、并尝试简单地跳过此步骤。 我可以连接并停止 A53SS0_CORE0_0、但我确实收到以下错误消息:

A53SS0_CORE0_0:GEL:执行 OnTargetConnect () 时出错:目标读取 0x0000000043000000 失败
     在 READ_PHID=*((unsigned int*)(WKUP_CTRL_MMR0_CFG0_BASE+0x00000000U))[AM62D_DDR_TOP.gel:66]
     at DDR_Init ()[AM62D_AUDIO_EVM.gel:64]
     在 OnTargetConnect() 处

最后、我尝试加载编译后的读取测试程序。 几秒钟后、进度条显示完成、但随后我收到以下错误消息:

A53SS0_CORE0_0:自动运行:目标未运行、因为未定义符号“main"</s>“

您能在这里提供任何调试帮助吗? 请告诉我哪些附加信息会有所帮助。

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

    您好:Colb、

    这并不是一条错误消息、更重要的是调试器让您知道它无法执行默认的“运行到 elf 文件中的主符号“。 这是一个调试器默认选择执行的选项(您可以在另一个菜单中控制此行为)。 固件映像的符号被去除、因此没有意义、但它确实包含由调试器解析的程序入口点。 如果您点击播放按钮、固件应执行、您应该会在 MAIN_UART0 上看到输出。

    话虽如此:

    我相信我是通过启动我们的 Linux 映像来完成这一工作的、它将初始化列出的所有接口。

    您回答正确! 您不需要在您的情况下加载凝胶。 这些步骤是我会在您的情况下遵循的步骤。 与您的操作非常相似、但有一些差异:

    1) 等待直到 Linux 完成引导,然后关闭它。 Linux(甚至只需要 U-boot)只需要 电源/时钟配置和 DDR 配置。  此工具无法正常运行、因此您需要完全关闭 Linux; 要关闭 Linux、请在终端中输入“shutdown -h now“、然后等待断电完成。 由于 u-boot/Linux 已经完成了电源/时钟和 DDR 配置、现在无需运行 GEL。

    2) 通过 JTAG 连接到 A53 内核。 在加载代码之前、连接到 A53、然后点击“CPU Reset (HW)“按钮、下方的屏幕截图。 这将确保单个内核处于新状态、并且尚未通过 Linux 进行配置(固件将从新状态配置内核)。 然后、您可以将复位的代码加载到 A53、而不会因配置内核的其他应用而出现任何潜在问题。

    您应该会看到通过 UART 输出到主机 PC、如果您不返回该线程、我们可以看到发生了什么。  

    此致、

    Lucas

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

    你好 Lucas,谢谢你的快速和详细的答复。 我现在更好地了解 JTAG 加载和调试过程的许多方面。 我错过了 Linux 关断和硬件 CPU 复位步骤。 我重复了这些添加步骤的过程和应用程序来了! 再次感谢。

    此致、
    Colb

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

    大家好、Lucas、我刚尝试运行写入程序、并从调试会话中获得以下输出:

    A53SS0_CORE0_0: Landed in default serror handler!

    写入程序执行到以下点:

    ...
            SAVED:     phy_per_cs_training_multicast_en[0]      = 0x1
            CHANGED:   phy_per_cs_training_multicast_en[0]      = 0x1
            SAVED:     phy_per_cs_training_multicast_en[1]      = 0x1
            CHANGED:   phy_per_cs_training_multicast_en[1]      = 0x1
            SAVED:     phy_per_cs_training_multicast_en[2]      = 0x1
            CHANGED:   phy_per_cs_training_multicast_en[2]      = 0x1
            SAVED:     phy_per_cs_training_multicast_en[3]      = 0x1
            CHANGED:   phy_per_cs_training_multicast_en[3]      = 0x1
    Value of dst_ptr is 0x70000000
    Value of src_ptr is 0x70008000
    Total transfer size is 8388608 Bytes
    Value of ddr_ptr is 80000000
    Value of src_ptr is 70008000
    Value of dst_ptr is 70000000
    WRITE_EYE_DATA_COLLECTION_START
    MR14 Value is 0x0
    vref=100
    wrdly=592
    

    是否知道此处发生了什么以及如何解决此问题?

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

    您好:Colb、

    有趣! 这是 A53 内核上一类异常的异常处理程序、但我可以放心地说在测试过程中没有遇到这种情况。

    快速健全性检查、您将哪个版本的固件加载到器件中? 需要在发布页面上更新命名、但用于 AM62D 的固件版本应为 AM62A/AM62P 版本。 虽然命名约定令人困惑、但 AM62x 版本适用于一组不同的器件 (https://www.ti.com/lit/ds/symlink/am625.pdf)。  

    此致、

    Lucas

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

    好的、我将使用适用于 AM62A/AM62P 的固件。 读取测试程序运行正常并生成合理的输出、但写入测试程序会给出上述错误。

    我们在这里使用的是相对较小的 8Gb 存储器器件、我只提及这一点是因为它在过去导致了 TI 固件出现一些问题。 我们在我们的平台上启动 Linux 时遇到了一些问题、因为有些东西被硬编码为存储在我们可用范围之外的地址。

    我将在此处继续进行故障排除、尝试在其他一些硬件上重现问题、并让您随时待命。 如果您有任何其他想法、请告诉我。

    Colb

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

    您好:Colb、  

    很好知道、请保持发布此主题。 我知道、在 DDR 的远端不应该有任何硬编码地址(出于好奇,您可以在上面的代码片段中看到一些重要的指针基地址。 我们从 DRAM 的基地址 0x80000000 开始、但我会研究一下这个地址并了解我可以给出的建议。

    此致、

    Lucas

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

    大家好、Lucas、感谢提供基准输出。 请告诉我是否可以从我的系统中提供任何其他日志或调试信息。 此外、如果您能够共享 T 眼应用的源代码、我们可能能够并行帮助查看。

    同时、我将仅使用读取应用程序继续进行测试。

    Colb

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

    您好:Colb、

    我们不共享此固件的源代码。 我会了解如何购买 EVM、如果我在合理的时间范围内无法获得 EVM、我会考虑您这边的一些实验或数据来收集。  

    此致、

    Lucas

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

    您好:Colb、

    目前尚不清楚我是否可以随时获取 EVM、因此我们先介绍一些可以从您的设置中获得的 ARM 基础知识。 当运行写入眼图工具并进入服务器处理程序时、您能否从 CCS 发布以下寄存器的值:

    ESR_EL3

    ELR_EL3

    FAR_EL3

    这些应显示在 CCS 窗口的寄存器选项卡中。 这将帮助我们确定 A53 看到的错误类型、我们可以推测或生成进一步的实验。

    此致、

    Lucas