多核DSP有几种DMA,如EDMA3、IDMA、PKTDMA,看了EDMA3、PKTDMA,但还是感觉困惑,主要是这几种DMA的功能有什么不同,分别面向什么应用场合?
还有,如果是核间数据传输,是PKTDMA快还是EDMA3快?各自特点是什么?
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.
多核DSP有几种DMA,如EDMA3、IDMA、PKTDMA,看了EDMA3、PKTDMA,但还是感觉困惑,主要是这几种DMA的功能有什么不同,分别面向什么应用场合?
还有,如果是核间数据传输,是PKTDMA快还是EDMA3快?各自特点是什么?
EDMA3: 通过配置PaRam的方式进行数据搬移,同时指定发送和接收地址,可以比较灵活的按照程序需求的方式进行数据搬移,例如每隔xx Bytes 搬移一次,比较灵活,并且可以在不同memory 或外设之间搬移, 例如 L2<->L2, L2<->SL2, L2<->DDR3, SL2 <->DDR3, L2/SL2/DDR3<->peripheral registers
IDMA: 仅用于corePac内部的数据搬移,也就是L2<->L2, L2 <-> L1(当L1 被配置成RAM的时候)
PktDMA: 通过配置描述的方式进行数据搬移,但是每个描述符搬移的数据必须是连续的空间,数据不能离散,如果数据离散,需要采用多个host 类型的描述符,每个描述符指向对应的数据空间,同时并不能指定接收的memory地址,接收地址由Rx flow中RxFDQ的描述符来决定。
PktDMA和EDMA的搬移速度没有太大差别,都是运行在1/3 DSP的主频,位宽为128bit 或 256bit,具体选用哪种,客户可以根据系统需求资源分配自行决定。
EDMA3传输数据有源地址和目的地址,如果是多核之间通信,如core0发到core1,那目的地址怎么表示?此外,当数据传输完后,只有core0端有一个完成中断,而core1有没有机制知道数据传输完成?