各位工程师好,
我目前在使用C6678通过PCIE switch——PLX8648进行互联通信,发现C6678在多个方面与PCIE协议不一致,导致后续工作无法开展,请教一下各位工程师:
4片C6678,DSP0~DSP3分别连接到switch的0~3口,且0口作为上游端口,DSP0作为RC
1)PCIE协议标准上指出,总线号、功能号都为0的设备是RC内部的虚拟桥,也就是DSP0本身,而switch的上下游端口的总线号分别为1和2;但是实际发现,DSP0作为RC,通过总线号和设备号都为0进行ID路由,访问到的却是switch的0口,通过总线号为1,访问到的是switch的各下游口,通过总线号2,3, 4,访问到的是与下游口相连的各个EP;
2)pcie协议标准及switch芯片手册均指出,访问中间桥也就是switch的各个上下游口时,CFG_SETUP中的type域为1,访问EP是,type域为0;但是实际上,通过type=0,访问到的永远是switch的上游端口,而对下游端口及EP访问时,要用到type=1.
3)还是第一个问题所致,使用switch的非透明模式允许一个系统中存在两个RC,我将switch的1口改为非透明口,这样它接的DSP1就可以作为第二个RC即RC2使用。但是非透明口使用时,必须把能够访问它的设备的总线号、设备号放到一个查找表中。switch的芯片手册与PCIE协议标准一致,它指出,与非透明口直连的RC,其设备号、总线号均为0,由于RC2能够访问1口,那么也就是要把查找表中的内容设置为(bus, device)=(0, 0)。但是跟问题1)里面一样,使用6678作为RC,它又把这个非透明口认为是(0, 0),所以查找表中再设置(0,0)是错误的。
请问各位工程师,这几个问题是否有解决的办法,是否6678里面的配置我给搞错了,导致了上述问题的存在?有没有哪位遇到过我所描述的这些现象?谢谢大家
guohai bai:
Zhengdong Li
各位工程师好,
我目前在使用C6678通过PCIE switch——PLX8648进行互联通信,发现C6678在多个方面与PCIE协议不一致,导致后续工作无法开展,请教一下各位工程师:
4片C6678,DSP0~DSP3分别连接到switch的0~3口,且0口作为上游端口,DSP0作为RC
1)PCIE协议标准上指出,总线号、功能号都为0的设备是RC内部的虚拟桥,也就是DSP0本身,而switch的上下游端口的总线号分别为1和2;但是实际发现,DSP0作为RC,通过总线号和设备号都为0进行ID路由,访问到的却是switch的0口,通过总线号为1,访问到的是switch的各下游口,通过总线号2,3, 4,访问到的是与下游口相连的各个EP;
2)pcie协议标准及switch芯片手册均指出,访问中间桥也就是switch的各个上下游口时,CFG_SETUP中的type域为1,访问EP是,type域为0;但是实际上,通过type=0,访问到的永远是switch的上游端口,而对下游端口及EP访问时,要用到type=1.
3)还是第一个问题所致,使用switch的非透明模式允许一个系统中存在两个RC,我将switch的1口改为非透明口,这样它接的DSP1就可以作为第二个RC即RC2使用。但是非透明口使用时,必须把能够访问它的设备的总线号、设备号放到一个查找表中。switch的芯片手册与PCIE协议标准一致,它指出,与非透明口直连的RC,其设备号、总线号均为0,由于RC2能够访问1口,那么也就是要把查找表中的内容设置为(bus, device)=(0, 0)。但是跟问题1)里面一样,使用6678作为RC,它又把这个非透明口认为是(0, 0),所以查找表中再设置(0,0)是错误的。
请问各位工程师,这几个问题是否有解决的办法,是否6678里面的配置我给搞错了,导致了上述问题的存在?有没有哪位遇到过我所描述的这些现象?谢谢大家
kevin_wang:
回复 guohai bai:
哥们 你联系方式多少 怎么联系到你 我也在做类似工作, 交流下
kevin_wang:
访问中间桥也就是switch的各个上下游口时,CFG_SETUP中的type域为1,访问EP是,type域为0;但是实际上,通过type=0,访问到的永远是switch的上游端口,而对下游端口及EP访问时,要用到type=1.
这句话非常有启示, 明天起来试下, 怎么能联系上你