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

2019-03-26 16:02发布

目前可以实现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完成的。
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
lelee007
1楼-- · 2019-03-26 16:40
< PC和6678用PCIE连的?

PCIE的玩意没研究过,帮不上忙,帮顶了
kooking
2楼-- · 2019-03-26 18:31
 精彩回答 2  元偷偷看……
agent24
3楼-- · 2019-03-26 22:07
kooking 发表于 2014-1-6 16:36
没用过,转述一下,希望有帮助:

PC向DSP通过PCIe写数据,可以通过win driver写相应的驱动;PC向DSP写数 ...

DSP向PC读数的话,DSP还是作为EP端吗?
agent24
4楼-- · 2019-03-26 22:18
 精彩回答 2  元偷偷看……

一周热门 更多>