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.

TMS320C6678: 【TMDXEVM667LE】PCIE_STK例程

Part Number: TMS320C6678

在STK-PCIE程序中,对于两片DSP通过PCIE进行通信的地址映射我有点问题想请教一下。

该程序可以分为四个阶段:

DSP0将buffer里数据复制到pcie_data(0x60000000-0x6fffffff)上的某一空间(这里存在一个RC端的outbound写过程)。

随后DSP1查看自己memory上的数据(这里存在一个EP端inbound读过程),并将DSP0写来的数据复制到pcie_data空间上(这里存在一个EP端的outbound写过程)。

最后DSP0对比buffer里的数据和DSP1通过PCIE写过来的数据是否一样(这里存在一个RC端的inbound读过程)。

RC端

(1)如上图所示,我的问题是RC端对于不同的OB_OFFSET_INDEX[i]是在程序中哪里设置的?这六个buffer地址是通过[27:23]位和translation region建立起的映射关系,但是对于这个OB_OFFSET_Index[1]=0x80000000是如何设置的? 我看程序中只是对OB_SIZE设置为8MB,而offset只是初始化为0。同时我还看到程序中有这么一句话/* in RC mode, outbound memory regions is setup via enumeration*/请问这句话怎么理解?RC端的这个enumeration(枚举)是一个什么样的过程?

EP端

(1)如上图所示,这个IB_BAR1是怎么设置为0x80000000?

(2)对于不同的IB_BARx,offset是通过

PCIE_Memory_Region memory_regions[]=
{
{0x80000000, 64*1024*1024}, //DDR3
{0x0C100000, 1*1024*1024}, //SL2
{0x11820000, 256*1024} //LL2
};设置的,但是IB_START_LO是通过什么设置的?