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.

[参考译文] AM6442:DDR4初始化失败

Guru**** 2393955 points
Other Parts Discussed in Thread: SYSCONFIG, AM6442

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1487213/am6442-ddr4-initialization-failure

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

工具与软件:

我们 目前正在定制电路板上测试多家制造商的 DDR4、并且 ISSI 器件存在问题。 ISSI DDR4的初始症状是、即使似乎是有效的 SysConfig、也无法启动。 启用调试输出、DDRSS 寄存器转储和 R5 memtester 后、我们可以看到 ISSI 部分 未通过初始卡滞地址测试、但通过多个环路通过了所有后续测试。  看来我们的 SysConfig 为 ISSI DDR4生成的.dtsi 文件是正确的、并且 根据我对寄存器转储的基本理解似乎正在进行培训。

是否有任何明显的原因我们会失败*只是*初始卡住的地址测试?

此外、我认为我们的设计和配置是可以接受的、因为我们的电路板同时采用 Micron 和 Alliance DDR4、这些板看起来可以正常工作、启动并通过所有内存测试。

DDR4配置  在800MHz 下为单芯片1GB (16x512MB)。

TI Processor SDK 版本是  10.01.10.04。

我们测试的器件为:

Micron: MT40A512M16LY-062E IT:E

Alliance: AS4C512M16D4A-62BIN

ISSI:IS43QR16512A-083TBLI  

附加了 ISSI 板的启动日志、其中包含调试、寄存器转储和几个循环的 memtester、用于显示我们看到的内容。 我还将附加 ISSI .dtsi 文件、便于您了解其配置方式。

非常感谢您的任何帮助。

Greg

e2e.ti.com/.../k3_2D00_am64_2D00_ddr_2D00_ISSI_5F00_DDR4_2D00_2400T_5F00_CL12_5F00_CWL9.zip

e2e.ti.com/.../ISSI_5F00_DDR4_5F00_WarmBoot_5F00_RegDump_5F00_Memtester.zip

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

    Greg、您好!  

    首先、感谢您在初始帖子上提供的详细信息。

    我检查了寄存器转储、一切看起来都很好、我检查了 ISSI 寄存器配置、这也检查了。  您是否有其他器件的寄存器转储?  将它们与其他选项进行比较也会很好。

    我注意到 ISSI 设备是三个不支持读取 DBI 的设备中唯一一个。  如果不读取 DBI、则可能会看到其他电源噪声的影响、这可能会影响 memtester 结果。  我们不建议使用不支持 Read DBI 的设备。  它们可以使用、但会增加这种不必要的风险。   

    您还可以尝试以较低速度(可能是667MHz)测试 ISSI 器件、以查看这是否会改变行为。  如果是、这也可能表明存在一些信号完整性问题、可能是由于电源噪声增加。

    您尝试过使用 ISSI 器件的电路板有多少块?   

    您可能还需要就该问题与 ISSI 联系、并确保您拥有最新的批次代码器件。  去年年初、我们确实遇到了一些需要更新生产调整的器件问题。   

    此致、

    James

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

    尊敬的 James:

    感谢您的答复。

    我使用 ISSI 器件尝试了两个电路板、得到了相同的结果。 我将尝试降低速度、看看这是否有帮助。 我将上传 Micron 日志、但 Alliance One 需要等到周一。

    就价值而言、我假设 ISSI 器件上的生产日期代码是2240、这可能看起来有点旧?

    另一个简短问题:VTT 和 VREFCA 的启用时序有多大作用? 最初我使其启用、但发现它应该在 VDD 和 VDDQ 之后。 这似乎没有任何区别、并且可能在只有一个 DDR4器件时没有必要。

    再次感谢您的帮助。 我一定会发布我的测试结果。

    此致、

    Greg

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

    我还想补充一点、我们的电源基于 TPS6521903并遵循应用手册:

    https://www.ti.com/lit/pdf/slvafe9

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

    嗨、Greg、我认为生产日期代码表示2022年第40个星期。  可能需要与 ISSI 进行检查。  至少他们应该能够向您发送最新的器件以供您查看、然后您才能开始追讨旧问题

    在 DDR 初始化和训练开始之前、VTT 应该有效且稳定。  通常、在 DDR 初始化开始之前、它与电源一同启用(在 VTT 稳压器使能时仅使用上拉电阻)或与 GPIO 一起启用。  是的、如果您只有一个 DDR 器件、则不需要 VTT。  我们有一个 EVM 对其进行演示、以供参考

    此致、

    James

      

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

    尊敬的 James:

    这是一个 Micron 寄存器转储以及我们的 Micron .dtsi 配置。

    我在比较寄存器转储时注意到的一件事是 ISSI 始终具有非零值

    0x0f30a024 0x00000003 //DDRSS_PI_9_DATA
    0x0f30a028 0x0000000f //DDRSS_PI_10_DATA

    而 Micron 和 Alliance 在这里始终为零。 我不是 DDR4专家、因此我不知道如何理解参考手册告诉我有关这些寄存器的信息、即请求和确认不良之间的最大 DFI 时钟周期不为零或指示错误? 反正我注意到了。

    接下来我将在667 MHz 上尝试 ISSI。

    Greg

    e2e.ti.com/.../Micron_5F00_DDR4_5F00_RegDump_2800_Micron_5F00_Settings_2900_.zipe2e.ti.com/.../k3_2D00_am64_2D00_ddr_2D00_Micron.zip

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

    Greg、您好!

    这些 PI 寄存器只是一些内部时序状态、实际上并不表示任何与错误相关的信息。   

    Micron 寄存器转储看起来与 ISSI 相当。  ISSI 具有更高的处理器 VREFdq (70%对66%)、但现在我不认为这是故障的原因。   

    我确实浏览了我的一些存档、一位具有相同 ISSI 内存的客户的电路板上确实出现了 VTT 问题、导致了启动故障。  只需仔细检查 VTT 电压并确保其在 PORz 转换为高电平之前稳定在0.6V、并保持稳定、直到 memtester 运行。

    此致、

    James

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

    附了 ISSI 器件在667MHz、CWL=9和 CL=10处的寄存器转储、从而说明其价值。 初始阻塞地址测试失败时的结果相同。

    这始终只是第一个测试。 我对该测试的功能很好奇。 我有 memtester 的源、但我不确定该测试是如何工作的。 也许理解这会让我找到问题。

    今天、我将介绍如何验证 VTT 电压和使能时序。

    再次感谢、

    Greg

    e2e.ti.com/.../ISSI_5F00_DDR4_5F00_667MHz_5F00_CWL_3D00_9_5F00_CL_3D00_10.zip

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

    GREG、我认为、阻塞的地址测试会通过存储器将地址作为数据(或该地址的补码)写入、然后进行回读和验证。  尽管我认为您不能仅仅因为此测试而真正排除数据问题。  

    实际上、我从来没有看到过只是地址测试失败。  通常、如果地址错误、则某些数据测试也会失败。  ISSI 内存上的故障是否始终位于同一地址?  我仍然认为到目前为止所有内容都指向内存单元损坏或内存设备的其他问题。

    另外、您可以尝试更改所用存储器的大小(日志显示0x2000000)吗?

    正在从0x82000000开始测试内存、大小为0x2000000...

    这可能会在更多的循环中遇到问题(测试运行速度会慢得多)。  如果您每次都在同一地址点击错误、这实际上会指向内存问题。

    或让 memtester 一夜运行。  我认为它会在每个循环上分配不同的存储器块。 这将有助于扩大覆盖范围。

    此致、

    James

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

    尊敬的 James:

    感谢您对内存大小的想法。 明天我要运行一些测试。

    就其价值而言、我之前已经夜间运行了测试、它始终会在环路1 (20个以上循环)上的初始地址失败后通过每个循环。 我已多次测试了两个不同的 ISSI 板、它们始终在环路1地址失败后通过。 此外、失败的地址在随后的冷启动中也不同。 这一切都使我相信在初始化或复位时会发生某种情况。 我已经了解了电压轨的时序、一切看起来都是标称值。

    我联系了 ISSI、他们的销售代表答应让我与他们的 FAE 联系、但我还没有收到回复。 我一定会更新他们提供的任何有用信息。

    有时、我原本计划考虑运行 TI DDR 裕度测试固件、但我看到固件仅为 LPDDR。 比较糟糕。

    您对寄存器转储的解析是否 可以让您确信我的所有 DDRSS 设置都正确? 我忍不住想 我的 ISSI 设置有一些问题。

    感谢大家的帮助。

    Greg

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

    Greg、是的、很奇怪、只有第一个环路出现了故障。  在该寄存器转储之前、初始化之后应该有足够的时间。  怪异的。   

    我从 regdumps 中看到的一切看起来都很正常。  我明天将再次检查这些设置。   

    您知道它是否在每次第一次访问存储器时失败?  或者处于"固定地址"测试的中间位置。

    此致、

    James

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

    格雷格,我仔细检查 regdumps,没有看到任何时间问题.   

    我看到的唯一一个可能需要不同设置的东西是 DDR 数据表中的以下内容:

    该表表明、如果运行3.9us 刷新速率、则即使禁用 TCR、也只有扩展温度适用。  您可以尝试将在线工具更改为以下内容:

    我不太希望这会改变行为、但根据数据表、这在技术上是正确的。

    此致、

    James

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

    尊敬的 James:

    感谢您的发现。 不幸的是、您是对的、这似乎没有任何不同。 也就是说、我将把 TCR 范围设置为从这里扩展到 OUT。

    对于它的价值,我运行了一些测试,看看故障地址是否真的随机,这似乎是这样的。 以下是800MHz 的十项试验:

    冷启动#1、在地址0x00000000831122a8处失败
    冷启动#2、在地址0x00000000831224a8处失败
    冷启动#3、在地址0x00000000831731b8处失败
    冷启动#4、在地址0x000000008311216c 处失败
    冷启动#5、在地址0x000000008311e2a8处失败
    冷启动#6、在地址0x00000000831662e8处失败
    冷启动#7、在地址0x0000000083170878处失败
    冷启动#8、在地址0x00000000831128a8处失败
    冷启动#9、在地址0x0000000083122ba8处失败
    冷启动#10、在地址0x0000000083174778处失败

    请注意、这些始终是 test.c 中函数 test_sticked_address 的第0次迭代

    我的下一个测试将是从减小/arch/arm/mach-k3/am642_init.c 中的大小

    #if defined (CONFIG_SPL_MEMTESTER)
     /*在0x82000000处测试32MB、即 DDR 上的 R5 SPL 堆栈*/
     memtester (0x82000000、0x100000 * 32);
    #endif

    最终目的

    #if defined (CONFIG_SPL_MEMTESTER)
     /*在0x82000000 */处测试16MB
     memtester (0x82000000、0x010000 * 32);
    #endif

    Greg

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

    我刚刚意识到大小应该是0x080000*32为16MB。

    奇怪的是、我意外设置的大小(0x0100000*32)似乎起作用。

    memtester 版本4.6.0-ti (64位)
    版权所有(C) 2001-2020 Charles Cazabon。
    获得 GNU 通用公共许可证第2版许可(仅限)。

    正在从0x82000000开始测试内存、大小0x200000……

    环路1:
    固定地址:确定
    随机值:好的
    比较 XOR:确定
    比较子:好
    比较 MUL:好
    DIV 比较:好
    比较或:好
    比较和:好的
    顺序增量:确定
    Solid Bits:好的
    块顺序:确定
    棋盘:确定
    位扩展:好的
    位翻转:好的
    步行的人:好的
    步行零度:好的

    环路2:
    固定地址:确定
    随机值:好的
    比较 XOR:确定
    比较子:好
    比较 MUL:好
    DIV 比较:好
    比较或:好
    比较和:好的
    顺序增量:确定
    Solid Bits:好的
    块顺序:确定
    棋盘:确定
    位扩展:好的
    位翻转:好的
    步行的人:好的
    步行零度:好的

    --------------------------------------------------------

    编辑:我用 memtester 大小 0x080000*32运行它,它也通过了:

    memtester 版本4.6.0-ti (64位)
    版权所有(C) 2001-2020 Charles Cazabon。
    获得 GNU 通用公共许可证第2版许可(仅限)。

    正在从0x82000000开始测试内存、大小为0x1000000...

    环路1:
    固定地址:确定
    随机值:好的
    比较 XOR:确定
    比较子:好
    比较 MUL:好
    DIV 比较:好
    比较或:好
    比较和:好的
    顺序增量:确定
    Solid Bits:好的
    块顺序:确定
    棋盘:确定
    位扩展:好的
    位翻转:好的
    步行的人:好的
    步行零度:好的

    环路2:
    固定地址:确定
    随机值:好的
    比较 XOR:确定
    比较子:好
    比较 MUL:好
    DIV 比较:好
    比较或:好
    比较和:好的
    顺序增量:确定
    Solid Bits:好的
    块顺序:确定
    棋盘:测试63.

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

    由于这些设置已通过、我认为 Linux 可能会通过此配置启动。 不是-仍然会卡住。

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

    嗨、Greg、奇怪的行为。  您能否发送它卡住时的完整引导日志?

    您是否碰巧将 JTAG 连接到了电路板?

    您是否尝试过 CWL=9和 CWL=11?   

    现在我有点迷路了、关于发生了什么。  是否有任何与供应商联系的运气?

    此致、

    James

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

    尊敬的 James:

    我已经用 CWL=9测试,但我很确定我尝试了 CWL=11。 我再试一次以确定。

    我们确实有 JTAG 和 XDS110调试探针。

    我们的 ISSI 代表今天刚回到我的身边、因为他上周不在办公室。 我希望他能让我与 ISSI 工程团队联系。 当我了解更多信息时、我一定会更新该主题。

    同时、我修改了 tests.c 以打印一些调试数据、这样可以查看地址测试失败的地方。 我感到有点惊讶的是、它在 I 循环的中途出现了失败。 对于它的价值,这里有4个 memtests 输出失败的*P1不等式和 I/count。

    memtester version 4.6.0-ti (64-bit)
    Copyright (C) 2001-2020 Charles Cazabon.
    Licensed under the GNU General Public License version 2 (only).
    
    Testing memory starting 0x82000000, size 0x2000000...
    
    Loop 1:
                       Stuck Address: testing   0
    *p1 = 0xd25ad25a != 0x83170878, i = 0x45c21e/0x800000
    FAILURE: possible bad address line at physical address 0x0000000083170878.
    Skipping to next test...
                        Random Value:  ok
    
    memtester version 4.6.0-ti (64-bit)
    Copyright (C) 2001-2020 Charles Cazabon.
    Licensed under the GNU General Public License version 2 (only).
    
    Testing memory starting 0x82000000, size 0x2000000...
    
    Loop 1:
                       Stuck Address: testing   0
    *p1 = 0xd25ad25a != 0x83172480, i = 0x45c920/0x800000
    FAILURE: possible bad address line at physical address 0x0000000083172480.
    Skipping to next test...
    
    memtester version 4.6.0-ti (64-bit)
    Copyright (C) 2001-2020 Charles Cazabon.
    Licensed under the GNU General Public License version 2 (only).
    
    Testing memory starting 0x82000000, size 0x2000000...
    
    Loop 1:
                       Stuck Address: testing   0
    *p1 = 0xd25bd25a != 0x831428c8, i = 0x450a32/0x800000
    FAILURE: possible bad address line at physical address 0x00000000831428c8.
    Skipping to next test...
    
    memtester version 4.6.0-ti (64-bit)
    Copyright (C) 2001-2020 Charles Cazabon.
    Licensed under the GNU General Public License version 2 (only).
    
    Testing memory starting 0x82000000, size 0x2000000...
    
    Loop 1:
                       Stuck Address: testing   0
    *p1 = 0xd25ad25a != 0x83112da8, i = 0x444b6a/0x800000
    FAILURE: possible bad address line at physical address 0x0000000083112da8.
    Skipping to next test...
    

    初始 DDR4训练值是否可能处于边缘状态、并在某种情况下重新训练到更好的值? 我离开了一个周末运行的测试,它成功地完成了近100个循环后,初始地址失败。

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

    好的、感谢您提供额外的信息。  有些奇怪的事情正在进行,特别是如果你可以运行过夜没有失败!

    我的想法是在无法查看故障地址处的行为后立即中断。  在该位置打开存储器浏览器以查看可以读取的内容、并查看您是否可以成功地查看/标记值。  这可以让我们了解是读取还是写入失败。

    其实,我只是想其他的东西。  我认为地址测试只是将地址作为数据(或其补码)写入自身。  为什么仍然出现0xd25ad25a 故障?  您是否碰巧更改了 DTS 以适应您只拥有1GB 内存的事实?  SDK 本身具有2GB (用于支持 EVM 上的总存储器)、因此 DTS 中有几个条目需要更改。  一些信息在这里: https://dev.ti.com/tirex/explore/content/am64x_academy_10_00_00_01/am64x_academy_10_00_00_01/source/linux/ch-porting/porting-uboot.html#modifying-ram-size

    请告诉我您所使用的 SDK 版本、某些信息可能与最新的 SDK 版本相对应。  

    我们已经看到、如果 SDK 未配置电路板上的代表性存储器、则推测取数据或别名会出现问题。  不知道为什么这不会显示在其他存储器中、但仍然需要校正。

    此致、

    James

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

    我将使用最新的 SDK (ti-processor-sdk-linux-am64xx-EVM-10.01.10.04)。 我在存储器部分修改了 k3-am642-evm.dts、但很容易出错:

    内存@8000000{
    引导全部;
    device_type ="存储器";
    /* 2G RAM */
    /* reg =<0x00000000 0x80000000 0x00000000 0x80000000>;*//* GED:2GB EVM DDR4大小*/
    /* 1G RAM */
    REG =<0x00000000 0x80000000 0x00000000 0x40000000>;/* GED:我们的1GB 大小。 这是依据 Resource Explorer >培训> AM64x Academy - 9.02.00.00 v1 > Linux >将 Linux 移植到定制硬件>移植 U-Boot *
    };

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

    好的、看起来是正确的。

    我仍然对失败结果感到有点困惑、如果0xd25ad25a 的再次出现是一个线索。  我希望每个32位字的地址或者地址的补码。   

    另外、我想知道是否能删除在失败时切换到下一个测试的代码。  我想看看是否还有其他故障。

    此致、

    James

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

    好主意。 我想我只能在不匹配时返回0、而不是-1。 我还开始打印先前的值以查看它们是什么(当然它们匹配)。 我不确定此测试是如何工作的、但这些值是0x8312eea4的补码、这是有道理的、因为这会是一个奇数地址:

    环路1:
    卡住的地址:测试0
    Prev_*p1 = 0x7ced115b、prev_tern = 0x7ced115b
    *p1 = 0xd25ad25a!= 0x8312eea8、I = 0x44bbaa/0x800000

    我将在获得更多结果时更新。

    Greg

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

    James、

    感谢您建议让测试运行。 令人惊讶的是、只有大约80个失败的地址。

    下面是我运行的一个测试。 该代码输出之前的两次迭代传递、然后是失败的结果。 这些故障始终发生在 j=0外部环路中。 测试 在剩余的 j=0循环和所有后续的 j 循环中无故障地继续进行。  现在我将运行另一个更长的测试、以验证在下一次主循环迭代中是否没有地址错误。  

    我想,没有办法知道是否写错,还是读错. 0xd25ad25a 来自哪里? 想法?

    Testing memory starting 0x82000000, size 0x2000000...
    
    Loop 1:
                       Stuck Address: testing   0
    i = 4524976, p1 = 0x83142ec0, *p1 = 0x83142ec0, t = 0x83142ec0
    i = 4524977, p1 = 0x83142ec4, *p1 = 0x7cebd13b, t = 0x7cebd13b
    i = 4524978, p1 = 0x83142ec8, *p1 = 0xd25ad25a, t = 0x83142ec8
    i = 4524979, p1 = 0x83142ecc, *p1 = 0xd25ad25a, t = 0x7cebd133
    i = 4524980, p1 = 0x83142ed0, *p1 = 0xd25ad25a, t = 0x83142ed0
    i = 4524981, p1 = 0x83142ed4, *p1 = 0xd25ad25a, t = 0x7cebd12b
    i = 4524982, p1 = 0x83142ed8, *p1 = 0xd25ad25a, t = 0x83142ed8
    i = 4524983, p1 = 0x83142edc, *p1 = 0xd25ad25a, t = 0x7cebd123
    i = 4524984, p1 = 0x83142ee0, *p1 = 0xd25ad25a, t = 0x83142ee0
    i = 4524985, p1 = 0x83142ee4, *p1 = 0xd25ad25a, t = 0x7cebd11b
    i = 4524986, p1 = 0x83142ee8, *p1 = 0xd25ad25a, t = 0x83142ee8
    i = 4524987, p1 = 0x83142eec, *p1 = 0xd25ad25a, t = 0x7cebd113
    i = 4524988, p1 = 0x83142ef0, *p1 = 0xd25ad25a, t = 0x83142ef0
    i = 4524989, p1 = 0x83142ef4, *p1 = 0xd25ad25a, t = 0x7cebd10b
    i = 4524990, p1 = 0x83142ef8, *p1 = 0xd25ad25a, t = 0x83142ef8
    i = 4524991, p1 = 0x83142efc, *p1 = 0xd25ad25a, t = 0x7cebd103
    i = 4524992, p1 = 0x83142f00, *p1 = 0xd25ad25a, t = 0x83142f00
    i = 4524993, p1 = 0x83142f04, *p1 = 0xd25ad25a, t = 0x7cebd0fb
    i = 4524994, p1 = 0x83142f08, *p1 = 0xd25ad25a, t = 0x83142f08
    i = 4524995, p1 = 0x83142f0c, *p1 = 0xd25ad25a, t = 0x7cebd0f3
    i = 4524996, p1 = 0x83142f10, *p1 = 0xd25ad25a, t = 0x83142f10
    i = 4524997, p1 = 0x83142f14, *p1 = 0xd25ad25a, t = 0x7cebd0eb
    i = 4524998, p1 = 0x83142f18, *p1 = 0xd25ad25a, t = 0x83142f18
    i = 4524999, p1 = 0x83142f1c, *p1 = 0xd25ad25a, t = 0x7cebd0e3
    i = 4525000, p1 = 0x83142f20, *p1 = 0xd25ad25a, t = 0x83142f20
    i = 4525001, p1 = 0x83142f24, *p1 = 0xd25ad25a, t = 0x7cebd0db
    i = 4525002, p1 = 0x83142f28, *p1 = 0xd25ad25a, t = 0x83142f28
    i = 4525003, p1 = 0x83142f2c, *p1 = 0xd25ad25a, t = 0x7cebd0d3
    i = 4525004, p1 = 0x83142f30, *p1 = 0xd25ad25a, t = 0x83142f30
    i = 4525005, p1 = 0x83142f34, *p1 = 0xd25ad25a, t = 0x7cebd0cb
    i = 4525006, p1 = 0x83142f38, *p1 = 0xd25ad25a, t = 0x83142f38
    i = 4525007, p1 = 0x83142f3c, *p1 = 0xd25ad25a, t = 0x7cebd0c3
    i = 4525008, p1 = 0x83142f40, *p1 = 0xd25ad25a, t = 0x83142f40
    i = 4525009, p1 = 0x83142f44, *p1 = 0xd25ad25a, t = 0x7cebd0bb
    i = 4525010, p1 = 0x83142f48, *p1 = 0xd25ad25a, t = 0x83142f48
    i = 4525011, p1 = 0x83142f4c, *p1 = 0xd25ad25a, t = 0x7cebd0b3
    i = 4525012, p1 = 0x83142f50, *p1 = 0xd25ad25a, t = 0x83142f50
    i = 4525013, p1 = 0x83142f54, *p1 = 0xd25ad25a, t = 0x7cebd0ab
    i = 4525014, p1 = 0x83142f58, *p1 = 0xd25ad25a, t = 0x83142f58
    i = 4525015, p1 = 0x83142f5c, *p1 = 0xd25ad25a, t = 0x7cebd0a3
    i = 4525016, p1 = 0x83142f60, *p1 = 0xd25ad25a, t = 0x83142f60
    i = 4525017, p1 = 0x83142f64, *p1 = 0xd25ad25a, t = 0x7cebd09b
    i = 4525018, p1 = 0x83142f68, *p1 = 0xd25ad25a, t = 0x83142f68
    i = 4525019, p1 = 0x83142f6c, *p1 = 0xd25ad25a, t = 0x7cebd093
    i = 4525020, p1 = 0x83142f70, *p1 = 0xd25ad25a, t = 0x83142f70
    i = 4525021, p1 = 0x83142f74, *p1 = 0xd25ad25a, t = 0x7cebd08b
    i = 4525022, p1 = 0x83142f78, *p1 = 0xd25ad25a, t = 0x83142f78
    i = 4525023, p1 = 0x83142f7c, *p1 = 0xd25ad25a, t = 0x7cebd083
    i = 4525024, p1 = 0x83142f80, *p1 = 0xd25ad25a, t = 0x83142f80
    i = 4525025, p1 = 0x83142f84, *p1 = 0xd25ad25a, t = 0x7cebd07b
    i = 4525026, p1 = 0x83142f88, *p1 = 0xd25ad25a, t = 0x83142f88
    i = 4525027, p1 = 0x83142f8c, *p1 = 0xd25ad25a, t = 0x7cebd073
    i = 4525028, p1 = 0x83142f90, *p1 = 0xd25ad25a, t = 0x83142f90
    i = 4525029, p1 = 0x83142f94, *p1 = 0xd25ad25a, t = 0x7cebd06b
    i = 4525030, p1 = 0x83142f98, *p1 = 0xd25ad25a, t = 0x83142f98
    i = 4525031, p1 = 0x83142f9c, *p1 = 0xd25ad25a, t = 0x7cebd063
    i = 4525032, p1 = 0x83142fa0, *p1 = 0xd25ad25a, t = 0x83142fa0
    i = 4525033, p1 = 0x83142fa4, *p1 = 0xd25ad25a, t = 0x7cebd05b
    i = 4525034, p1 = 0x83142fa8, *p1 = 0xd25ad25a, t = 0x83142fa8
    i = 4525035, p1 = 0x83142fac, *p1 = 0xd25ad25a, t = 0x7cebd053
    i = 4525036, p1 = 0x83142fb0, *p1 = 0xd25ad25a, t = 0x83142fb0
    i = 4525037, p1 = 0x83142fb4, *p1 = 0xd25ad25a, t = 0x7cebd04b
    i = 4525038, p1 = 0x83142fb8, *p1 = 0xd25ad25a, t = 0x83142fb8
    i = 4525039, p1 = 0x83142fbc, *p1 = 0xd25ad25a, t = 0x7cebd043
    i = 4525040, p1 = 0x83142fc0, *p1 = 0xd25ad25a, t = 0x83142fc0
    i = 4525041, p1 = 0x83142fc4, *p1 = 0xd25ad25a, t = 0x7cebd03b
    i = 4525042, p1 = 0x83142fc8, *p1 = 0xd25ad25a, t = 0x83142fc8
    i = 4525043, p1 = 0x83142fcc, *p1 = 0xd25ad25a, t = 0x7cebd033
    i = 4525044, p1 = 0x83142fd0, *p1 = 0xd25ad25a, t = 0x83142fd0
    i = 4525045, p1 = 0x83142fd4, *p1 = 0xd25ad25a, t = 0x7cebd02b
    i = 4525046, p1 = 0x83142fd8, *p1 = 0xd25ad25a, t = 0x83142fd8
    i = 4525047, p1 = 0x83142fdc, *p1 = 0xd25ad25a, t = 0x7cebd023
    i = 4525048, p1 = 0x83142fe0, *p1 = 0xd25ad25a, t = 0x83142fe0
    i = 4525049, p1 = 0x83142fe4, *p1 = 0xd25ad25a, t = 0x7cebd01b
    i = 4525050, p1 = 0x83142fe8, *p1 = 0xd25ad25a, t = 0x83142fe8
    i = 4525051, p1 = 0x83142fec, *p1 = 0xd25ad25a, t = 0x7cebd013
    i = 4525052, p1 = 0x83142ff0, *p1 = 0xd25ad25a, t = 0x83142ff0
    i = 4525053, p1 = 0x83142ff4, *p1 = 0xd25ad25a, t = 0x7cebd00b
    i = 4525054, p1 = 0x83142ff8, *p1 = 0xd25ad25a, t = 0x83142ff8
    i = 4525055, p1 = 0x83142ffc, *p1 = 0xd25ad25a, t = 0x7cebd003

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

    这真的很令人困惑!  您是否可以中断 JTAG 来检查这些地址?    

    此致、

    James

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

    我不确定 我 是否知道如何使用 JTAG 或者是否可以将其分解、但我当然可以尝试一下。 目前、我正在编译 u-boot、并将文件移到 SD 卡以进行引导。 我通常的程序是对电路板进行下电上电、因此是一个完整的 POR。

    我已经运行了很多测试,故障地址可以在不同的地址,总数可以在数百。 无论发生什么情况、它似乎与存储器测试异步。

    此外、我们的电路板有一个 FPGA 连接到 AM6442上的复位信号、我可以将 SOC_WARM_RESETz 置为有效。 当我 发出热复位时、仍然会看到故障、但没有0xd25ad25a 值。 而是与之前通过一个地址关闭的测试类似。 这让我觉得在一段时间内有一些东西会影响写入。 0xd25ad25a 是否可以是 ISSI 器件中的上电复位值、并且第一个地址测试 无法写入这些位置?  

    我将附加下面热启动的一部分调试输出。

    Testing memory starting 0x82000000, size 0x2000000...
    
    Loop 1:
                       Stuck Address: testing   0
    i = 4475608, p1 = 0x83112b60, *p1 = 0x83112b60, t = 0x83112b60
    i = 4475609, p1 = 0x83112b64, *p1 = 0x7ceed49b, t = 0x7ceed49b
    i = 4475610, p1 = 0x83112b68, *p1 = 0x7ceed497, t = 0x83112b68
    i = 4475611, p1 = 0x83112b6c, *p1 = 0x83112b6c, t = 0x7ceed493
    i = 4475612, p1 = 0x83112b70, *p1 = 0x7ceed48f, t = 0x83112b70
    i = 4475613, p1 = 0x83112b74, *p1 = 0x83112b74, t = 0x7ceed48b
    i = 4475614, p1 = 0x83112b78, *p1 = 0x7ceed487, t = 0x83112b78
    i = 4475615, p1 = 0x83112b7c, *p1 = 0x83112b7c, t = 0x7ceed483
    i = 4475616, p1 = 0x83112b80, *p1 = 0x7ceed47f, t = 0x83112b80
    i = 4475617, p1 = 0x83112b84, *p1 = 0x83112b84, t = 0x7ceed47b
    i = 4475618, p1 = 0x83112b88, *p1 = 0x7ceed477, t = 0x83112b88
    i = 4475619, p1 = 0x83112b8c, *p1 = 0x83112b8c, t = 0x7ceed473
    i = 4475620, p1 = 0x83112b90, *p1 = 0x7ceed46f, t = 0x83112b90
    i = 4475621, p1 = 0x83112b94, *p1 = 0x83112b94, t = 0x7ceed46b
    i = 4475622, p1 = 0x83112b98, *p1 = 0x7ceed467, t = 0x83112b98
    i = 4475623, p1 = 0x83112b9c, *p1 = 0x83112b9c, t = 0x7ceed463
    i = 4475624, p1 = 0x83112ba0, *p1 = 0x7ceed45f, t = 0x83112ba0
    i = 4475625, p1 = 0x83112ba4, *p1 = 0x83112ba4, t = 0x7ceed45b
    i = 4475626, p1 = 0x83112ba8, *p1 = 0x7ceed457, t = 0x83112ba8
    i = 4475627, p1 = 0x83112bac, *p1 = 0x83112bac, t = 0x7ceed453
    i = 4475628, p1 = 0x83112bb0, *p1 = 0x7ceed44f, t = 0x83112bb0
    i = 4475629, p1 = 0x83112bb4, *p1 = 0x83112bb4, t = 0x7ceed44b
    i = 4475630, p1 = 0x83112bb8, *p1 = 0x7ceed447, t = 0x83112bb8
    i = 4475631, p1 = 0x83112bbc, *p1 = 0x83112bbc, t = 0x7ceed443
    i = 4475632, p1 = 0x83112bc0, *p1 = 0x7ceed43f, t = 0x83112bc0
    i = 4475633, p1 = 0x83112bc4, *p1 = 0x83112bc4, t = 0x7ceed43b
    i = 4475634, p1 = 0x83112bc8, *p1 = 0x7ceed437, t = 0x83112bc8
    i = 4475635, p1 = 0x83112bcc, *p1 = 0x83112bcc, t = 0x7ceed433
    i = 4475636, p1 = 0x83112bd0, *p1 = 0x7ceed42f, t = 0x83112bd0
    i = 4475637, p1 = 0x83112bd4, *p1 = 0x83112bd4, t = 0x7ceed42b
    i = 4475638, p1 = 0x83112bd8, *p1 = 0x7ceed427, t = 0x83112bd8
    i = 4475639, p1 = 0x83112bdc, *p1 = 0x83112bdc, t = 0x7ceed423
    i = 4475640, p1 = 0x83112be0, *p1 = 0x7ceed41f, t = 0x83112be0
    i = 4475641, p1 = 0x83112be4, *p1 = 0x83112be4, t = 0x7ceed41b
    i = 4475642, p1 = 0x83112be8, *p1 = 0x7ceed417, t = 0x83112be8
    i = 4475643, p1 = 0x83112bec, *p1 = 0x83112bec, t = 0x7ceed413
    i = 4475644, p1 = 0x83112bf0, *p1 = 0x7ceed40f, t = 0x83112bf0
    i = 4475645, p1 = 0x83112bf4, *p1 = 0x83112bf4, t = 0x7ceed40b
    i = 4475646, p1 = 0x83112bf8, *p1 = 0x7ceed407, t = 0x83112bf8
    i = 4475647, p1 = 0x83112bfc, *p1 = 0x83112bfc, t = 0x7ceed403
    i = 4475648, p1 = 0x83112c00, *p1 = 0x7ceed3ff, t = 0x83112c00
    i = 4475649, p1 = 0x83112c04, *p1 = 0x83112c04, t = 0x7ceed3fb
    i = 4475650, p1 = 0x83112c08, *p1 = 0x7ceed3f7, t = 0x83112c08
    .
    .
    .
    i = 4475833, p1 = 0x83112ee4, *p1 = 0x83112ee4, t = 0x7ceed11b
    i = 4475834, p1 = 0x83112ee8, *p1 = 0x7ceed117, t = 0x83112ee8
    i = 4475835, p1 = 0x83112eec, *p1 = 0x83112eec, t = 0x7ceed113
    
    

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

    存储器在上电时应具有随机数据、因此我仍不确定0xd25ad25a 来自哪里。  它可以是在初始化过程中执行的训练数据、但我以前从未见过。

    我认为热复位测试显示写入失败、尤其是如果您认为存储器中的数据是先前运行的测试中的过时数据。   

    最后一个日志似乎每隔一个地址显示一个故障、而之前的日志显示连续地址上的稳定故障(我读的正确吗?)。 故障似乎发生在地址组中、并且或多或少发生在组边界上。  电路板上的 BA 信号是否有特殊之处(例如相对于其他地址信号的布线不同、VTT 端接不同等)

    此致、

    James

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

    我从 ISSI 那里回来、他们说这些旧版芯片上存在错误的 CA 奇偶校验警报问题、并跳过该命令。 这听起来是否可能是缺失写入的原因? 这是否也表明了我们可能会在何处看到这些错误、例如在特定的地址边界上?

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

    好的、这可能是个问题。  如果内存认为存在 CA 奇偶校验错误、它将忽略该命令。  因此、这可能就是您在该区域看到过时数据的原因。  在 DDR 工具中默认启用 CA 奇偶校验。

    可以在 DDR 工具的 DRAM 时序 A 部分中禁用 CA 奇偶校验。  我想这应该是你需要做的一切。  尝试使用新配置

    此致、

    James

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

    我已经发现我可以禁用 CA 奇偶校验并尝试它。 当然、它通过了所有内存测试、而且我让它引导 Linux! 如果禁用 CA 奇偶校验会产生什么后果?  

    ISSI 将向我们发送 更新的生产日期代码器件、我们很可能会重新设计我们的原型以验证新器件是否正常工作。  我感到有点沮丧的是、没有提及这一点的勘误表、并且在供应链中存在已知的边缘部分。

    我认为这个神秘是解决了的。 非常感谢您的帮助。  

    Greg