1.概述
EDMA3控制器的基本用处是:独立于CPU批量的进行数据传输。
典型的用法:
a:服务外部内存(比如DDR)
b:服务芯片内的内存(比如:L2 SRAM)
c:服务外设,比如:串口
主要目的:减轻DSP 的数据传输任务。
EDMA3控制器由2个主要模块组成:
EDMA3通道控制器(EDMA3CC),充当EDMA3控制器的用户接口,EDMA3CC包括:参数RAM(PaRAM)通道控制寄存器、中断控制寄存器。EDMA3CC负责软件请求或外设事件的优先级管理,向传输控制器发布传输请求(TRs)。
EDMA3传输控制器(EDMA3TC),依附于EDMA3通道控制器,负责数据传输,EDMA3TC向编程传输的源和目的地址发布读写请求。
2:结构
2.1 EDMA3通道控制器(EDMA3CC)
图2:EDMA3传输控制器方块图
2.3 EDMA的传输类型
EDMA3传输总是以三维来定,这3维定义为:
第1维或阵列(A):一个传输的第1维是由ACNT个连续字节。
第2维或帧(B):一个传输的第2维是由BCNT个ACNT字节的阵列。第2维里的每个阵列传输通过一个索引彼此分开,这个索引使用SRCBIDX和DSTBIDX来配置。
第3维或块(C):一个传输的第3维是由CCNT个帧,每个帧由BCNT个阵列,而每个阵列有ACNT个连续字节。第2维里的每个传输由以一个索引同前一个分开,这个索引使用SRCCIDX或DSTCIDX来配置。
注意,索引的参考点取决于同步类型,一旦收到一个触发/同步事件而引起传输的数据数量由同步类型(在OPT里的SYNCDIM位)来控制,在三个维中,仅支持2个同步类型:A-同步传输和AB-同步传输。
图3:ACNT, BCNT, 和CCNT 的定义
2.3.1 A同步模式
在A-同步传输中,每个EDMA3同步事件引起ACNT字节的第1维传输,或者说ACNT字节的一个阵列。换句话说,每个事件/TR包仅传递一个阵列的传输信息。这样,为了完整地服务一个PaRAM集,需要BCNT x CCNT个事件。
阵列总是由SRCBIDX和DSTBIDX分开,见图4,阵列N的起始地址等于阵列N-1的起始地址加源和目的的BIDX。
帧总是由SRCCIDX和DSTCIDX来分开,对于A-同步传输,在帧耗尽之后,地址更新是通过把SRCCIDX/DSTCIDX加到这一帧的最后一个阵列的起始地址,如图4,SRCCIDX/DSTCIDX是帧0阵列3与帧1阵列0之间的差。
图4显示了3(CCNT)个帧,每帧4(BCNT)个阵列,每阵列n(ACNT)个字节的A-同步传输。在这个例子里,为了完成一个PaRAM集的传输需要12个同步事件(BCNT x CCNT)。
图4:A同步模式传输(ACNT = n, BCNT = 4, CCNT = 3)
2.3.1 AB同步模式
在AB-同步传输中,每个EDMA3同步事件引起2个维的传输,或者说是一帧的传输。换句话来说就是每个事件/TR包包含有一个整帧(1个帧有BCNT个阵列,每个阵列ACNT字节)的信息。,这样,为了这样,为了完整地服务一个PaRAM集,需要CCNT个事件。
阵列总是由SRCBIDX和DSTBIDX分开,见图5,帧总是由SRCCIDX和DSTCIDX分开。
注意,对AB-同步传输,在帧的TR发布之后,地址更新是通过把SRCCIDX/DSTCIDX加到这一帧的第一个阵列的起始地址。这一点与A-同步是不同的。也就是说,在A-同步传输和AB-同步传输中,SRCCIDX/DSTCIDX的意义是完全不一样的,这一点务必注意。
图5显示了3(CCNT)个帧,每帧4(BCNT)个阵列,每阵列n(ACNT)个字节的AB-同步传输。在这个例子里,为了完成一个PaRAM集的传输需要3(CCNT)个同步事件。
图5:AB同步模式传输(ACNT = n, BCNT = 4, CCNT = 3)
2.4 PaRAM
EDMA3控制器是基于RAM的结构,DMA或QDMA通道的传输上下文(源/目的地址、计数、索引等)用一个参数RAM表来编程,这个RAM在EDMA3CC中,被称之为PaRAM,PaRAM表被分段成多个PaRAM集,每个PaRAM集包括8个4字节的PaRAM集条目(也就是说每个PaRAM集总共32个字节),它包括典型的DMA传输参数,如:源地址、目的地址、传输个数、索引、选项等。
PaRAM结构支持灵活的Ping-Pong、循环缓冲、通道链接和自动加载(linking)。 PaRAM的内容如下:
a:128个参数集。
b:直接映射的64个通道,和能被用作link,或如果不用作DMA通道的话可以作为QDMA集。
c:余下的64通道的可作为link或QDMA集。
图6:PaRAM的参数集对应地址
2.4.1PaRAM参数集
每个PaRAM参数集是8个32bit的字结构,见如图7的描述,每个PaRAM集参数由16bit和32bit的参数构成。
图7:PaRAM参数集
参数的配置:
OPT:通道选项参数
SRC:数据传输源地址
ACNT:一维数据的维度
BCNT:二维数据的维度
DST:目的地址首地址
DSTBICX:目的地址二维索引
SRCBIDX:源地址二维索引
BCNTRLD和LINK:LINK模式参数设置
DSTCICX和SRCCIDX:源和目的地址三维地址索引
CNNT:三维维度设置
2.4.2 OPT参数配置
OPT主要参数配置:
ITCCHEN:一次TC完成链接使能。3维模式AB同步模式必须使能,用来更新三维数据地址。
A同步模式2维3维数据传输必须都使能,用来更新首地址。
TCCHEN: 传输完成链接使能,即最后一个TR完成产链接。
ITCINTEN:一次TC完成产生中断使能,就是每完成一次TC产生一次中断。
TCINTEN:传输完成产生中断,就是最后一次TC完成产生中断。
TCC:传输完成代码,用于告诉EDMAC3CC传输完成的代码,用于chain模式链接下一通道,和中断的产生。
TCCMODE:传输完成代码发送模式,包括 常规模式和提前完成模式,常规模式就是正常的传输完成后发送TCC,提前完成模式就是在EDMA3CC 提交一个TC后即发送TCC认为传输完成,这种模式下,TC可能还在传输数据当chain 或 中断被触发。
FWID: FIFO 的宽度设置,用于SAM或DAM设置为固定地址模式。
STATIC:PaRAM参数的静态设置, 0 代表非静态:当一次TC传输完成后PaRAM 的参数集是否更新或连接,AB模式三维模式设置为非静态,A模式二维和三维模式都设置为非静态。
SYNCDIM:传输的同步模式的设置,A同步模式或 AB同步模式。
DAM:目的地址模式,地址递增模式和固定地址模式。
SAM:源地址模式,地址递增模式和固定地址模式。
2.5 EDMA3 的触发方式:
EDAM3有三种触发方式:事件触发方式,手动触发方式,链接触发方式
事件触发方式通常服务于外设,系统,或者一些产生外部事件的请求,
EDMA与串口之间的数据传送就可以通过事件触发。
手动触发方式:通过CPU向ESR寄存器相应为置位来触发相应的传输。
链接触发方式:是一个传输完成后自动的触发其他传输的触发方式。
QDMA与DAM的主要的不同就是触发方式的不同,QDMA通道在触发字写入的时候自动触发,PaRAM集中的触发字是可以编程指定的。
2.6 Linking 传输
EDMA的通道控制提供了一种连接传输的模式,它其中的所有的参数集中的任何一个参数集都可以被PaRAM MAP中的其他的参数集重载,他主要的应用就是应用在ping-pong buffer,和一些循环传输,不需要CPU中断的传送。Linking 模式的设置为将OPT中的STATIC位置位1,即PaRAM参数设置为非静态模式。
一个传送必须连接到其他的PaRAM,如果是结束这个传送,必须把PaRAM连接到NULL。
2.6 Chain传输
EDMA在一个通道的数据搬运完成后,可以链接到其他通道,继续传送数据,不需要CPU发送命令,时间的响应为DMA事件响应中的三种响应方式的Chain事件响应。
Chain链接模式和Link连接模式是完全不同的模式,Chain模式中没有PaRAM set 的参数的更新,而是一个通道的传输完成直接触发了另一个通道,实现连续的数据的搬运的效果,但是Link模式就是同一个通道上的参数的不断的更新,从而达到连续的数据搬运的效果。
同时在Chain模式中还可以设置两种不同的方式:transfer complection Chaining 就是在这个通道的这次数据搬运结束后链接到其他通道。
intermediate transfer completion chaining 就是在这个通道的这个次数据搬运的一次TR结束后自动链接到这个通道。
两种模式对应OPT中的TCCHEN 和ITCCHEN
2.7传输队列
EDMA有三个