2008年12月15日星期一

DSP中的EDMA

EDMA可以在没有DSP参与得情况下对数据进行搬移操作,这样可以让cpu专心做数据计算

1、EDMA得请求源
三个,EDMA Channel 64个通道,对应64个同步事件;
HPI,PCI,EMAC master port;
L2 Cache controller/QDMA;

2、EDMA 得请求过程
TR---->TC---->地址产生器;

3、优先级
在DM642中,EDMA可以设置4种优先级,在EDMA传输控制器里面有四个优先级队列对应着这4个优先级,Q0~Q3,优先级依次递减,队列最长放16个申请,每个申请源对应得长度可以配置.但是任何一个队列的满,将会导致整个EDMA的提交处于STALL状态。从EDMA的队列来看,任何时候,总是优先服务高优先级的队列中请求,但是另外一方面,每一个队列中的传输请求(TR)总是串行服务的,因此,如果想两个EDMA交错进行,必须保证它们位于不同的队列之中,或者采用ATCC来进行触发。
有HPI的EDMA传输请求(burst最长为8个WORD),有L2和QDMA的请求(QDMA是通过L1D的write buffer 提交的,因此,不小心控制,可能会导致整个CPU 处于STALL状态),还有就是EDMA控制器提交的:在复杂系统中,例如有AUDIO,VIDEO,HPI,video decoder,以及QDMA,因此,从理论上看,最好的设置是L2的提交为urgent,而audio 设置为high,HPI设置为medium(缺省),video decoder/QDMA设置为low,那么视频必须设置为high或者urgent ,否则视频显示将出现莫明的小块,甚至横条。这种原因有多方面:例如将代码放在片外,HPI的请求导致的EDMA传输请求。如果将VIDEO设置低于HIGH,将导致video得不到service,而出现underflow的问题。
4、挂起
当任何一个EDMA申请源得搬移请求对应得队列满得时候该申请源的所有请求都被挂起,直到那个导致挂起的请求进入队列;

5、系统的EDMA优先级分配
四个队列是并行工作的,所以要合理分配优先级提高吞吐率----优先级的合理分配;
尽量将大数据量的搬移分配为低优先级,数据量少而实时要求高的放高优先级;
将大数据量的搬移拆分成几个小数据量的搬移;

6、EDMA的使用
打开--配置--事件触发

没有评论: