我用的代码模板是C:\ti\pdk_C6678_1_1_2_6\packages\ti\drv\pcie\example\sample 查相关PCIE协议在RC配置EP时是基于ID的跟地址没有关系
6678 PCIe 与FPGA LINK UP 后 不能获得FPGA的DEVICE_ID和VENDDR_ID 求大神指导
1.配置DSP为RC ,FPGA为EP
2.本地配置寄存器配置如下:
/* Configure Address Translation */
barCfg.location = pcie_LOCATION_LOCAL; //配置本地的配置寄存器
barCfg.mode = pcie_RC_MODE;
barCfg.base = 0x70000000;//PCIE_IB_LO_ADDR_M;
barCfg.prefetch = pcie_BAR_NON_PREF;
barCfg.type = pcie_BAR_TYPE32;
barCfg.memSpace = pcie_BAR_MEM_MEM;
barCfg.idx = PCIE_BAR_IDX_M;//指定翻译区域1
if ((retVal = Pcie_cfgBar(handle, &barCfg)) != pcie_RET_OK)
{
System_printf ("Failed to configure BAR (%d)\n", (int)retVal);
exit(1);
}
3.配置输入地址转换
/* Inbound 端 使用翻译区域0 32位起始地址:0X90000000 偏移地址位:(0XdstBuf.buf地址)0x00809C00 PCIE:0X90000000 */
ibCfg.ibBar = PCIE_BAR_IDX_M; /* Match BAR that was configured above*/ //使用的是BAR1也可以使用 2,3,4,5 BAR0是给EP的配置空间
ibCfg.ibStartAddrLo = PCIE_IB_LO_ADDR_M;//0x90000000
ibCfg.ibStartAddrHi = PCIE_IB_HI_ADDR_M;//0x00000000
ibCfg.ibOffsetAddr = (uint32_t)pcieConvert_CoreLocal2GlobalAddr ((uint32_t)dstBuf.buf);
ibCfg.region = PCIE_IB_REGION_M; //指定翻译区域0 也可以