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.

[参考译文] Linux/AM5728:PCIe EP 参考时钟

Guru**** 2955430 points

Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/653443/linux-am5728-pcie-ep-reference-clock

器件型号:AM5728

工具/软件:Linux

您好!

我使用的是 AM5728-EVM 和 ti-processor-sdk-linux-am57xx-evm-04.01.00.06的定制板。

我们希望使用 PCIe 与 Windows PC 通信。

以下是我们所遇到的内容:

首先、如果我们要 与 Windows PC 和作为 EP 模式的 am5728-EVM 进行通信、 am5728-EVM 必须使用来自 RC (windows PC)的时钟并使用 同步模式。

通过 CM_CLKMODE_APLL_PCIe、位[7] 0x1同步模式更改:APLL 基准时钟来自 ACSPCIE。

我们更改 CTRL_CORE_SMA_SW_6.PCIe_TX_RX_CONTROL 位以更改 ACSPCIE 基准 时钟缓冲模式为 RX_MODE。

但这些窗口无法识别 am5728-EVM。

为了进行确认、我们将 uboot 处的 CTRL_core_SMA_SW_6.PCIe_TX_RX_CONTROL 更改为 TX_MODE、 并将 CM_CLKMODE_APLL_PCIe 位[7] 0x0:APLL 基准输入时钟来自 ADPLL。

ljcb_clkp 和 ljcb_clkn 没有100Mhz 时钟。我使用 devmem2工具检查寄存器值、该值已更改。

下面是我的问题:

(1)我们可以使用两个 am5728-EVM、一个用作 RC、另一个用作 EP、它可以 在异步模式下正常工作。因此、我认为 PCIe 硬件设计是好的。

(2) am5728-EVM 使用 PCIe 与 Windows PC 通信、我们必须将 ACSPCIE 缓冲器设置为 RX_MODE、并更改来自 ACSPCIE 的 APLL 基准输入时钟、我对吗?

(3)我在 uboot 更改寄存器0x4a00341c 和0x4a00821c、我们可以在文件系统中看到它已更改、为什么 ljcb_clkp 和 ljcb_clkn 在 TX_mode 没有信号输出?

(4)如果我们在 uboot 无法更改寄存器、您能告诉我可以在哪里更改它吗?

(5)最后 、 我们的目的是让 am5728-EVM (EP)使用 PCIe 与 Windows PC (RC)进行通信、TI 有一些有关这方面的文档?

任何帮助都将变得更好!

谢谢!

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

    我需要先获取一些背景信息。 您的电路板设计是基于 AM5728-IDK 还是 AM5728 GP EVM? 在(1)中、当您提到 AM5728 EVM 时、您是指定制板还是 TI EVM? 也就是说、当连接2个 AM5728 EVM 时、是 TI EVM 还是两个电路板? 寄存器的更改似乎是正确的。 我知道、在不修改硬件的情况下、我无法验证 TI EVM 上的 RX 模式。 对于 Tx 模式、如果我正确地记住、在 TI GP EVM 上、我需要移除 C426和 C427、以及 ljcb_clkn 和 ljcb_clkp 之间的并联100欧姆电阻器。 ljcb_clkn 和 ljcb_clkp 均应使用50欧姆的电阻器独立端接至 GND。 如果基于 AM5728 IDK、但位于 C438和 C439、则同样适用。

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

    连接到 Windows PC 时可能会出现其他问题。 请在论坛讨论 中查看、e2e.ti.com/.../630321

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

    您好、Rex

    首先、感谢您的回复!
    (1)我们基于 AM5728 GP EVM 进行设计。
    (2)当我提到 AM5728 EVM 时、我是指我的板
    (3)连接2个 AM5728 EVM 时、它们都是我们 的板。
    (4)感谢您的建议、我的主板不会移除"C426"和"C427"以及100欧姆电阻器、我会将其移除并再次检查。  

    (5)我想确认的是、在 TI 社区、我发现有人喜欢这个问题、但他使用了 SDK-3.00.04-Linux、他成功地在 uboot 更改了寄存器。但 SDK-3.00.04-Linux 不支持 EP 模式。

    我检查链接、我想确认的是、

    A.移除  "C426"和"C427"、100欧 姆电阻器将影响 RX_MODE?

    b."在我看来、AM57x 需要 Windows RC 驱动程序、但 TI 不提供。" 窗口 RC 驱动器、在哪里可以找到它?

    C. TI EVM 上的 RX 模式必须修改硬件、这意味着什么? 我应该 在哪里修改?

    d. EP 端必须在 RC 端之前加电和配置?因此、我们无法使用 RC(windows-PC)PCIe 接口为电路板供电、我是否这样做?

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

    您好、是的、

    移除 clkp 和 clkn 之间的 C426、C427和100欧姆电阻器可验证 Tx 模式。 它将 ljcb_clkp/n 与 CDCM 外部时钟断开。 因此、当将 ACSPCIE 编程为处于 Tx 模式时、可以在 ljcb 引脚上测量频率。 要验证 TI AM572x GP EVM 上的 Rx 模式、需要进行其他修改、但我们尚未完成。 在不同型号的硅平台上验证了 Rx 模式。 我没有 AM572x GP EVM 所需的 mod 信息、但对于变体 J6、我没有。 平台。 我不清楚它是如何映射到 AM572x GP EVM 的、  

    •PCIe 连接器为 J6 (Vayu) EVM 提供 REFCLK
    –取消装配电容器 C120/C125/C259/C262
    –如图所示、在 C120/C259和 C125/C262上填充0欧姆电阻器
    –取消装配电阻器 R806/R807
    –电阻 R223
    •如果 PCIe 连接器时钟为 LVDS、则填充100欧姆电阻
    •取消配置 PCIe 连接器时钟是否为 HCSL
    J6 EVM 原理图位于 http://www.ti.com/tool/J6EVM5777中
    您能否提供与用户使用3.0.0.4完成的线程的链接? RC 还是 EP 无关紧要。
    在 Windows 环境中、PCIe 卡始终在为 PC 通电之前插入。 我不知道 Windows 环境中是否有热插拔盒。 关于 Windows 驱动程序、它将需要一个与端点函数相对应的驱动程序。 在 Linux 中、我们使用 PCI-EPF-test.c (EP 端)/PCI_endpoint_test (主机端)。 因此、如果使用 EP 侧的 PCI-EPF-test.c、则需要一个类似于 Linux 中的 PCI_endpoint_test.c 的 Windows PCI 驱动程序。
    雷克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Rex

    感谢您的建议。 但是、我们已经验证了硬件、它不起作用。

    由于我们使用电路板、我想排除硬件问题。Rx 模式测试有很多不确定性。

    我想重点介绍 TX_MODE、以确认我的软件是否正确。

    我移除了电路板上的"C426"和"C427"、但我们不移除100欧姆电阻器。

    我们使用示波器来对电阻器上的信号进行 cat。(如果它正常、我们将对50MHz 信号进行 cat、我对吗?) 但我们不会产生任何信号。

    然后、我们将 RTOS-PCIE_idkAM572x_wSoCFile_armExampleProject.change IT 用作 TX_MODE (HW_WR_FIELD32 (SOC_SEC_EFUSE_REGISTER_BASE + CSL_CONTING_SEC_SMA_SW_6、CSL_CONTING_CORE_SEC_SMA_SW_6_PCIe_TX_RX_CONTROL、0x01U);

    我们使用在电路板上运行的 ARM 或 DSP 示例项目。在 ljcb_clkn 和 ljcb_clkp 上仍然无法执行任何信号。
    此外、我使用 ti-processor-sdk-linux-am57xx-evm-03.00.04、它也会失败。
    e2e.ti.com/.../1750650



    如果您有一些想法、请告诉我。

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

    正如我之前的帖子所说的、"ljcb_clkn 和 ljcb_clkp 之间的并联100欧姆电阻器。 ljcb_clkn 和 ljcb_clkp 均应使用50欧姆的电阻器独立端接至 GND "。

    请尝试一下。

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

    您好、Rex

    你是对的!!!! 我对"100欧姆电阻器"错误。

    现在、我可以在 TX_MODE 处执行 cat 100Mhz、然后我认为我实际上更改了寄存器。

    以下是我的日志:

    root@am57xx-evm:/sys/kernel/config/pci_ep devmem2 0x4a003c14

    /dev/mem 已打开。

    映射到地址0xb6ff0000的内存。

    在地址0x4A003C14 (0xb6ff0c14):0x00020000处读取

    root@am57xx-evm:/sys/kernel/config/pci_ep devmem2 0x4a00821c

    /dev/mem 已打开。

    映射到地址 bb6f60000的内存。

    在地址0x4A00821C (b6f6021c):0x00000181处读取

    root@am57xx-EVM:/sys/kernel/config/pci_ep

    但当我将电路板放入 PC 时、PC 也无法识别它。

    请告诉我。

    如果我想让 PC 识别电路板、只能更改 0x4a003c14和 0x4a00821c?

    你有什么想法吗?

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

    很高兴听到您已验证 Tx 模式。 对于 Rx 模式、您需要像我之前的帖子中一样对硬件进行修改、因为 PCIe 连接器为 am5x 器件提供 REFCLK。 您可能需要验证是否在 ljcb_clkp/ljcb_clkn 处获得时钟测量值。

    雷克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Rex
    感谢您的帮助~
    是的、我已经验证了硬件、作为您的建议。
    可能是因为 Windows 系统?我想在 Linux 上尝试此操作。
    TI 是否有任何有关通过 PCIe 进行 Windows 通信的成功项目?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CY、

    TI 仅在2个 EVM 之间进行了尝试、一个用作 RC、另一个用作 EP。 我们没有使用任何 PC、Windows 或 Linux 进行设置。

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

    您好、Rex

    很抱歉回复太晚了...

    我想问的问题。

    当我将电路板插入 PC 时、 即使我使用 devmem2工具进行更改、LTSSM_EN 位也始终为0。

    数据表中很少有关于 LTSSM_EN 的信息。

    您能解释一下这个位关于强制为0的内容吗? TI 有一些有关"LTSSM_EN 强制为零"的示例?

     PCIe PERST#引脚、我们不会在 DTS 文件中设置它。现在这很重要吗?

    有一个有关该解决方案的链接、但我已将其更改为 RX 和参考时钟作为 ACSPCIE 缓冲器。

    e2e.ti.com/.../2259892

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

    您好、是的、

    我不确定"LTSSM_EN 强制为零示例"是什么意思。 当 LTSSM_EN 设置为0时、意味着禁用 PCIe 链路、这是您想要的吗? 建立 PCIe 链路后、该位将设置为1。 您可以看到它在 DWC/PCI-dra7xx.c 中的 dra7xx_PCIe_establish_link()中进行了设置 因此、当您读取该位为0时、意味着链路训练失败。

    雷克斯

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

    您好、Rex

    感谢您的帮助。您的建议可为我提供很多帮助。

    我仍然无法解决该问题。当我将 am5728 EVM 板放入 PC PCI 插槽时。LTSSM_EN 位为0。

    我使用 devmem2设置 LTSSM_EN 位、它将自动清零。我找不到原因。但有时链接在 PCIe_idkAM572x_wSoCFile_armExampleProject 上打开。  

    如果我们想以 EP 的形式与 PC 和 am5728 EVM 板进行通信、PEREST 信号在这种情况下很重要?

    如果您对 LTSSM_EN 位为何始终被清除有任何想法、我将感谢您的帮助。

    无论如何、我最近将关闭此线程、因为该线程与 PCIe EP 参考时钟有关、我可以确认硬件设计现在已完成。

    感谢您的帮助、很抱歉我的泳池英语。

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

    正如您所说、参考时钟问题已解决一样、我将关闭此主题。 请提交新问题的新主题。

    雷克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Rex
    感谢你的帮助。
    我现在可以在 PC 上检测电路板。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、是的、

    您是否介意分享您已更改的内容以使其正常工作? 谢谢!

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

    您好、Rex

    很抱歉,我只是幸运,我不是很清楚。

    就像我之前的帖子一样、当 Windows BIOS 开始时。LTSSM_EN 将清零、即使我使用 devmem2来设置此位。LTSSM_EN 为0、链接永远不会打开。

    我的 PC PCIe 插槽不支持热插拔,因此我无法确定 am5728-EVM(EP)将在 PC (RC)之前加电。

    但我发现有有线设备。当 PC 在"CMOS BIOS"挂起时、链路打开、Windows 系统将检测到 am5728-EVM。

    我对 PC 不是很熟悉、我不知道有什么不同。

    BTW、我不需要修改硬件进行检测。am5728-EVM 使用 异步时钟。但我不确定它是否会影响通信。

    我还无法与 PC 通信。我使用 WindRiver 创建通用 PCI 驱动程序。但 Windows 会显示错误报告"设备找不到足够的资源来使用。 (代码12)"。

    我检查条码大小是否不是太大、并且 Windows IRQ 没有 冲突。

    有人说 PC 上的 EP 配置有误、我还不知道。如果有人知道差异、请向我发送一些有关这些问题的链接。

    谢谢!

    是的

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

    感谢您分享您的信息。

    我不熟悉与 Windows PC 连接的问题、但我认为需要与端点功能对应的主机端点窗口 PCI 驱动程序。 在 Linux 中、我们对两个 AM57x 使用相同的 PCI-EPF-test.c (EP 端)/PCI_endpoint_test (主机端)。 因此、如果在 EP 侧使用 PCI-EPF-test.c、则需要 Windows PCI 驱动程序(类似于 Linux 中使用的 PCI_endpoint_test.c)。

    我将关闭该线程。

    雷克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,CY
    您是否解决了有关 PC 驱动程序错误的问题?我遇到了相同的问题。 如果您解决了问题,您能给我一些建议?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    是的、我修复了代码12错误。

    与 dm8168/dm8148 PCIe 引导不同。 am5728在内核上完成 PCIe 初始化、这太晚了。

    如果您使用 Win7、BIOS 无法将 PCIe 检测为 EP、BIOS 将不会为其提供调用代码12的资源。

    尝试 win10、win10将在操作系统中提供 IT 资源。但我仍然符合代码10 (驱动程序无法启动)。

    我认为这是因为驱动程序无法启用存储器空间使能位、尽管中断 已唤醒。

    祝你好运。