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.

[参考译文] AM5728:无法访问 PCIe 寄存器

Guru**** 2589280 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/588830/am5728-unable-to-access-pcie-registers

器件型号:AM5728

您好!


我正在尝试在 AM5728上移植 RTOS。 我的 PCI 有一些问题。  

我已初始化时钟和 PLL,现在我希望两个 PCIe 子系统 都采用 RC 类型,但我无法访问 PCIe 子系统寄存器(0x5100 0000/0x5180 0000)。  我想我的 AXI 总线上有一个等待访问的通道。

看门狗驱动复位线。

我看 一下 PDK、但直到 现在我的代码中找不到我的错误。

请提供任何帮助。

Philippe。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您是否参考了处理器 SDK 软件包中用于 PCIe 初始化的任何 TI PCIe RTOS 驱动程序代码? ypu 可以查看 pdk_am57xx_1_0_x\packages/ti\drv\pcie\examples\src\pcie_sample.c、函数 pcieSerdesCfg ():

    PlatformPCIE_GPIO_Init();
    PlatformPCIE_PERSTn_Reset (0);

    PlatformPCIESS1ClockEnable();
    PlatformPCIESS2ClockEnable();
    PlatformPCIESS1PllConfig();
    PlatformPCIESSSetPhyMode();

    PlatformPCIESS1CtrlConfig();
    PlatformPCIESS2CtrlConfig();
    PlatformPCIESS1Reset();
    PlatformPCIESS2Reset();
    PlatformPCIESS1PhyConfig();
    PlatformPCIESS2PhyConfig();

    前两个函数特定于用于 GPIO 控制的 TI EVM。 其余内容适用于 AM5728 SOC。

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

    你(们)好

    感谢 Eric 的回答。

    我使用了 SDK 中的 PCIe_sample 作为指南。 我执行初始化阶段(时钟、PLL、控制和 phy 配置),它运行正常,但我始终遇到与我尝试设置 RC 模式或禁用链路(LTSSM)相同的问题。 我似乎无法访问 TI_CONF 寄存器空间。 当我尝试从0x5100 XXXX (控制器从机寄存器)读取地址时 ,系统挂起,WD 将重置控制器。 我猜我做了一些错误、但我直到现在都找不到什么。

    Philippe

     

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

    感谢您的更新! 为什么设置 RC 模式或禁用 LTSSM 存在问题。 PCIe_sample.c 代码具有用于设置 RC 模式和启用 LTSSM 的调用序列。 这是否适合您? 出现问题时、您是否能够读取0x5100_2100或0x5100_2104?

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

    尊敬的 Eric:

    实际上这是个问题、我无法访问该区域。 更进一步,当我尝试读取一个寄存器(例如0x5100 2100)时,L3被锁定,系统(一个多进程系统)挂起并停止刷新看门狗,然后在一小段时间后控制器复位。

    时钟和 PLL 已启动并锁定,我还启用了 PCIe 子系统上的电源(CTRL_MODULE_CORE) ,但我想知道是否忘记 了初始化操作,这可能解释为什么无法访问该地址空间 ? [控制器的其它部分工作正常:UART、SATA、以太网]。

    感谢你的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上,我的 DPP 和 APPL 似乎没有被锁定。 我不知道这两个问题(PLL 未锁定、PCIe 子系统无法访问)是否都已链接。
    时钟输入为19.2MHz、用于 DPLL 编程的值为:N = 7、M = 1125、M2 = 27和 SD_DIV = 11。
    您能不能告诉我 DPLL 不想锁定的不同原因吗? (可能是我忘记启用另一个时钟或门)
    感谢你的帮助

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

    当您有看门狗超时和控制器复位时、重新初始化 PCIe 模块的调用序列是什么?

    过去、我们反复进行测试:

    -已建立 PCIe 链路
    - PlatformPCIESS1Reset()
    -PlatformPCIESS1ClockEnable();
    -PlatformPCIESS2ClockEnable();
    -PlatformPCIESS1PllConfig();
    -PlatformPCIESSSetPhyMode();

    -PlatformPCIESS1CtrlConfig();
    -PlatformPCIESS2CtrlConfig();
    -PlatformPCIESS1Reset();
    -PlatformPCIESS2Reset();
    -PlatformPCIESS1PhyConfig();
    -PlatformPCIESS2PhyConfig();
    - setRC/EP 模式
    -设定栏、IB、OB
    -启用链路训练

    我们没有发现访问 PCIe 域寄存器和恢复链路的任何问题。 我们将 DPLL 锁定、然后将 APLL 锁定。 对于 DPLL 乘法器和除法器编号、请查看这些编号是否匹配:AM572 TRM 表26-50。 DPLL_PCIe_REF 更高功率比配置。 他们是否第一次工作、并在您再次对 DPLL 进行重新编程时保持不变?

    此致、Eric