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.

c6678 与 host(linux) 通过pcie通信问题



各位:

 

     最近在研究多核dsp-c6678。大概了解dsp c6788和主机host之间是通过pcie进行数据交互。

我的疑问如下:

 

对于host to  dsp

 

1.

host端 如何把存在host的内存ddr中的数据发送给pcie。

2.

dsp端  如何从pcie获取数据,并存放到dsp的内存ddr上。

 

对于dsp to host

1.

dsp端,如何把dsp内存中的处理结果发送给pcie。

2.

host端, 如何从pcie上获取结果。并存放到host的主机内存中。

 

谁能讲讲这四个过程的大致原理。谢谢!

  • 主要是涉及到一个in-outboud地址转换,首先需要配置好地址转换关系。

    每个设备内部有一段PCIe data memory,在out输出时,将数据写到PCIe data memory,PCIe硬件会对改地址段进行输出地址转换为PCIe总线地址,向外发送;对于接收端,接收到PCIe总线地址后,根据相应的inbout地址转换map转换成内部地址,然后PCIe会自动将接受的数据写到内部转换后的地址。

    C6678 PCIe user guide中有相应的In-outbound地址转换说明。

  • Andy Yin1 说:

    主要是涉及到一个in-outboud地址转换,首先需要配置好地址转换关系。

    每个设备内部有一段PCIe data memory,在out输出时,将数据写到PCIe data memory,PCIe硬件会对改地址段进行输出地址转换为PCIe总线地址,向外发送;对于接收端,接收到PCIe总线地址后,根据相应的inbout地址转换map转换成内部地址,然后PCIe会自动将接受的数据写到内部转换后的地址。

    C6678 PCIe user guide中有相应的In-outbound地址转换说明。

    你好 andy:

    非常感谢回复,但是还是不明白几点。

    1.inbound 和 outbound区别

    in和out的参照物是什么?如果按照你的说法,把内部地址转化为pcie总线地址是out。

    那么DSP通过PCIE发送数据到host是oubound,HOST通过PCIE发送数据给dsp也是

    outbound。同样的道理,如果pcie总线地址转化为设备内部地址是inbound??

    2.

    同样按照上面,比如host写数据到dsp的传输过程,既包含了outbound的过程,也

    包含了inbound的过程,因为host把内部地址转化为pcie地址是outbound过程,

    到dsp内部,dsp把pcie总线地址转化为dsp内部地址是inbound过程。

    可以这么理解么?

    谢谢!

  • Andy Yin1,您好

    我是不是可以这么理解:device1的0x1230_0000映射到了device2的outbound region0(0x6000_0000),OB_SIZE=1MB,是不是就意味着0x1230_0000开始的1MB地址的内容都自动传输到了device2的region0?如果起始地址为0x1230_0000的1MB内存中内容有变化,那region0需要什么操作才会同步于起始地址为0x1230_0000的1MB中的内容呢?

    谢谢!

  • 楼主您好,我现在也在研究这个问题,想向您请教,方便加个联系方式吗