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.

TMS320C6657: 【求教! 紧急!】EDMA使用link之后,每次事件是不是还需要单独触发一次?

Part Number: TMS320C6657

我在使用C6657配置EDMA,进行EMIF的数据搬运。看了一些关于link和chain的内容,有一些疑问,期待解答:

先说说我现在配置的情况和我对link和chain的一些理解:

link结构通过配置参数块link_addr,自动更新加载下一次传输使用的参数。

chain结构通过配置参数块Tcc_num,自动触发下一个通道传输。

存在的疑问是:

1.link结构不用每次传输完毕更新所有的参数块,但是每次事件传输完毕需要重新触发一次?

2.chain结构两个通道间只用触发一次,但是事件使用的参数块一直被改变,每次事件传输完毕需要重载参数块?

总而言之,感觉这两种模式的配置都各有利弊。最后一个问题:3.如果需要对一块不连续地址又读又写,读写和地址都不连续,使用EDMA配置的效率最优方法是使用link还是chain?或者是两个结构一起使用,注意配置?

  • 1. Link结构确实是通过配置参数块(PaRAM set)中的`link_addr`来实现自动更新加载下一次传输使用的参数。这样的设计允许EDMA在当前传输完成后,自动加载下一个参数块,继续进行数据传输,而不需要CPU介入。您的理解是正确的,对于link结构,虽然不用每次传输完成后更新所有的参数块,但确实需要在每次事件传输完成后重新触发一次传输,这是因为link只负责参数的自动更新,不涉及传输的自动触发。

    2. Chain结构通过在参数块中配置Tcc来实现一个通道传输完成后自动触发另一个通道的传输。在chain结构中,一次触发可以使得多个通道依次自动进行传输,无需CPU干预,这对于需要连续处理多个数据块的场景非常有用。

    您的理解也是正确的,chain结构允许在通道间进行自动触发,但是每个通道的参数块在传输完成后可能需要更新,以便用于下一次传输。