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.

[参考译文] TMS320DM8168:PCIe 在加电时不会链路(LTSSM 不处于 L0状态)

Guru**** 2581345 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/623048/tms320dm8168-pcie-does-not-link-up-ltssm-is-not-in-l0-state-on-power-up

器件型号:TMS320DM8168

TMS320DM8168 PCI Express 链路启动故障。

您好!

我们使用两个 DM8168和两个 FPGA 设计了一个定制板、这两个 FPGA 都连接到 IDT 开关32NT24B。 IDT 上行端口连接到另一个 IDT 开关(位于不同的板上)。

两个 DM8168均配置为 EP、Gen2.0、4通道。

有时  (10选1)在加电时、观察(轮询) Debug0寄存器(根据建议的 EP 初始化序列)时、我们会看到 LTSSM 状态保持在0x3 (池合规性)、而不会移动到0x11 (L0)状态。  

检查并验证了以下寄存器、PCIESS 未复位、PLL 已锁定、值符合预期且 LTSSM 已启用。

所有 EP (DM8168和 FPGA) 都使用相同的时钟发生器供电。

在两个 DM8168上都观察到了该问题、但在上电时没有。

PCIe_CFG: 0x48140640:01C90300

RM_DEFAULT_RSTCTRL: 0x48180b10:00000003

CM_DEFAULT_PCI_CLKSTCTRL: 0x48180510:00000102

CM_DEFAULT_PCI_CLKCTRL: 0x48180578:00000002

调试0: 0x51001728:00AED703

调试1: 0x5100172c:08200000

我还查看了这篇文章、  

https://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/490939

尚未尝试强制使用 Gen1

 设备未闲置,仍在运行,但链接在下次通电之前不会打开。  

使用示波器测量电压、时钟和复位以找出任何问题。 它似乎是必需的。

会在室温下发生。

每次上电时都执行 DDR3测试、未失败。

您能否建议您查看什么以找到有关此行为的任何线索?

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

    您好、Oded、

    [报价用户="Oded Asulin"]两个 DM8168都配置为 EP、Gen2.0、4通道。[/quot]

    DM816x PCIe 支持1通道或2通道、但不支持4通道。 它有一个端口、两个通道。

    您是否使用 DM816x EZSDK 5.05.02.00? 您能否尝试重现 DM816x TI EVM 的问题?

    您是否还可以监控以下位并查看它们记录的内容:

    LINK_STAT_CTRL[27] LINK_TUNING

    DEBUG1[29] link_in_training

    另请参阅以下指针是否将在帮助中:

    DM816x TRM、第17.2.9.3.1.1节 EP 模式下的主机复位请求中断接收

    此致、
    帕维尔

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

    您好、Pavel、
    感谢你的帮助。
    您对链路特性正确无误。 链路宽度为 x2、第1.0代(2.5G)为 EP。
    我无法在 EVM 上重复此问题、因为我们使用定制板作为整个系统的一部分。
    我们使用 DVR RDK 4.01

    我已经读取了您在失败期间询问的寄存器字段、
    LINK_STAT_CTRL[27] LINK_TUNING ="0"
    DEBUG1[29] link_in_training ='0'、
    因此、我假设 LTSSM 未执行链路训练



    我注意到了其他一些东西。 我不确定它是否相关、或者我是否有其他问题。
    这种情况很少发生、但有时在上电时、我会看到一个问题、而 PCIe 链路状态为正常、但软件会持续轮询 bar3寄存器值、寻找非零值。 它从未在这项任务中取得成功。 尽管从 TI 控制台读取会返回预期的 bar2值(这些值由外部 RC 初始化、RC 已成功完成此任务)。 在此故障期间、我还注意到 DIVCLK 未运行。  

    PCIe_STSPLL = 0x1、而正常运行时为0x3

    这意味着 DIVCLK='0'。 DIVCLK 未运行。

    PCIe_CFGPLL = 0x01C9
    PCIe_CFGPLL[ENPLL、#16]= 1’
    PCIe_CFGPLL[ENDIVCLK、#24]= 1’

    您能解释一下这个时钟的优势吗? 它路由到哪里? 如果它没有运行、会产生什么影响? 什么会影响它不运行?

    DIVCLK='0'可以解决软件无法读取 bar2寄存器的问题吗? 如果是这样、它如何从控制台成功?

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

    [引用 user="Oded Absulin">您对链接特性正确无误。 链路宽度为 x2、第1.0代(2.5G)为 EP。
    我无法在 EVM 上重复此问题、因为我们使用定制板作为整个系统的一部分。
    我们使用 DVR RDK 4.01

    我已经读取了您在失败期间询问的寄存器字段、
    LINK_STAT_CTRL[27] LINK_TUNING ="0"
    DEBUG1[29] link_in_training ='0'、
    因此、我假设 LTSSM 未执行链路训练[/报价]

    确保您使用的是最新版本的 RDK Linux 内核。

    您表示很少观察到此问题(链路训练失败)、对吧? 这可能是定制板的硬件故障。 请使用 DM816x 数据表和 DM816x TI EVM 仔细检查您的设计。

    DM814x TI EVM 中还有针对 PCIe 的硬件诊断测试。 您可以检查此测试是否可应用于您的 DM816x 定制板。

    Software -> Diagnostic Software -> Base Board -> Rev D -> src -> CCS_Test_code -> Base_Board -> PCIe

    我将检查您的另一个问题并返回给您。

    此致、
    帕维尔

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

    [引用用户="Oded Absulin"]

    我注意到了其他一些东西。 我不确定它是否相关、或者我是否有其他问题。
    这种情况很少发生、但有时在上电时、我会看到一个问题、而 PCIe 链路状态为正常、但软件会持续轮询 bar3寄存器值、寻找非零值。 它从未在这项任务中取得成功。 尽管从 TI 控制台读取会返回预期的 bar2值(这些值由外部 RC 初始化、RC 已成功完成此任务)。 在此故障期间、我还注意到 DIVCLK 未运行。  

    PCIe_STSPLL = 0x1、而正常运行时为0x3

    这意味着 DIVCLK='0'。 DIVCLK 未运行。

    PCIe_CFGPLL = 0x01C9
    PCIe_CFGPLL[ENPLL、#16]= 1’
    PCIe_CFGPLL[ENDIVCLK、#24]= 1’

    您能解释一下这个时钟的优势吗? 它路由到哪里? 如果它没有运行、会产生什么影响? 什么会影响它不运行?

    DIVCLK='0'可以解决软件无法读取 bar2寄存器的问题吗? 如果是这样、它如何从控制台成功?

    [/报价]

    是的、位[9] DIVCLK 也应为1、PCIe 才能正常工作。 更多详细信息、请参阅 DM816x TRM (以下各节):

    17.1.4.4时钟、复位、电源控制逻辑
    17.2.1时钟控制


    DIVCLK 是 PCIe 串行器/解串器 PLL 的输出时钟和 PCIe 模块的输入时钟(功能时钟)。

    检查100MHz REFCLK 是否正确(PCIe 串行器/解串器 PLL 的输入时钟)且稳定。 此外、检查工作用例和非工作用例之间的 PRCM PCIe 相关寄存器(CM_DEFAULT_PCI_CLKSTCTRL、CM_DEFAULT_PCI_CLKCTRL、RM_DEFAULT_RSTCTRL[7] PCI_LRST、RM_DEFAULT_RSTSTST[7] PCI_LRST)是否存在差异

    此致、
    帕维尔

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

    CM_DEFAULT_PCI_CLKSTCTRL、0x48180510 = 0x102 (与正常操作相同)
    CM_DEFAULT_PCI_CLKCTRL、0x48180578= 0x00000002 (与正常操作相同)
    RM_DEFAULT_RSTCTRL[7] PCI_LRST = 0、0x48180b10=0x00000003 (与正常运行相同)
    RM_DEFAULT_RST[7] PCI_LRST=‘1’*,0x48180b14= 0xFC (与正常运行相同)、考虑到在上电期间不会清除此状态。 我将从控制台清除它、以验证 LRST 是否不会持续处于复位状态(可能不是、链路在故障期间处于 L0状态)。

    我还在几次正常上电期间读取 PCIe_CFG 寄存器。 我看到在许多情况下 DIVCLK 未运行、PLL 被锁定(LOCK、bit[8]='1')、PCIe 链路为 L0、并且在 PCI 域中没有问题。

    您能告诉我在哪里会看到由于缺少 DIVLCK 而出现的性能下降吗? (您已经提到 DIVCLK 是 PCIe 模块的输入时钟(功能时钟))。

    在您发送的指针中、我没有看到任何有关"div x 5" PLL 时钟(DIVCLK)的解释、只是一般性的解释。 该时钟是否是提到的250MHz 时钟?
    我将尝试测量/更改 REFCLK 输入时钟、以保持 DIVCLK 始终运行。

    感谢您的帮助、
    此致、
    Oded
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Pavel:
    您能否分享一些有关 DIVCLK 状态的信息。 记录的信息不够清晰、
    谢谢、
    Oded
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Pavel:
    我们需要验证 DIVCLK 对 PCIe 功能的影响。
    我们已禁用 DIVCLK (EN-DIV-CLK=0,PCI_CFG 寄存器中的位24)。
    我们没有发现 PCIe 链路出现任何下降。 因此、我们不确定是否仍要朝这个方向调查我们的问题。
    您能批准我们关于 DIVLCK 的假设吗?
    是否可以建议任何其他方向来调查我们的问题?

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

    请参阅以下 e2e 帖子:
    e2e.ti.com/.../426680

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

    e2e.ti.com/.../632753