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.

[参考译文] TMDS64EVM:PCIe:从 PCIe 引导时无法正常工作

Guru**** 2815985 points

Other Parts Discussed in Thread: TMDS64EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1266140/tmds64evm-pcie-boot-from-pcie-is-not-working

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

您好!

我们与您联系是为了针对我们最近面临的一个问题获得支持。

目前、我们确实具有由 J784s4 (J784S4XG01EVM)组成的设置、该设置是通过 PCIe 连接到 AM64x (TMDS64EVM)作为端点的根复合体。

我们希望实现的是通过 J784s4通过 PCIe 引导 TMDS64EVM。 为此、我们 相应地更改了 TMDS64EVM DIP 开关:

此外、我们还通过跳线 J34和 J35选择 TMDS64EVM 作为端点。

和 R667/R668、其中已删除、以避免 PCIe 连接器上的 REFCLK 争用、

然后我们执行以下操作:

  • 第1个 Sitara 已通电
  • 第2个 Jacinto 上电->日志记录开始运行、Jacinto 通过 PCIe 电缆产生的 PCIe 复位在大约17秒后取消置位
  • Jacinto 启动后、执行"lspci"命令。 仅显示 Jacinto 电路板上的 PCIe 器件。
  • 在 PCIe 总线上看不到 Sitara 端点
  • 已尝试几个引导周期但未成功。
  • 大约17秒后、Sitara 上的 SerDesClk 开始运行->似乎与 PCIe 复位取消置位相关
  • 将 Jacinto 上的电缆和 PCIe 连接器0更改为1、但没有成功。
  • 几秒钟内将由 Jacinto 首次加电并由 Sitara 加电、但未成功。

基本上、我们的预期是在 Jacinto 上看到 Sitara EP、并最终访问适当的条来引导 Sitara。 所以、

  • 这些期望是否正确?
  • 如果正确、此设置可能会有什么问题?

如果您需要更多信息、请告诉我。

此致、

Paulo Machado.

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

    您好、Paulo:

    您在 TMDS64EVM 上使用的 SDK 版本是什么? 您是否修改了内核设备树以将 PCIe 配置为端点模式?

    我还有一个关于您使用的 PCIe 电缆的问题、想知道它是否有效。 我们的 PCIe 硬件专家在美国节假日不在办公室。 我会让他在他回来后就这件事发表评论。

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

    刘斌、您好!


    好的、我们正在尝试启动电路板! 此时不涉及内核...
    问题是、我们无法在 Jacinto 端上看到 TMDS64EVM 作为 EP 来加载映像。

    关于电缆、我们一直用于其他 PCIe 设备、我们可以通过总线对其进行枚举!
    我们还使用了其他电缆和相同的问题! 但我们乐于提供建议!

    此致

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

    您好、Paulo:

    我可以想到的另一件事是 SYSBOOT 开关设置、但是、由于 Processor SDK 不支持 PCIe 引导、因此我不想提供进一步的注释。

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

    您好、Liu、

    感谢提示!

    关于您关于"Processor SDK 不支持 PCIe 引导"的说法、我有点困惑...
    在 AM64x TRM 上、我们有这个、

    我的理解是、每当选择 PCIe 引导选项时、就会"以某种方式"在总线上枚举("看到")器件。 这应该是一个非常低级的行为、不依赖于(我认为的)任何软件。 因此、问题最终会归结为硬件... 即使不支持此 SoC 在 SDK 上的引导过程、我们也应该能够根据 TRM 枚举器件。

    我承认我的理解可能是错误的、因此最后我想澄清我的理解/期望是否合理。

    谢谢!

    圣保罗  

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

    您好、Paulo:

    是的、我同意您的意见、即使第二个引导加载程序(u-boot)不支持 PCIe 引导、如果硬件设置正确、PCIe RC 应该检测并将 AM64x 枚举为 EP。

    我会将您的疑问发送给我们的硬件专家、以征求您的意见。

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

    您好、Liu、

    感谢您的反馈!

    期待后续步骤。

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

    我们计划为 AM64x 上具有任意 RC 的9.1 MCU+ SDK 提供 PCIe EP 引导示例。 虽然 PCIe 引导应该已经可以正常工作(如 PCIe 引导的 TRM 中所述)、以检查您的硬件设置是否可以正常工作您是否已尝试按照 https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/PCIe/kernel/PCIe/pcie.html 的端点步骤中所述 Kernel_Drivers 、使用 SD 卡等 SD 卡来引导 Foundational_Components Ie_End_Point? 因此、在直接尝试 PCIe 引导之前、请运行该页面上针对 AM64x 上的 EP 和 RC 所述的步骤、检查 PCIe 是否正常工作。

     Pekka

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

    您好!
    我们可以测试稍后的阶段(Linux PCIe EP)、但如果引导无法正常工作、它会对我们的设计产生深远影响。


    不管怎样,我仍然对你的发言感到困惑。
    -如果你说我们需要一个 SDK(任何 R5启动代码),这意味着我们需要一些闪存来支持 PCI 启动,

    -当我从 TRM 的解释是一旦选择了 PCI 引导模式, EP 将被硬件看到。 (如果您想要 DFU 之类的东西)。 因此、没有辅助引导代码。 我们应该可以看到 EP 开箱即用!

    我是好的,如果是这样的,我只需要事先知道,以了解这种操作的影响。

    圣保罗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们可以测试后续阶段(Linux PCIe EP)、但如果启动不起作用、它将对我们的设计产生深远影响。

    如今、至少有一家 AM64x 客户成功使用 PCIe 引导、至少内置了100个电路板并进行大规模测试。 它是 Windows 主机、它们自己的引导加载程序基于我们的 MCU+引导加载程序。 还有一种设计使用 OSPI 引导来加载基于 R5的引导加载程序并从 PCIe 获取 Linux 映像。

    -如果您说我们需要 SDK (任何 R5启动代码)、这意味着我们需要一些闪存来支持 PCI 引导、

    刚才介绍的硬件设置。 例如、使用具有配置的 SD 卡启动 AM64x EVM、如 https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/EVM/Kernel/ECG Foundational_Components 3824PCIe/PCIe.html Kernel_Drivers?highlight = Ie_End_Point 中所示 。 使用此选项验证 PCIe 连接是否正常。

    -当我对 TRM 的解释是一旦选择了 PCI 启动模式、EP 就会被硬件看到。 (如果您想要 DFU 之类的东西)。 因此、没有辅助引导代码。 我们应该会看到 EP 开箱即用!

    是的、我同意"lspci"应该显示已加电的 AM64x PCIe EP、并且供应商 ID 显示 TI、只需将 AM64x EVM 设置为 PCIe 引导即可。

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

    好! 感谢您的澄清!
    然后、我将回顾一下设置!

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

    您好、Paulo:

    很高兴再次在 E2E 上与您见面、感谢您的耐心等待。  

    是否可以 从 AM64x 共享引导日志? 另外、如果您按照 Pekka 提供的本指南操作、您是否可以在"启动 EP Ie_End_Point 设备"部分共享运行命令的日志:https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/Foundational_Components /Kernel/ECG Kernel_Drivers PCIe/527.html

    我想利用这些日志来确认是否可以正确设置 EP。

    此致、

    Takuma

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

    您好、Paulo:

    了解 EP 设置后、可能还应该查看电缆。  

    如果按照 SDK 示例进行操作、它需要一根移除时钟和复位的电缆。 需要移除时钟主要是因为时钟是在 SDK/RC 两端独立生成的、并且需要移除复位、因为复位 EP EP 将删除为设置 SDK 示例中的 EP 侧所做的任何命令行配置。

    如果正确设置了 EP、并且我们看到在 RC 初始化之后设置被复位、那么我怀疑这个复位信号是否从 RC 传播到 EP、从而清除了 EP 配置。

    此致、

    Takuma

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

    你好、Takuma、
    很高兴再次与您交谈!

    我目前正在度假,从现在起,我将在两周内回到工作岗位。 我一回来、就会回顾所有步骤并与您讨论。

    感谢您的支持、

    圣保罗

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

    你好、Takuma、

    代表保罗·马查多、目前还没有。
    我已经采取了这个线程,我继续进行了几个测试。

    目前(只是简单说明)、我们的设置由一个 J784s4 (J784S4XG01EVM)组成、该根复合体通过 PCIe 连接到 AM64x (TMDS64EVM)作为端点、在我们的测试中、我们遵循 Sitara 的 SDK 09_00_00_03[1]中所述的程序。

    我们执行了以下步骤(如 [1]中所述):
    1) 1)物理更改、如本线程的第一个条目中所述
    2)主机和设备的 Linux 驱动程序配置
    3) 3)在启动根复合体 Jacinto 之前启动端点 Sitara 的完整序列

    正如您在日志输出中看到的、在此条目末尾、我们将收到以下消息

    [ 38.273312] pci_epf_test pci_epf_test.0: Failed to get private DMA rx channel. Falling back to generic one
    执行时

    ln -s functions/pci_epf_test/func1 controllers/f102000.pcie-ep/

    我们的板的内核版本为:
    * Sitara
    Linux am64xx-EVM 6.1.26-g1ada48a6CF
    * Jacinto
    Linux j784s4-EVM 6.1.46-g3ec3755134

    总结:
    1) 1)我们已尝试在 Sitara 端设置端点、显然只有弹出有关"DMA Rx 通道"的问题。 除了这一点,它似乎是可以的。
    2) 2)我们已尝试在 Jacinto 侧重新扫描。 但是、我们不会在主机端看到器件枚举
    3) 3)我们的硬件团队尝试删除主机的复位、因此我们能够在不丢失 Sitara 配置的情况下重新启动 Jacinto。 这也不起作用。

    参考资料:
    [1] https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/09_00_00_03/exports/docs/linux/Foundational_Components /内核/2001 Kernel_Drivers PCIe/350.html Ie_End_Point

    日志:

    =======================================================================
    SITARA LOG
    =======================================================================
    root@am64xx-evm:~# ./setup_endpoint.sh
    [INFO] KERNEL VAR: CONFIG_PCI_ENDPOINT
    CONFIG_PCI_ENDPOINT=y
    [INFO] KERNEL VAR: CONFIG_PCI_ENDPOINT_CONFIGFS
    CONFIG_PCI_ENDPOINT_CONFIGFS=y
    [INFO] KERNEL VAR: CONFIG_PCI_EPF_TEST
    CONFIG_PCI_EPF_TEST=y
    [INFO] KERNEL VAR: CONFIG_PCI_J721E
    CONFIG_PCI_J721E=y
    [INFO] KERNEL VAR: CONFIG_PCIE_CADENCE_EP
    CONFIG_PCIE_CADENCE_EP=y
    [INFO] KERNEL VAR: CONFIG_PCI
    CONFIG_PCI=y
    [INFO] KERNEL CONFIG_PCI_ENDPOINT_TEST
    CONFIG_PCI_ENDPOINT_TEST=m
    [INFO] KERNEL VAR CONFIG_PCIE_CADENCE_HOST
    
    Press any key to continue...
    [INFO] Check list of endpoint controller devices in the system
    [INFO] FILE: f102000.pcie-ep
    [INFO] Found: f102000.pcie-ep !
    [INFO] Check list of endpoint function devices in the system
    [INFO] FILE: pci_epf_ntb
    [INFO] Found: pci_epf_ntb
    [INFO] FILE: pci_epf_test
    [INFO] Found: pci_epf_test
    
    [INFO] To create pci-epf-test device
    Press any key to continue...
    [INFO] Creating pci-epf-test device
    mount: /sys/kernel/config: none already mounted or mount point busy.
    [INFO]
    baseclass_code
    cache_line_size
    deviceid
    interrupt_pin
    msi_interrupts
    msix_interrupts
    primary
    progif_code
    revid
    secondary
    subclass_code
    subsys_id
    subsys_vendor_id
    vendorid
    [INFO] CONFIGURE VENDOR ID:
    [DEBUG] 0xffff
    [INFO] 0x104c
    [INFO] CONFIGURE DEVICE ID:
    [DEBUG] 0xffff
    [INFO] 0xb010
    [INFO] CONFIGURE THE NUMBER OF INTERRUPTS FOR MSI AND MSI-X WITH NUMBER 2
    [INFO] BINDING PCI-EPF-TEST DEVICE TO A EP CONTROLLER
    [   38.273312] pci_epf_test pci_epf_test.0: Failed to get private DMA rx channel. Falling back to generic one
    [INFO] STARTING EP DEVICE

    =======================================================================
    JACINTO LOG
    =======================================================================
    ####
    Reboot
    ####
    root@j784s4-evm:~# echo 1 > /sys/devices/platform/bus@100000/2910000.pcie/pci0001\  :00/pci_bus/0001\:00/rescan
    root@j784s4-evm:~# lspci
    0000:00:00.0 PCI bridge: Texas Instruments Device b00d
    0001:00:00.0 PCI bridge: Texas Instruments Device b013
    root@j784s4-evm:~# echo 1 > /sys/devices/platform/bus@100000/2900000.pcie/pci0000\  :00/0000\:00\:00.0/rescan
    root@j784s4-evm:~# lspci
    0000:00:00.0 PCI bridge: Texas Instruments Device b00d
    0001:00:00.0 PCI bridge: Texas Instruments Device b013
    (failed reverse-i-search)`resc': echo 1 > /sys/devices/platform/bus@100000/2900000  .pcie/pci0000\:00/0000\:00\:00.0/^Cscan
    root@j784s4-evm:~# echo 1 > /sys/bus/pci/rescan
    root@j784s4-evm:~# lspci
    0000:00:00.0 PCI bridge: Texas Instruments Device b00d
    0001:00:00.0 PCI bridge: Texas Instruments Device b013
    root@j784s4-evm:~#

    我们将感谢您提供任何支持或指导。

    此致、
    Joao Lima.

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

    大家好!

    按分辨率更新主题帖:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1383677/tmds64evm-update-tmds64evm-pcie-boot-from-pcie-is-not-working

    此致、

    Takuma