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.

[参考译文] AM6421:DDR 读取/写入问题

Guru**** 2482225 points
Other Parts Discussed in Thread: AM6421, SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1439633/am6421-ddr-read-write-issue

器件型号:AM6421
主题中讨论的其他器件: SysConfig

工具与软件:

您好!

     我们有一个采用 SOC AM6421 1GB K4A8G165WB-BCRC DDR 的定制电路板。

     我们使用的是 mcu_plus_sdk_am64x_09_02_00_50  SDK。

我们将使用  SDK 示例中的示例 DDR_ECC_TEST_MCU_ESM 测试硬件。

 我们正面临这一问题  

      代码如下所示

当运行时、执行在线上停止

testVal = g Test_Addr [0];

背面接地:

  同样的示例适用于我们之前的板、即10层板、使用了相同的 DDR 和 SOC。

 我们的新电路板具有12层、ICCSS 接口更改为 MII。

 我们已检查12层空 PCB 布线长度和跟踪阻抗并发现它们在指定范围内。

 可以帮助我们解决这个问题。

谢谢你。

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

    您好 Narashimha:

    当执行停止时、R5F 内核是否会中止? 您可以暂停内核并检查它是否处于中止状态吗?  

    当执行停止时、您可以检查下面的寄存器的值吗?

    您可以使用 CCS 中的"Memory Browser"检查这些寄存器值。

    此致、

    Nihar Potturu.  

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

    您好、Nihar:

      谢谢你。

     下面是 停止执行时您针对寄存器所请求的屏幕快照。

      当执行停止时、程序会进入所连接的 ABORT 状态。

    请引导我们采取后续行动。

    谢谢你

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

    您好、 Nihar:

        DDR 问题的任何更新。 您需要的任何其他信息。

    谢谢你。

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

    您好 Narasimha、

    只是为了确认、同一个 SW 在旧电路板上正常工作、但在新电路板中提供了中止。 新电路板中的 DDR 部分和 SoC 也是相同的。  

    我已将该主题分配给硬件专家、以便他可以进一步评论。 由于美国的感恩节假期周、响应可能会出现延迟。  

    此致、

    Nihar Potturu.  

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

    您好、Nihar:

      同一个软件在旧电路板上可以正常工作、但在新电路板中提供数据中止。

      旧电路板和新电路板中的 DDR 和 SOC 器件相同。

     

      我们除了一些快速的响应、因为我们必须为客户提供产品交付

    . 谢谢你。

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

    我们可能想要检查旧器件是否使用 AM6421 A   (自2023年10月) AM6421的对比 B  

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

    在运行 ECC 测试之前、您是否可以通过打开存储器窗口并尝试窥探/插入某些值到 DDR 地址空间来对存储器进行一些基本检查。  我希望在未启用 ECC 的情况下是否存在一些位错误。

    -can 还发送 DDR 寄存器配置文件(.syscfg 和.h)的输出。  

    -您是否正在使用 VTT 稳压器?

    能否使用 GEL 脚本 AM64x DDRSS 内存调试->AM64x_DDRSS_CTL_PI_PHY_RegDump 提供 DDR 寄存器转储

    此致、

    James   

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

    尊敬的 James:

      感谢您的答复。

    您是否正在使用 VTT 稳压器?   : 是的,我们 正在使用。

    下面随附的是不工作主板的内存窗口屏幕

    下面随附了 DDR 的寄存器转储。

    e2e.ti.com/.../ddr_5F00_reg_5F00_nonworking.txt

    使用的 SysConfig 文件

    e2e.ti.com/.../examplesyscfg.txt

    DDR 配置文件

    e2e.ti.com/.../board_5F00_ddrReginit_5F00_new303.h

    谢谢你。

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

    寄存器转储中的 VREF 培训似乎不正确。  

    -可以将原理图的 DDR 接口部分发送出去吗?

    -确保在 DDR4退出复位之前启用 VTT 稳压器

    -配置303MHz 的原因是否存在?  另一个电路板是否在400MHz 工作?

    请共享 DDR 寄存器配置工具中的.syscfg 文件。  您共享的内容是针对 SDK 的。

    -检查电路板上的所有电压:

    处理器电压轨:
    • VDDS_DDR = VDDS_DDR_C = 1.2V
    • VDDA_PLL1 = 1.8V (AM64x/AM243)

    内存电压轨:

    • VTT = 0.6V
    • DDR_VREFCA = 0.6V
    • DDR_VPP = 2.5V

    -有多少个板存在此问题?  从 regdump 中检测到 DQ3存在问题。  您可以从不同的电路板发送 regdump 吗?

    -同样为了比较,从工作板的 regdump 也会很好

    此致、

    James

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

    尊敬的 James:

    -配置303MHz 的原因是否存在?  另一个电路板是否在400MHz 工作?

     由于 DDR 无法在800MHz 上工作,因此我们将其配置为用于调试目的的303MHz。

     我们的目标是在800MHz 工作。

    -有多少个板存在此问题

     我们拥有8种以上的定制板。 并且我们在所有这些示例中都遇到了问题。

     下面是测量的电压。

     

    电源轨

    所需值(V)

    测量值(V)

    VDDS_DDR = VDDS_DDR_C

    1.2.

    1.200

    VDDA_PLL1

    1.8

    1.803.

    VTT = 0.6V

    0.6.

    0.604.

    DDR_VREFCA  

    0.6.

    0.600

    DDR_VPP = 2.5V

    2.5.

    2.505.

    原理图的 DDR 接口部分

    -工作板的 DDR 寄存器

    e2e.ti.com/.../ddr_2D00_reg_2D00_workingboard.txt

    从 DDR SysConfig 工具生成的配置文件。

    e2e.ti.com/.../02355.board_5F00_ddrReginit.h

    谢谢你。

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

    原理图上的一个问题: DDR_RESET 应拉至低电平、而不是拉至高电平。  我不认为这是解决这个问题的办法,但它需要纠正。

    工作板 regdump 看起来符合预期。  现在、无法正常工作的电路板 regdump 表明了 DQ3的组装问题。  因此、您必须从其他板生成 regdump、以了解其他可能的问题。   

    此外、我建议使用最新的 DDR 配置工具 v10.02: https://dev.ti.com/sysconfig/?product=Processor_DDR_Config&device=AM64x

    存储器浏览器测试的结论是什么?  在运行 ECC 测试代码之前、您是否能够在存储器浏览器中读取/写入位置?

    此致、

    James  

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

    尊敬的 James:

          感谢您的答复。

      存储器浏览器测试的结论是什么?  在运行 ECC 测试代码之前、您是否能够在存储器浏览器中读取/写入位置?

     我们尝试通过存储器浏览器从两个不工作的板访问 DDR、对存储器位置进行读写没有影响。

      我们尝试将一些数据写入0x80000000、但不会产生任何影响。

      下面是  两块电路板的测试项目中使用的寄存器转储、内存浏览器和 DDR 配置文件

      板1寄存器转储:

    e2e.ti.com/.../ddr_5F00_reg_5F00_notworkingBoard1.txt

      板1 存储器浏览器:

     板2寄存器转储:

    e2e.ti.com/.../ddr_5F00_reg_5F00_notworkingBoard2.txt

      板1 存储器浏览器:

    使用的 DDR 配置文件:

    e2e.ti.com/.../0143.board_5F00_ddrReginit.h

    目前、我们正在使用工业通信 SDK v9.2.0.15。 因此、我们无法按照您的建议采用 SDK 10。

    谢谢你。

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

    尊敬的 James:

      使用提供的上述信息对 DDR 问题进行任何更新。

    谢谢你

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

    尊敬的 James:

       我们能否 根据提供的上述信息获得有关 DDR 问题的任何更新。

    谢谢你

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

    尊敬的 James:

       我们能否 根据提供的上述信息获得有关 DDR 问题的任何更新。

       我们的客户正在等待解决方案我们感谢您的快速响应。

    谢谢你

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

    尊敬的 James:

           

    我们能否 根据提供的上述信息获得有关 DDR 问题的任何更新。

       我们的客户正在等待解决方案我们感谢您的快速响应。

    谢谢你

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

    从寄存器转储来看、ECC 似乎仍处于启用状态:

    R DDR16SS0_SS_CFG_REGS__SS_CFG_SSCFG_ECC_CTRL_REG 0x0000000B 0x00000117

    我想查看在未启用 ECC 的情况下执行的存储器浏览器实验。  只需将该寄存器更改为0x0即可。  我不确定为什么在 DDR_Init ()之后会立即启用 ECC。  之后的某个时候没有启用 ECC?

    此外,我检查了两个 regdump ,我仍然看到两个 regdump 中的 DQ3打开有问题。  读取眼图训练值与数据总线的其余部分不匹配。  我还看到 byte0的处理器侧 VREF 培训有一个奇怪的值。  这远低于字节1的 VREF。  

    关于 byte0 VREF 没有经过正确培训的原因、我不知道。  您之前说过您检查了工作电路板和不工作电路板之间的布局。  DDR 布局中是否有任何专门更改?  例如布线层或参考平面。 您是否使用其他 DDR4器件?  我唯一的想法是、配电有问题。  我看到您在上一个线程中检查了电压。  您可以使用示波器对1.2V IO 电压进行更具动态的测量、尤其是在 DDR 初始化期间。  希望在整个初始化过程中确保电压稳定。

    此致、

    James

       

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

    尊敬的 James:

      "我不确定为什么在 DDR_Init ()之后会立即启用 ECC。  之后的某个时候没有启用 ECC 吗?"

      1)在 DDR_Init ()之前。  ECC 寄存器将 ECC 使能位显示为0。

      2)在 DDR_Init ()之后。  ECC 寄存器位显示为1。

      希望您知道  DDR_Init ()。 将 ECC 更改为1。它是我们专用的库 API。

     

      附加的是 ECC 设置为0时在 DDR _Init ()之后的存储器浏览器信息。 我们已经写入了地址0x90000000 ~  0x90000040

     在下面的模式中、我们看到存储器的一种问题模式。

     我们在内存位置输入了以下值

     0x90000000 - 0x00000000

     0x90000020 - 0x11111111

     0x90000040 - 0x22222222

     0x90000060 - 0x33333333

     0x90000080 - 0x444444 等

    上面询问的其他详细信息将很快提供给您。

    同时,你将能够 得出任何结论,哪里是故障。  扫描输出数据。

    谢谢你

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

    Narasimha,

    若要禁用 ECC、您必须转到 SysConfig、并通过取消选中该框来禁用它:

    您显示的模式指示 DDR 稳定性存在严重问题。  我尚不确定 DDR 配置是否存在问题或硬件问题、但由于您以前使用的是正常工作的硬件、因此我会怀疑存在硬件问题、我之前说过。  

    请进行硬件比较、我会使用更多调试建议与您联系

    此致、

    James