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.

PCIe调试中的问题

自制板卡,配置连接状态如下:
C6678 DSP 和FPGA V7之间由2x PCIe连接。参考时钟125M,每x的连接速度5G,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收不到我写的数,我也看不到我写过去的数?

现在我有几个问题没弄明白,希望帮忙解答。
1. 以上的操作,是不是在0x60000000这个地址上写数, 就相当于将数据通过PCIe link发送到了远程EP的BAR0空间内?如果不是我应该怎么往那个地址上写数?远程EP的BAR0空间可不可以被看做一块RAM,通过PCIe进行读写?

2. 如果直接往pcie数据空间内写数,是不是不需要激活OB_XLT_EN?往pcie数据空间内写数应该怎么映射到对端的BAR内的?从DDR拷贝数据到pcie数据空间和直接往pcie数据空间内写数据对pcie传输来说有什么区别吗?

就以上问题TI的工作人员给个解答!多谢!