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.

[参考译文] TMS320C6678:将 C6678多路复用为 PCIe EP 器件的问题

Guru**** 2553450 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/597133/tms320c6678-the-problem-of-mutiple-c6678-as-pcie-ep-device

器件型号:TMS320C6678

大家好、

    我必须使用两个 C6678作为 PCIe EP 器件来与一台主机(Windows OS、作为 RC)进行通信。 我已经可以通过 PCIe 将一个 c6678与主机(包括驱动程序)通信。

   但当我将两个 c6678板(两个 c6678编程了相同的代码)脉冲到主机时,我无法枚举任何设备!

   现在、我有了列表信息:

我使用 PDK 示例代码

1.修改一个 c6678的条形地址,无效

2.修改一个 c6678的供应商和设备 ID,不起作用

3.编码  

/*等待链路启动*/
pcieWaitLinkUp (handle); 

可以通过;因此链路已启动、调试0 LTSSM 的状态为0x11。 但是 当主机 上电时,我发现 LTSSM 的状态为0x00,链路已断开。

链接有什么问题? 为什么我不能脉冲多路复用 c6678?

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

    我已通知 RTOS 团队。 在平均时间中、请查看以下 wiki:
    processors.wiki.ti.com/.../Processor_SDK_RTOS_PCIe

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

    您好!

    没有适用于 C6678 的 PCIe Windows 驱动程序、因此您必须编写自己的文件。 如果您只需使用 Processor SDK RTOS PCIe 示例代码来在 EP 模式下对 C6678进行初始化、则可能会起作用。

    请注意:

    1) 1) PC 主机使用扩频时钟、您必须将该时钟源为 C6678。 您可以参阅\pdk_c667x_2_0_5\packages/ti\boot\IBL\src\device\c66x 中的 IBL PCIe 变通办法代码 iblPCIeWorkaround ()

    2) 2)您是否使用 TI 6678 EVM?  如果是、您还需要 PCIe 转 AMC 适配器卡?

    3) 3) C6678 PCIe 不支持 热插拔、如果您有两个卡、则需要对 PC 主机进行下电上电。

    有关详细信息、请参阅 Yordan 指向的 Wiki 链接。

    此致、Eric

     

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

    我有自己的 PCIe windows 驱动程序、它在对一个 c6678板进行脉冲处理时起作用。
    对于2)和3),我确定没有问题。
    1),我不向 C6678提供主机时钟源,它是否导入以影响枚举? 因为主机可以在对一个板进行脉冲时枚举 C6678。

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

    是的、将 PCIe 时钟从主机 PC 拉至 C6678非常重要。 您使用的是 TI 6678 EVM 或您自己的硬件、尚不清楚。

    我是否正确理解:
    1) 1)如果仅插入一个6678卡、可以枚举它? LTSSM = 0x11
    2) 2)如果插入了两块6678卡、则无法枚举它们? LTSSM = 0x00? 您是否能够通过 JTAG 看到0x2180_0004来检查两张卡的位0 (LTSSM_EN)是0还是1?

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

    [引用 user="lding ]您好、

    是的、将 PCIe 时钟从主机 PC 拉至 C6678非常重要。 您使用的是 TI 6678 EVM 或您自己的硬件、尚不清楚。

    我是否正确理解:
    1) 1)如果仅插入一个6678卡、可以枚举它? LTSSM = 0x11
    2) 2)如果插入了两块6678卡、则无法枚举它们? LTSSM = 0x00? 您是否能够通过 JTAG 看到0x2180_0004来检查两张卡的位0 (LTSSM_EN)是0还是1?

    此致、Eric

    [/报价]

    您好!

    您是正确的、插入单个 LTSSM=0x11、插入双倍 LTSSM =0x00和 LTSSM_EN=0

    此致、Leo

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

    我假设在您的 Windows PCIe 驱动程序中、您必须具有启用 LTSSM_EN = 1的代码。 存在 PCIe 热复位问题、请参阅 www.ti.com/.../sprz435b.pdf KeyStoneII.bts 勘误表_advisisory。44。

    当您使用 C6678并从主机侧进行热复位时、同样的情况也会出现。 即使您不使用 ROM 引导加载程序、您的驱动程序也需要能够处理重置情况。

    当您仅插入一个卡时、C6678错过了主机重置、因此启用了 LTSSM_EN、并且将出现 PCIe 链路。 当您有两个卡时、出于某种原因、计时不同、并且主机将重置这些卡、因此您发现 LTSSM_EN = 0。

    您可能需要找到另一台 PC 主机才能尝试。 或在驱动程序中添加错误句柄代码、以便在您发现 LTSSM_EN 已禁用时重新初始化 PCIe。

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

    [引用 user="lding ]您好、

    我假设在您的 Windows PCIe 驱动程序中、您必须具有启用 LTSSM_EN = 1的代码。 存在 PCIe 热复位问题、请参阅 www.ti.com/.../sprz435b.pdf KeyStoneII.bts 勘误表_advisisory。44。

    当您使用 C6678并从主机侧进行热复位时、同样的情况也会出现。 即使您不使用 ROM 引导加载程序、您的驱动程序也需要能够处理重置情况。

    当您仅插入一个卡时、C6678错过了主机重置、因此启用了 LTSSM_EN、并且将出现 PCIe 链路。 当您有两个卡时、出于某种原因、计时不同、并且主机将重置这些卡、因此您发现 LTSSM_EN = 0。

    您可能需要找到另一台 PC 主机才能尝试。 或在驱动程序中添加错误句柄代码、以便在您发现 LTSSM_EN 已禁用时重新初始化 PCIe。

    此致、Eric

    [/报价]

    您好!

    非常感谢! 我会尝试。

    此致