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.

【急求助】C6678使用PCIe接口与一块运行Windows单板机通信



HI, TI engineers:

欲实现C6678与一块单板机的通信,C6678与单板机之间通过一片PLX公司的PEX8112 PCIe-PCI Bridge桥接芯片进行接口转换

PEX8112默认工作在Reverse模式,即PCI-PCIe模式,8112的配置寄存器值如下图:

 

请问对于这种情况,应将6678配置成RC端还是EP端,Inbound/OutBound Translation如何设置?

使用\Ti\pdk_C6678_1_1_2_6\packages\ti\drv\exampleProjects\PCIE_exampleProject下的两块EVM间的通信例程时发现

程序停在

/* Wait for link to be up */

  pcieWaitLinkUp(handle);

ltssmState值为3,对应POLL_COMPLIANCE。

该如何解决,求指导。

  • 1)TI  6678 既支持EP 模式也支持RC 模式,具体哪种模式是由你的实际应用决定的,如果你的单板机还要通过PCIE 接口控制其他设备,可以考虑将单板机设置为RC,6678设置为EP。如果是这种模式,那么RC侧应该根据将base 和 limit空间之间的地址分配给DSP,DSP根据RC经过outbound translation翻译后的PCIE BUS address来查找与之相匹配的BAR的映射关系(INBound offset, inbound start address etc)然后获得在DSP中的实际访问地址。具体请参考PCIE UG 2.7.1 和 2.7.2

    2)问题应该是link没有链接上,请检查GEL文件是否加载和2块EVM是否正确插入BOC板的插槽。需要注意的是BOC板上插槽A必须链接RC DSP, 插槽B 必须链接EP DSP 

  • Thomas Yang1 说:

    1)TI  6678 既支持EP 模式也支持RC 模式,具体哪种模式是由你的实际应用决定的,如果你的单板机还要通过PCIE 接口控制其他设备,可以考虑将单板机设置为RC,6678设置为EP。如果是这种模式,那么RC侧应该根据将base 和 limit空间之间的地址分配给DSP,DSP根据RC经过outbound translation翻译后的PCIE BUS address来查找与之相匹配的BAR的映射关系(INBound offset, inbound start address etc)然后获得在DSP中的实际访问地址。具体请参考PCIE UG 2.7.1 和 2.7.2

    2)问题应该是link没有链接上,请检查GEL文件是否加载和2块EVM是否正确插入BOC板的插槽。需要注意的是BOC板上插槽A必须链接RC DSP, 插槽B 必须链接EP DSP 

    谢谢您的解答。

    1)由于单板机上只有PCI接口,并且是用PCI控制其他设备,因此需要使用PCI转PCIE桥芯片PEX8112来实现与C6678的通信,并将单板机设置成RC,DSP设置成EP。这里应该用EP还是Legacy EP模式。这两种有什么区别?

    2)我们用的是参考EVM板自己画的DSP板子,只是参考开发包中的2块EVM板PCIE通信例程,所以不存在您说的插槽问题。

    我还有一些疑问,请您解答:

    链路训练状态机处在“轮询·一致”(Debug0寄存器中LTSSM_STATE为0x03)是否说明 DSP已经发现另一端有接收器存在?导致不能退出该状态应该主要是硬件上的原因吗?有没有可能是我RC\EP端寄存器配置的不对而导致的。

    ①GEL文件使用的是PDK中开发板默认的,evmc6678l.gel。应该没问题吧,还需要加载什么别的信息吗?

    ②按照PCIE规范要求,AC耦合电容(75-200nF)应该放在靠近发送端的一侧,如果AC耦合电容(我们用的是100nF=0.1uF的)放在了靠近接收端的一侧,会对链路正常建立有影响吗?有可能导致一直在“轮询·一致”状态(0x03)吗?

    ③如果时钟信号的质量不高,是否也可能导致链路训练一直处在该状态而无法退出?

    ④程序运行后,配置寄存器空间0x21800000中的内容为4E301101. 0x02620358中为0x01C9。

    ⑤我们只使用了lane0,因此将C6678的PCIERXP0,PCIERXN0,PCIETXP0,PCIETXN0与8112芯片的对应管脚连接,6678的PCIERXP1,PCIERXN1,PCIETXP1,PCIETXN1不适用故悬空放置,这样有问题吗?Port Link Control Register的LNK_MODE也设置为了X1。这样是不是就可以了?在配置寄存器时还有什么需要注意的吗?

    ⑥我们使用的桥芯片8112支持:

     -PCI Express Base Specification,Revision 1.0a(PCI r1.0a)

    -PCI Express to PCI/PCI-X Bridge Specification,Revision 1.0(PCI Express Bridge r1.0)

    -PCI Express Card Electromechanical Specification,Revision 1.0a(PCI Express Card r1.0a)

    是否可与C6678支持的PCIE版本兼容?

    导致链路训练一直处在POLL_COMPLIANCE的,还有什么其他可能的原因吗?

    有没有这种类似的DSP通过PCIE接口与PCI接口的上位机通信的配置步骤或程序例子?

    请指导解答,感谢!!

  • 最近我也要弄6657的pcie,能留个QQ什么的吗?有问题交流一下~!

  • 好啊,我也没什么进展,正好一起交流下,QQ的邮箱账户jinzhang@vip.qq.com

  • 你好,我最近在用6657的PCIE,能加个QQ,互相交流一下吗?我的QQ 375412638,谢谢!