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机制



1、Primary Interrupt与Secondary Interrupt、System Interrupt与Host Interrupt在使用上具体有什么区别啊?

2、利用CSL_mapSystemIntrToChannel()函数进行系统中断与通道的映射,那系统中断与通道具体怎么映射呢?分别有多少个系统中断与通道?

3、EDMA3 Instance0、EDMA3 Instance1、EDMA3 Instance2在使用上有什么不同?在C6678评估板上测试发现:(1)打开Instance0的0通道进行数据传输时,EDMA设置的源地址和目的地址只能位于共享内存,而当源地址或目的地址位于L2RAM或者DDR时,数据却不能传输;(2)在将源地址和目的地址设为共享内存时,第一次数据可以传输成功,第二次修改源地址和目的地址时,通过手动触发,也能判断IPR标志,但却发现数据并没有真正传输到目的地址。

忘各位专家能给予解答,谢谢!

  • xuwei您好,

    1. 直接映射到Corepac的中断理解为primary interrupt,而将通过INTC间接映射到Corepac的中断理解为secondary interrupt;将Corepac的输入中断理解为Host interrupt,INTC的输入理解为System interrupt;

    2. INTC的输入系统中断是固定的,根据相应data manual的中断一节可以知道;系统中断到channel的映射是调用上述函数实现,由于channel与host interrupt是一一对应的,所以可以灵活地将系统中断映射到对应的host中断,从而可以路由到Corepac、TPCC及Hyperlink上;

    关于上述中断知识具体可以参考6678 data manual中断一小节及Keystone  INTC。

    3. 6678存在3个EDMA3,即TPCC0,TPCC1,TPCC2,每个TPCC都可以实现L2,SL2,L3,DDR之间数据的传输;他们的区别在于每个TPCC的工作主频不一样,包含的TC数不一样等。请问你的代码是基于CSL、EDMA3 LLD、或者其他来写的,建议走查一下代码及测试方式是否有问题,如果有时间可以对照EDMA3的userguide分析原因。同时建议将你的代码实现流程及细节贴出来共同分析。

    谢谢!