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 一个事件可以同时出发两个EDMA channel吗

EDMA的channel和event好像是对应的,没有办法手动的map,想知道这种情况下,如何让一个外部事件通过gpio同时触发两个edma的channel。谢谢~

  • 1对多的映射需要使用INTC2或者INTC3将GPIO事件映射到多个channel上,结合C6678手册第7.5节Interrupt以及附件手册,你可以了解如何使用该功能。

    Chip Interrupt Controller (CIC) for KeyStone Devices User's Guide (Rev. A).pdf
  • 你的意思是用CIC2和CIC3来映射吧,我试过,gpio输入的触发信号先经过cic的映射到cic_out,然后cic_out作为edma的触发event,但是CIC的system interrupt到channel的map不能一对多,cic的文档SPRUGW4A(1.3.3节)里有如下一句:

    please note that the interrupt cannot be mapped to multiple channels but the connection is selected by the channel map register value.

    所以gpio到cic_out的映射是一对一的,切cic_out与edma event的映射是fixed的,不可更改,

    On the C6678, the association of each synchronization event and DMA channel is fixed and cannot be reprogrammed.

    所以没找到合适的方法来讲gpio映射到多个edma channel上去,我现在直接用gpio的pin0,pin1分别触发edma的两个channel,pin0,1短接。但是浪费一个管脚啊。

  • CIC的配置可以多对一,但是不能一对多.

    但是一个GPIO产生的事件可以分别路由到CIC及EDMA,如GPIO0产生的中断事件可以直接路由到EDMACC1 CHANNEL6及EDMACC2 channel6,并且可以路由到CIC3_0,所以可以用GPIO0产生的事件同时出发3个不同的通道;

    如果某个事件只路由到一个CIC的输入,则这个事件一次只能触发一个channel,但是可以在这个EDMA channe完成后去chain下一个channel。