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:关于 iblPCIeWorkaround()函数的问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/649080/tms320c6678-question-about-the-iblpcieworkaround-function

器件型号:TMS320C6678
主题中讨论的其他器件:CDCE62005

您好!

我对 IBL 代码中的 iblPCIeWorkaround()函数有疑问。 IBL 版本为1.0.16、C6678的器件版本为2.0。

我正在使用 TFTP 引导模式、并尝试在 C6678启动 TFTP 下载应用程序代码之前初始化 PCIe。

因此,我尝试使用 iblPCIeWorkaround()函数,我更改 VID、PID 设置,并删除其底部的'waitForBoot (mage_ADDR)"行。 当我的主板插入 PCIe 插槽时,它工作正常,但如果主板未插入 PCIe 插槽,CPU 将在 hwEmif4p0Enable()上挂起。

我读 了这篇文章 、Eric 说:"PC 主机使用扩频时钟、您必须将该时钟源传输到 C6678。 您可以参阅 IBL PCIe 变通办法代码 iblPCIeWorkaround()。 这是否意味着 C6678的时钟源更改为 PC 主机? 如何正确执行?

谢谢、

Snaku

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

    我们的团队需要一些时间来收集实验室中的数据。 请给我们几天时间、我们将会与您联系。

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

    在主机 PC 上使用 PCIe 时、建议将 PC 的 PCIe 参考时钟源为 C6678以进行枚举。

    不确定是否在测试中使用了 TI 6678 EVM + AMC PCIe 适配器。 如果是、我们的 IBL 中有用于控制 FPGA 时钟选择的代码:

    /*在 FPGA 中写入 ICS 557时钟选择控制寄存器*/
    /* 1:FPGA_ICS557_SEL 驱动为高电平*/
    DEVICE_REG32_W (DEVICE_SPI_BASE (0)+ SPI_REG_SPIDAT0、
    FPGA_WRITE_REG_CMD (FPGA_ICS557_SEL_CTRL_REG、1));

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不、我不使用 TI 6678 EVM、因此我删除了电路板中的这些代码。 我的电路板上有一个 PCIe 开关(即 PEX8616)、如 DSP_8681。

    在 iblPCIeWorkaround()函数中,如果我的主板未插入 PCIe 插槽,是否应该注释掉任何代码?
    如果是、如何检测 PCIe 是否可与 PC 主机配合使用?

    我只希望 C6678能够检测 IBL 中的 PCIe 连接、如果电路板与 PC 主机配合使用、则初始化 PCIe、然后继续 TFTP 引导模式。 如果我的主板无法与 PC 主机配合使用、则继续 TFTP 引导模式而不进行 PCIe 初始化。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我在没有 PC 主机的 TI 6678 EVM 上执行类似的测试,我在 iblPCIeWorkaround()函数中添加了重试机制,并在 TFTP 下载应用程序代码之前调用该机制。 结果良好,C6678不会在 hwEmif4p0Enable()挂起,应用程序代码运行正常。

    我不明白为什么 iblPCIeWorkaround()函数在我的主板上不起作用。

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

    我删除了 iblPCIeWorkaround()函数的以下两行,并且主板可以在没有 PCIe 连接的情况下继续 TFTP 引导过程。

    DEVICE_REG32_W ((PCIe_base_ADDR + PCIe_APP_SERDES_CFG0)、0x00062320);// ss 时钟、寄存器地址为0x21800390 *
    DEVICE_REG32_W ((PCIe_base_ADDR + PCIe_APP_SERDES_CFG1)、0x00022320);// ss 时钟、寄存器地址为0x21800394 *

    这两个寄存器是什么、我找不到它们的定义。

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

    这两个是 PCIe SERDES、请参阅 PCIe 用户指南3.1.101和3.1.102。

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

    感谢您的回复。

    还有一个问题。 EVM 上的'FPGA_ICS557_SEL 驱动为高电平'的确切操作是什么? 它是否禁用 CDCE62005中的 PCIECLK (P/N) 100MHz 参考时钟?

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

    PCIe 参考时钟输入复用:来自 CDCE62005或 AMC 边缘连接器(来自 PCIe 根复合体)。 FPGA_ICS557_SEL 驱动为高电平用于 AMC 边缘连接器;低电平用于 CDCE62005。

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

    我现在已经明白了、我没有找到多路复用器"ICS557"、因为我采用了旧版本的原理图。

    请再来一个问题。 如果没有时钟信号提供给 C6678 PCIECLK (P/N)作为参考、我会发现
    当我调用 devicePowerPeriph (target_PWR_PCIe)或设置 SERDES_CFG (0/1)寄存器时、C6678可能会挂起、这是否正常?

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

    您需要信号输入来为 PCIe periph 加电并配置 Serdes 寄存器。

    此致、Eric