自制板卡,配置连接状态如下:
C6657 DSP 和FPGA V7之间由2x PCIe连接。参考时钟100M,每x的连接速度2.55G,PCIe模式为Gen2,32bit地址宽度。DSP 为RC,FPAG为EP。
目前调试状态:
使用论坛cifae_KI_STK_Deyi中的PCIe工程,修改为PCIE_LOOPBACK_DISABLE;修改系统时钟和DDR时钟配置,修改了KeyStone_PCIE_Init_drv.c中全局变量
//remote PCIE EP registers
CSL_Pcie_cfg_space_endpointRegs *gpPCIE_remote_EP_regs = (CSL_Pcie_cfg_space_endpointRegs*)(CSL_PCIE_CONFIG_REGS+0x2000);
未修改之前为(CSL_PCIE_CONFIG_REGS+0x3000)。
//PCIE initialize
KeyStone_PCIE_Init(&PCIE_cfg); 运行之后,可以link up,也就是可以找到设备。
在remote_EP的配置空间读取数据EP BAR的信息,可以读回正确的Vendor and Device Identification。在BAR0的寄存器写0xFFFFFFFF,可以读出BAR0的长度为0x800。
KeyStone_PCIE_Address_setup(&PCIE_cfg); 运行之后,可以看到远程的BAR0寄存器值为0x10000000, 程序会为远程的BAR0建一个outbound,outbound的 OB_OFFSET_INDEX = 0x10000001; OB_OFFSET_HI = 0x0; 相应的属性bPrefetchable = 0;bIO = 0; uiBAR_type = 0;
现在我想往BAR0的空间内写数据,我在Memory Browser中键入地址0x60000000,在这个地址上写数,但是FPGA收不到我写的数,我也看不到我写过去的数?
就以上问题TI的工作人员和调试经验的朋友给个解答!多谢!
hai chen1:
还有,我在0x60000000读数据,但读到的都不是FPGA发出的数据。
Thomas Yang1:
这种情况一般是INBOUND,OUTBOUND MAP的地址翻译关系配置得不对,你的地址翻译后是什么关系呢?
YaXiang Guo:
回复 Thomas Yang1:
你好,请教三个问题:
1、DSP与FPGA通信时,是不是也可以从0x21802000地址读取到FPGA端的配置数据?
2、如果FPGA的PCIE模块没有正常工作,那DSP端能否从0x60000000读写数据?如果可以,这些数据是临时的还是在内存的什么地方?
3、TMS320c6657评估板之间进行PCIe通信的话,需要什么接插件连接?可以直接飞线吗?
YaXiang Guo:
回复 Thomas Yang1:
还有一个问题,如果我选择x1模式,是否必须使用lane0?
user5024540:
我用的是PDK里面的例程,现在6678做RC,FPGA做EP,目前能linkup,DSP也能在0X21802000里面读到FPGA的版本号,就是DSP发数据FPGA收不到,感觉是地址翻译不正确
lee hench:
回复 hai chen1:
请问这个问题解决了吗?