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.

[参考译文] AM6422:LPDDR4 支持请求 — 引导期间挂起

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

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1575080/am6422-support-request-for-lpddr4---hang-during-boot

器件型号:AM6422
主题:AM6442SysConfig 中讨论的其他器件

工具/软件:

大家好、使用基于带有 LPDDR4 的 AM6442 的定制电路板 (ISSI IS43LQ16512B-053BLI 8Gb -> 1GB RAM)。 现在、我在让 LPDDR4 正确初始化/工作方面遇到了困难 — 我还在附加的文件中应用了用于转储存储器的补丁。

SDK:TI-PROCESSOR-SDK-LINUX-am64xx-EVM-11.01.05.03

注:k3-am642-sk.dts 包括“k3-am642.dtsi"-> SDK“ SDK 中不存在此项、但从 2024.04 开始? 会从那里拉出来。 这与 k3-am64.dtsi 之间的差异在文件之间没有区别。 假设这是 k3-am642-sk.dts 中的错误  

我已将.dtsi 重命名为.dtsi.txt 以附加到此处(否则将被拒绝)。

我猜某些内容没有配置正确、因为寄存器信息与.dtsi 文件中的信息不匹配

e2e.ti.com/.../k3_2D00_am64_2D00_muu_2D00_lp4_2D00_1600MTs.dtsi.txt

e2e.ti.com/.../muu_5F00_lpddr4_5F00_ddrss_5F00_dump.20251010.txt

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

    更多详细信息 — 我们目前实际加载的唯一选项是 UART 和 JTAG — 所有加载当前都是通过 UART 进行的。

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

    现在、您可以使用更多日志记录 enabled.e2e.ti.com/.../muu_5F00_lpddr4_5F00_ddrss_5F00_dump.20251010.2.txt

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

    所以 — 让我们回到开始。
    我能够通过 UART 加载 tiboot3.bin、但始终没有出现加载 (tispl.bin) 文件的提示。
    渐进调试表明、重新定位堆栈时处理器停止 (spl_relocation_stack_gd()、特别是在 dm_fixup_for_gd_move() 中) 。

    连接调试器并查看 0x8000 0000 的存储器边界、即使查看分配的特定区域、也是全 1 (FFFFFFFF)。

    因此、怀疑 LPDDR 未正确初始化、从而导致尝试更多测试、进而导致处理器挂起(地址唯一性测试)。 我猜有一个本地缓存、尝试将其刷写到 LPDDR 时会出现一些问题。

    您可以很高兴获得一些见解或帮助知道接下来要去哪里 — 我也验证了 LPDDR4 的输出电压。


    e2e.ti.com/.../without_5F00_extensive_5F00_dram_5F00_check.txt 

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

    你好,詹姆斯,对不起晚答复

    因此、对寄存器转储与配置文件进行的第一次比较表明、没有在 DDR 配置文件中正确编译。

    对于 AM64x SDK11.01、您应该将 DDR 配置文件放入 u-boot\arch\arm\dts 中、然后将 EVM 的现有#include 替换为 arch\arm\dts\k3-am642-r5-evm.dts 中的文件:  

    #include “k3-am642-evm.dts"</s>“

    #include “k3-am64-mu-lp4-1600MTs.dtsi"</s>“

    #include “k3-am64-ddr.dtsi"</s>“

    然后确保在编译时包含新文件。   

    为了确定编译是否正确、当您转储寄存器时、第一个值应具有“b",“,而、而不是“a",“,以、以指定它是 LPDDR4。

    0x0f308000 0x10460a01 //DDRSS_CTL_0_DATA

    此致、

    James

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

    您好、James:
    呃 — 我不能说我非常惊讶。通过查看 output_dir/r5/.config、看起来仍然存在对-evm 而不是-muu 的引用。 通过将以下内容添加到 R5 的.config 片段来清除该内容 (am64x_mu_r5.config):

    CONFIG_OF_LIST=“k3-am642-r5-mu"</s>“
    CONFIG_SPL_OF_LIST=“k3-am642-r5-mu"</s>“

    似乎是为了使“k3-am642-r5-evm"不再“不再被拉取。

    看起来它现在至少在 LPDDR 配置中进行拉取。 当尝试执行 get_ram_size () 调用时,它停止, 注释该调用,并在一些内存测试中放回,我们在读取时失败,该读取的值是全 0(而不是全 F ,所以耶!) 而不是预期值(尝试将地址值写入地址,然后读回)。

    接下来可能采取哪些措施?

    e2e.ti.com/.../registers_5F00_20251014.2.txt




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

    修改测试代码、使其在失败时不返回、而是按按钮(只是查看我们可以到达的位置)、看起来 memcpy 正在失败(使用 0 而不是 1)、因此我猜在尝试访问错误地址时不会立即停止、而是因为堆栈被拧紧(指向 0x0000 0000)而可能会停止



    e2e.ti.com/.../registers_5F00_20251014.3.txt

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

    因此、我尝试调整了一些 LPDDR 参数、包括将 FSP1/2 频率(从 800 降低到 667,因为这具有数据表中规定的时序)-附加了相关生成的 dtsi。 不知道我是否在这里树上了正确的树,但希望它可以给出一些见解。  
    e2e.ti.com/.../registers_5F00_20251014.7.667.txt
     e2e.ti.com/.../k3_2D00_am64_2D00_ddr_2D00_config.dtsi.txt

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

    您好、James:

    DDR 配置文件很可能出现问题。  您能否从 DDR 工具向我发送.syscfg 文件、这样我就可以看到您所做的更改并建议您尝试使用其他.dtsi?

    此外、似乎发生了寄存器转储、UART 连接会丢失很多字符、示例如下。  转储应转至 CTL_422、然后转至 PI_0、PI_1 等

    0x0f30813c 0x00000007 //DDRSS_CTL_79_DATA
    0x0f308140 0x00000010 //DDRSS_CTL_80_DATA
    0x0f308144 0x0000005e //DDRSS_CTL_DATA
    0x0f30a324 0x000200a7 //DDRSS_PI_201_DATA
    0x0f30a328 0x010000a7 //DDRSS_PI_202_DATA
    0x0f30a32c 0x000e000e //DDRSS_PI_203_DATA

    此致、

    James

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

    您好、James:
    以下应该是初始文件和文件。 我会试着去看看角色下降;这有点奇怪
    e2e.ti.com/.../am6442_5F00_lpddr4.syscfg.last.txte2e.ti.com/.../settings_5F00_info.syscfg.last_2E00_.txt
    e2e.ti.com/.../8546.settings_5F00_info.syscfg.txte2e.ti.com/.../am6442_5F00_lpddr4.syscfg.initial.txt

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

    所以这很奇怪 — 就输出问题而言,这似乎是一致的。  
    e2e.ti.com/.../dump_5F00_different_5F00_port_5F00_cable.txt
     

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

    大家好、James、我完成了配置、发现了几个问题。  请尝试使用附加的配置(我还添加了关联的.syscfg、以便您可以将其加载到 DDR 配置工具中

    /cfs-file/__key/communityserver-discussions-components-files/791/k3_2D00_am64_2D00_ddr_2D00_config_5F00_TImodified.dtsi

    /cfs-file/__key/communityserver-discussions-components-files/791/am6442_5F00_lpddr4.TImodified.syscfg

    /cfs-file/__key/communityserver-discussions-components-files/791/settings_5F00_info_5F00_allparameters.syscfg

    我认为主要的问题是您手动更改了读取延迟 (RL) 和写入延迟 (WL) 参数。  这些将根据所选的频率在工具中自动调整。  您为 1600MHz 选择了 RL/WL、而不是 800MHz

    同样、当您选择工作温度范围时、该工具将自动选择正确的刷新率 tREFI、并根据需要调整与高温运行相关的其他值。   

    还有一些其他的调整,如果你做一个比较,你可以看到的细节.  如果您对任何差异有任何疑问、请告知我、我可以解决这些问题。

    就可以尝试这些新的配置。  如果您仍有问题、我们可以进一步调试...

    此致、

    James

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

    您好、James:

    ARG — 由于某种原因,我读表为 MTS,而不是 MHz。 我会在几分钟后在这里拍一张照片、看看效果如何!
    谢谢、

    James

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

    您好、James:
    不幸的是,.dtsi 似乎没有解决问题(在这里附加了转储)。  e2e.ti.com/.../ti.k3_5F00_2D00_5F00_am64_5F00_2D00_5F00_ddr_5F00_2D00_5F00_config_5F00_5F00_5F00_TImodified.dtsi.txt

    我们遇到了一个稍微相关的问题(寄存器转储中缺少条目)、那就是用于 UART 转 USB 的 CP2105。 考虑到我们没有遇到任何字符损坏(仅完全丢弃)、并且它在相同的寄存器地址发生的非常一致、我的假设是 CP2105 中的缓冲区被淹没。 我在打印 ctrl 寄存器的循环中添加了一个小 nop 循环 — 看起来我们现在至少收到了所有这些寄存器。 如果还有其他缺失、请告诉我、我也会针对这些情况进行调整。


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

    已复制

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

    我尝试从附加的 settings_info_allparameters.sysconfig 生成.dtsi,使用它 — 有趣的是,生成的.dtsi 文件之间存在差异 — 但是结果相同(已附加)。

    有哪些合理的调试方法?

    e2e.ti.com/.../ti.sysconfig.dtsi.regdump.txt


    -乌什 — 也许不? 我很可能打开了多个 SysConfig 窗口并导出了错误的窗口。 会再次重试。

    更新 — 所以我还没有完全疯狂:这两个生成不同的.dtsi 输出(第二个也有 16GB 设置)
    /cfs-file/__key/communityserver-discussions-components-files/791/am6442_5F00_lpddr4.TImodified.syscfg
    /cfs-file/__key/communityserver-discussions-components-files/791/settings_5F00_info_5F00_allparameters.syscfg
    如果我生成第一个、它与 TImodified.dtsi 匹配、那么是的!


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

    因此、为了检查问题是否对所使用的频率敏感、将 FSP2 频率降至 267(仅手动更改)-仍然不会成功导致 reads.e2e.ti.com/.../267MHz.zipe2e.ti.com/.../set_5F00_to_5F00_267MHz.txt


    对我来说、这表明问题对频率不是特别敏感。

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

    你好,詹姆斯,这是很好的,你得到的 regdumptions 工作.  现在我可以看到、只有部分培训成功。  VREF 训练和写入矫正正在通过、但下一步是读取栅极矫正、这是失败的(并且所有后续训练步骤都失败并符合预期)。

    读取路径出现了问题。  对于读取路径、存储器驱动数据总线、而处理器将其端接。  您能检查一些基本事项吗:

    -所有 DDR 关联的电源轨的正确电压:

    处理器电压轨:

    • VDDS_DDR = VDDS_DDR_C = 1.1V
    • VDDA_PLL1 = 1.8V (AM64x)
    • VDD_CORE = 0.75V 或 0.85V

    存储器电压轨:

    • VDDQ = VDD2 = 1.1V
    • VDD1 = 1.8V  

    -确保 DQS 差分信号没有相互交换、或者在电路板上没有交换字节

    -确保在字节内不交换 DQ/DM 信号

    您是否在多个电路板上遇到了相同的行为?

    此致、

    James

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

    您好、James、仅供参考、下一个我在董事会办公室的机会将是在星期一 Morning GMT+2 上。
    现在我有三个主板、但这是我为使处理器正常运行而重新设计的唯一一个主板。 我应该能够再返修一次、看看它是否特定于电路板。
    在布局、基于原理图的方面、EEeeh。 看起来我已经翻转了 LPDDR (J8、J9) 处的 CK_A 线 — 或者我翻转了 LPDDR 处的 DSQ0/DSQ1 线。 您能否确认正确的分配?

    感谢您的支持、

    James

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

    您好、James:

    是的、它看起来差分 DQS 信号已经交换。  它应该是:

    DQSx -> DQS_t

    DQSx_n -> DQS_c

    CK 信号看起来正确。  基于此、培训结果是有意义的。   

    遗憾的是、寄存器配置中无法交换 AM64x 内部的 DQS 信号。  您必须在电路板上尝试进行此修改。  使用调制器、您可能能够正常工作(甚至在较低的频率下)、但信号完整性问题可能会妨碍工作。  最终、您必须修复原理图和电路板布局布线。

    此致、

    James