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.

求一个多核同时EDMA传输的例子(pingpong缓存)



如题,有大神有多核同时EDMA传输的例子(pingpong缓存)吗?要实现多核同时从L2 向DDR3传数.帮帮小弟,谢谢

  • pdk csl下有EDMA的例子,是单核的,EDMA很简单,你可以先写一个EDMA ping pong程序在单核上运行,多核只是每个核使用的EDMA资源分配问题。

  • 可能是我太笨了,既然Andy Yin1 你说很简单,我想问下instNum这个参数8个核该怎样配置了?它的值只能设0,1,2.具体含义是什么了?我试过8个核都设成一样的,有些核DMA传输要掉包。 (是从L2传输到DDR3哈),谢谢了

  • instNum是EDMACC个数,C6678总共有3个CC,所以取值范围是0,1,2,每个CC中有多个EDMA 通道,每个核可以使用其中任意的通道。至于你说的掉包跟你这个参数配置没有关系,可能跟你的其他配置有关。建议你先稍微看看EDMA手册了解一下其架构。

  • Andy Yin1你好,其实现在困扰我的问题主要是在一个循环里DMA又取又存有冲突哈.现在如果单独的多核同时DMA取数(DDR3->L2)或者DMA存数(L2->DDR3)没有问题,我现在只用了PING缓存.但我发现个很奇怪的问题,希望Andy Yin1帮我看看谢谢...

    我的程序架构:

    (8核同步情况下)

    for(i=0;i<1024;i++)

    {

    (1)DMA传输(DDR3->L2);

    (2)读取DMA传输到L2里的数据;

    (3)DMA传输(L2->DDR3);

    (4)读取DMA传输到DDR3里的数据;

    }

    这样的话在第二步里读取L2的数据就会发现DMA传输会出现掉包的现象。但第四步就不会出现掉包的现象。其中(1)和(3)中的L2和DDR3的地址都是不一样的。但是我现在调整下顺序就不会出现掉包的现象如下

    for(i=0;i<1024;i++)

    {

    (1)DMA传输(DDR3->L2);

    (2)DMA传输(L2->DDR3);

    (3)读取DMA传输到L2里的数据;

    (4)读取DMA传输到DDR3里的数据;

    }

    这样在读取(3)和(4)中的数据时就都不会出现掉包的现象。。。。但这样又不符合我的主程序架构,请问Andy Yin1这是哪里引起的冲突了?急求解答这个问题已经困扰我半个多月了