自制板卡,配置连接状态如下:
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 registersCSL_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的工作人员给个解答!多谢!
Wenguo Li1:
怎么没有人回复阿?
Wenguo Li1:
求回复!
我修改了一下程序,RC端,也就是在DSP端,disable outbound,配置数据空间地址0x60000000的第0段激活,远程配置EP的BAR0的PCIe地址为0x60000000,然后直接在0x60000000地址上写数,FPAG依然抓不到任何数,
求指导啊!很着急,每天都看论坛,每天都没有回复!
给点调试的意见也行啊!
另外有没有调过同行,看看哪里出错了!
多谢啊!
Wenguo Li1:
求回复啊?请给点指点啊,问题还是没有解决啊,着急!
hui peng2:
楼主这个问题解决了没有呢?
hai chen1:
回复 hui peng2:
请问楼主,后来问题是如何解决的,我目前遇到的和你是完全一样的问题,请指教!
user4241458:
C6678 DSP 和FPGA V7之间 PCIe连接,目前想通过C6678和FPGA A7之间通过PCIe连接,能否提供一些参考呀,谢谢
user5024540:
楼主你好,我现在和你的情况一样,请问你后来是怎么解决的,万分感谢!