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.

[参考译文] TMS320C6674:PCIe EP 远程配置不起作用

Guru**** 2587365 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/593061/tms320c6674-pcie-ep-remote-configuration-does-not-work

器件型号:TMS320C6674

您好!

我在 PCIe EP 配置中使用 C6674。 我尝试从 DSP 执行 PCI 扫描。

当我尝试通过 CFG_SETUP 寄存器(0x21800008)更改总线/设备/功能设置时,

我从 PCIe 远程配置空间(0x218020000)中没有合理的数据。

CFG_SETUP 是否仅在 RC 模式下有效?

提前感谢

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

    这是哪个软件?

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

    我首先使用了 pdk_C6678_1_1_2_5的 LLD 函数、但在我的测试中、我仅使用裸机代码作为


    volatile uint32_t * pPcieConfigCFG =(volatile uint32_t *) 0x21800008;
    *pPcieConfigCFG = func | dev <<8 | bus <<16|类型<<24;
    volatile uint32_t * pPcieConfigSpace =(volatile uint32_t *) 0x21802000;
    uint32_t venDevId = pcieConfigSpace[0];
    uint32_t revId =pcieConfigSpace[2];

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

    我已通知 RTOS 团队。 他们的反馈将在此处发布。

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

    "type<<24"=== >是否已尝试将此选项设置为"0"以进行类型0访问、或将"1"以进行类型"1"访问?

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Eric:
    我本来想使用1、但我尝试了这两种方法-它们的行为是相同的。


    I LOOP 过总线、器件和功能:

    for (int bus =0;bus < 1<<8;++bus){
    对于(int dev=0;dev<1<<5;++dev){
    for (int func=0;func<1<<3;++func){

    const int type= 1;
    volatile uint32_t * pPcieConfigCFG =(volatile uint32_t *) 0x21800008;
    *pPcieConfigCFG = func | dev << 8 | bus << 16 | type << 24;
    volatile uint32_t * pPcieConfigSpace =(volatile uint32_t *) 0x21802000;
    uint32_t venDevId = pcieConfigSpace[0];
    uint32_t revId =pcieConfigSpace[2];
    (... 当数据发生变化时 printfs..)




    通常、我得到的值如下所示:

    pcieFindDevices 总线= 0、dev = 0 revId = 0x0、vndDevId = 0x8
    pcieFindDevices 总线= 0、dev = 1 revId = 0x1、vndDevId = 0x8
    pcieFindDevices 总线= 0、dev = 2 revId = 0x2、vndDevId = 0x8
    pcieFindDevices 总线= 0、dev = 2 revId = 0x2、vndDevId = 0x8
    pcieFindDevices 总线= 0、dev = 3 revId = 0x3、vndDevId = 0x8
    pcieFindDevices 总线= 0、dev = 4 revId = 0x4、vndDevId = 0x8
    pcieFindDevices 总线= 0、dev = 5 revId = 0x5、vndDevId = 0x8
    pcieFindDevices 总线= 0、dev = 5 revId = 0x5、vndDevId = 0x0
    pcieFindDevices 总线= 0、dev = 5 revId = 0x5、vndDevId = 0x8
    pcieFindDevices 总线= 0、dev = 6 revId = 0x6、vndDevId = 0x8


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

    来自 processors.wiki.ti.com/.../PCI_Express_(PCIe)_Resource_Wiki_for_Keystone_Devices
    如果 C66x 器件配置为 RC、则使用 CFG_Setup 寄存器为目标器件(SWITCH/EP)指定目标总线/器件/功能号、并尝试在 MMR 中读取/写入远程器件空间(来自 PCIe MMR 空间中的偏移量0x2000)以生成这些配置请求。 该 CFG_SETUP 仅在 RC 模式下工作。

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

    还可以 谢谢你。

    我在 wiki 中找不到最后一句话

    >>此 CFG_SETUP 仅在 RC 模式下工作。<<

    但你肯定是对的。

    此致 Andreas