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.

C6670核间数据传输



大家好,

我想实现的是:Core0 L2SRAM上有一个数组,Core0需要将数据发送到Core1的L2SRAM上,然后再发送个中断给Core1去处理这个数组?

我打算如下实现方式:

1. Core0把这个数组从Core0的L2SRAM上搬移到MSMCSRAM上,然后再发个IPC Notify触发Core1,Core1再从MSMCSRAM这个位置把数组搬移到自己的L2SRAM上。

但是感觉要做cache一致性维护,觉得比较繁琐。

2. 拟打算通过ListMP实现。

Core0通过ListMP_putTail(handle1,elem_test);把数组放入一个List的尾部,再发送个IPC Notify给Core1,Core1再elem_test = ListMP_getHead(handle1);从List中取出数据。

可是我想传递的数据是一个数组,而ListMP_putTail或者ListMP_getHead操作的都是ListMP_Elem这样一个structure,怎么携带数组呢?

3. 不知道MessageQ能否实现?有类似的实例工程吗?

谢谢~··!

  • 建议用EDMA或者infrastructure pktDMA。

    使用EDMA的话,发送侧core0需要预先获知接收地址,在发送数据后产生EDMA中断到core1;

    使用infrastructure pktDMA,发送与接收是完全独立的,不需要预知接收侧的接收地址;在core0上配置好pktDMA相关的Tx,如Tx descriptor等,在core1上配置好Rx flow、RxFDQ等。参考navigator 培训材料:

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

    参考navigator例程:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx