TI中文支持网
TI专业的中文技术问题搜集分享网站

请问怎么理解C6678中EDMA的传输控制器、通道控制器、DMA通道、QDMA通道、PaRAM 、region等概念(从物理上和逻辑上描述)

1、EDMA3有3个CC,CC0与两个TC相连,CC1和CC2分别与4个TC相连

但是说CC0 DMA通道数16,QDMA通道数8;CC1 DMA通道数64,QDMA通道数8;CC2 DMA通道数64,QDMA通道数8;这是为什么呢?

我看架构框图,CC里面包含DMA/QDMA通道逻辑,是不是物理上只有一个DMA/QDMA通道逻辑,通过设置相应寄存器实现不同逻辑,从而触发不同的事件,以进行DMA传输;事件与通道是同一个概念?也就是说DMA/QDMA通道是逻辑通道?那么在PaRAM中OPT的TCC设置的值有什么要求吗?比如CC0有16个通道,我能将TCC设置为17吗?或者不同的事件有什么区别吗?需要排到事件队列里?

如果我想传输一段很大的数据到DDR,只设置一个事件,分成几次传输可以吗?

对于A同步或AB同步,传输有什么注意事项吗,出于性能考虑,ACNT BCNT和CCNT的值该怎么设置,因为目前只用过A同步,将BCNT和CCNT均设置为1

2.STK 1.1memory_test 的Keystone_common.c中定义了枚举类型EDMA_CC_Channel_Num,包括EDMA_CC0_CH0~EDMA_CC0_CH15、EDMA_CC1_CH0~EDMA_CC1_CH63、EDMA_CC2_CH0~EDMA_CC2_CH63 而在文件mem_test_DMA.c中定义了数组

EDMA_CC_Channel_Num TC_channel_Table[NUM_EDMA_TC]=
{
EDMA_CC0_CH0,
EDMA_CC0_CH1,
EDMA_CC1_CH0,
EDMA_CC1_CH1,
EDMA_CC1_CH2,
EDMA_CC1_CH3,
EDMA_CC2_CH0,
EDMA_CC2_CH1,
EDMA_CC2_CH2,
EDMA_CC2_CH3
#if (NUM_EDMA_TC>10)
,EDMA_CC3_CH0,
EDMA_CC3_CH1,
EDMA_CC4_CH0,
EDMA_CC4_CH1
#endif
};

这里是否体现了一种所说的EDMA3一共有10个TC(物理上的),CC0~CC2分别有16,64,64个DMA/QDMA channel(逻辑上的)

3.请问DMA/QDMA的区别只体现在触发方式上吗?看文档的没看懂QDMA哪里能体现其“快速”的特点,DMA和QDMA通道分别适用于什么场合

由于初学DMA,对这些概念还不太清楚,请多多指教,不胜感激!

user4684431:

追加,4.我看历程里通过设置ESR来启动DMA传输,而打印出的使用的EDMA的TC就是ESR里面设置的channel号(也就是代表的事件号?),这是为甚么?怎么确定EDMA传输使用的是哪一个TC

Tony Tang:

#1. 首先看一下文档:sprugs5b( )中EDMA的block diagram.

TC是EDMA的执行单元,传输是由TC执行的。

CC是用来配置传输的参数的。以及事件与队列之间的映射,队列与TC之间的映射配置等。

 Datasheet上对C6678上的EDMA的描述:

There are 3 EDMA Channel Controllers on the C6678 DSP, EDMA3CC0, EDMA3CC1, and EDMA3CC2.• EDMA3CC0 has two transfer controllers: EDMA3TC1 and EDMA3TC2.• EDMA3CC1 has four transfer controllers: EDMA3TC0, EDMA3TC1, EDMA3TC2, and EDMA3TC3.• EDMA3CC2 has four transfer controllers: EDMA3TC0, EDMA3TC1, EDMA3TC2, and EDMA3TC3.

共三个CC,每个CC后带TC情况如上面描述。

事件是指用来解发EDMA传输的。是输入到CC的,至于某个CC上输入的事件号及名称见Datasheet上7.9.4节的Table 7-35, 7-36, 7-37. 因为共三个CC,所以是三个table. 相应的,在用EDMA之前,先看是用的哪个事件,再找到对应的CCn,配置CC, 就OK了。

user4684431请问DMA/QDMA的区别只体现在触发方式上吗

是的。所谓的快是指写完trigger word就开始传输,不用等事件的到来。

Tony Tang:

回复 user4684431:

user46844314.我看历程里通过设置ESR来启动DMA传输,而打印出的使用的EDMA的TC就是ESR里面设置的channel号(也就是代表的事件号?),这是为甚么?怎么确定EDMA传输使用的是哪一个TC

ESR只不过是用手动来触发事件开始传输而已,有点像QDMA,或者用做调试时来测试EDMA的配置是否正确,通常在EDMA代码有问题时,用来区分是前面外设没有事件送过来,还是EDMA的配置有问题,这时用ESR来手动触发,就河以判断了。

ESR寄存器里的bit对应的是Channel,即事件号,与TC没有关系。

Channel可以通过DMAQNUMn寄存器配置映射到哪个队列。即当事件到来时,将它放到哪个队列(queue)进行排队(如果前面有未完成的EDMA传统输)。

而队列通过QUETCMAP来配置与TC的映射关系。即哪个队列的事件放到哪个TC进行传输。

上面两个配置不是每款芯片上都可以配置的,尽管都是EDMA3。可配置的目的,可以在系统根据应用特点将不同的事件分配到相应的Queue及TC, 比如把频繁快速的事件放到某个queue,以及TC,而大块的对实时性不那么敏感的事件放到另一个Queue及TC,这样就可以避免同一个Queue里大块的数据传输导致频繁快速的事件传统输不及时。

赞(0)
未经允许不得转载:TI中文支持网 » 请问怎么理解C6678中EDMA的传输控制器、通道控制器、DMA通道、QDMA通道、PaRAM 、region等概念(从物理上和逻辑上描述)
分享到: 更多 (0)