TI中文支持网
TI专业的中文技术问题搜集分享网站

关于C6678与PC(X86)之间的PCIe Link通信,采用EDMA方式的问题

目前可以实现PC与DSP(C6678)之间的数据通信,但是通信的速率达不到项目的要求,因此考虑采用DMA方式进行数据传输,在实现过程中出现了一些问题,希望得到各位大牛的指导。
1,PC作为RC端,DSP作为EP端,此时如何去调用C6678内部的EDMA模块去完成数据搬移呢?如何将PC的地址设置为EDMA能够识别的地址?
       使用BAR1映射到EDMA config memory,使用PC配置好EDMA相关寄存器,可以完成一次EDMA操作,假设需要将PC上的数据搬移到DSP外挂的DDR3上,参考mcsdk下linux pciedemo.c文件的配置:
    /* Calculate the DSP PCI address for the PC address */   
tmp = PCIE_DATA + (srcAddr & ~PCIE_1MB_BITMASK);
发现此时搬移的数据只是tmp地址本身存在的杂乱数据到DDR3:0x8000 0000,而PC上的数据并没有传输到C6678的tmp地址上。
想了解一下这个tmp地址的计算中srcAddr地址是指PC端开辟的虚拟地址所指向的物理地址吗?

2,如果只是想实现PC对DSP写数据,以及PC从DSP读数据,那么应该并不需要涉及到outbound address translation吧?PC为RC模式。因为已经调试好的对单个地址的读写都是使用inbound address translation完成的。

 

帮忙解答一下  谢谢

Andy Yin1:

一个问题不需要发多个贴,请在下面的帖子中跟进问题,谢谢。

http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/51760.aspx

mangui zhang:

回复 Andy Yin1:

谢谢你的回复

赞(0)
未经允许不得转载:TI中文支持网 » 关于C6678与PC(X86)之间的PCIe Link通信,采用EDMA方式的问题
分享到: 更多 (0)