TC1728直接存储器访问控制器(DMA)用户手册11-12011-12DMA,V1.011直接存储器访问控制器(DMA)本章描述TC1728的直接存储器访问(DMA)控制器和存储器检查器模块(MCHK),由以下章节组成:•DMA控制器内核功能描述(见章节11.2)•DMA控制器模块寄存器描述(见章节11.3)•TC1728DMA控制器的具体实现(中断控制、地址译码、时钟控制,见章节11.4)•MCHK模块功能描述(见章节11.5)•存储器检查器模块寄存器描述(见章节11.5.2)注:章节11.3所描述的DMA内核寄存器在TC1728用户手册的其它章节引用时,需要添加模块名前缀“DMA_”。11.1新功能AudoFutureDMA和AudoNG相比的主要不同之处:•引入一种新的映射地址寄存器模式,以支持在无CPU介入的情况下持续重启通道。在此新模式下,可直接对映射地址寄存器进行写入操作,并且当被加载到目标或目的地址寄存器时,映射地址寄存器不被自动重置。(页11-7和页11-93/页11-99)。新的映射寄存器写入使能位被加入到寄存器DMA_ADRCR1/0x中。•对大于32KB数据的即时操作,DMA通道能够实现对大于32KB部分的回绕发送。(CHCR.TREL和CHSR.TCOUNT的位域被扩展到10位。见页11-86和页11-90.也见DMA_ADRCR.CBLS/CBLD页11-93)。•作为片上AudoFuture系统的中央模块,DMA通过一个特有的LMB主接口与LMB直接相连。由于AudoFuture系统架构基于单一的LMB和单一的FPI总线(SPB),连接RPB的DMA主接口被移除。。•因为AudoFuture中不再有远程外设总线,RPBBCU控制寄存器被移除。•Cerberus模块可与DMA外设接口相连。这使得Cerberus模块可通过DMA主接口直接访问FPI和LMB总线,该访问在FPI/LMB上具有最高或是最低优先级。•片上总线接口的DMA子模块有3级可编程优先级(AudoNG中有2级)。在通道控制寄存器中的DMAPRIO位域被扩展到2位来支持三个DMA的片上总线优先级(页11-86)。这种新结构一方面与SPB上的AudoNG通道优先级兼容,另一方面它允许使用DMA通道在LMB上进行低优先级后台任务,比如存储器擦除。此外,DMA片上总线优先级(页11-24)和DMA总线切换优先级相互兼容(页11-22)。TC1728直接存储器访问控制器(DMA)用户手册11-22011-12DMA,V1.0•来自DMA模块的系统中断寄存器组被移除(移动到CPU,SCU和PMU)。•通常情况下,现有的DMA模块通常具有8路服务请求节点。DMA中断输出DMASR[7:0]与中断节点相连接。SR[15:8]通常用作DMA通道请求输入(DMA_SRCn(n=0-7)。•每路DMA通道有多达16个可选择的请求输入(AudoNG中多达8个)。让为使移动引擎通道有更多灵活的用法,通道请求输入的数量增加到16(DMA_CHRC0x/1x.PRSEL从3位扩展到4位,页11-86)而且DMA请求连线矩阵被重定义(页11-102)。•调整DMA访问保护以适应AudoFuture地址映射(页11-112)。地址保护子范围被映射到OVRAM,PCPPRAM,LDRAM和SPRAM中。•通常情况下,DMA控制寄存器组与新结构相适应(一个FPI主接口和一个LMB主接口,而不是两个FPI主接口)。•存储器检查器一章中添加了关于存储器检查器算法具体实现的的结构框图(页11-127)。AudoMaxDMA与AudoFuture相比主要不同之处:•与DMA对应的SSC2请求线被添加到DMA请求连线矩阵表中。(页11-102)。TC1728直接存储器访问控制器(DMA)用户手册11-32011-12DMA,V1.0DMA外设接口LMB总线接口FPI总线接口11.2DMA控制器内核描述无需CPU或其它片上模块干预,TC1728DMA控制器将数据从源地址传送到目的地址。一路DMA通道控制一次数据传送操作。一个DMA子模块提供8路DMA通道。总线切换将DMA子模块和两个片上总线接口及一个DMA外设接口连接起来。在TC1728中,两个片上总线接口与系统外设总线和LMB总线相连。DMA外设接口连接Cerberus模块、MicroLink接口模块和其他DMA相关模块(TC1728中的存储器检查器模块)。时钟控制、地址译码、DMA请求连线、DMA中断服务请求控制是特定实现的,并且在DMA控制器内核之外进行。在下列框图中的指令“m”指的是DMA子模块编号(m=0-1)DMA控制器fDMA时钟控制DMA子模块m系统外设总线片上外设单元的DMA请求请求选择/仲裁DMA通道00-07总线切换事务控制单元LMB总线MLI0地址译码存储器检查中断请求节点SR[15:0]DMA中断控制仲裁器/切换控制CerberusMCB06149图11-1DMA框图TC1728直接存储器访问控制器(DMA)用户手册11-42011-12DMA,V1.011.2.1特性DMA控制器具有如下特性:•16路独立DMA通道–2个DMA子模块(每个DMA子模块中有8路DMA通道)–DMA子模块支持并行通道执行(每个DMA子模块一个通道,两个子模块并行执行)–每路DMA通道都有多达16个可选的请求输入–DMA子模块内DMA通道优先级可编程设定,共2级优先级–软件和硬件DMA请求–硬件请求从片上外设和外部输入中选择•总线接口上的DMA子模块优先级可编程•具有64位读缓冲器的LMB主接口,可实现对缓存区(存储段8)的读访问•每个DMA通道可单独设定操作模式–单次模式:特定次数DMA传送之后,停止操作并禁用DMA通道–连续模式:特定次数DMA传送之后,DMA通道保持使能;可重复进行DMA传送–地址修改可编程–两个映射寄存器模式(同/w/o自动重置位和直接写入访问)•每路DMA通道具备32位寻址能力–4GB寻址范围–每次DMA操作移动32Kbyte的数据块–支持灵活循环缓冲大小的循环缓冲寻址模式•DMA传送/事务数据宽度可编程:8位、16位或32位•每路DMA通道都配有寄存器组–源地址和目的地址寄存器–通道控制和状态寄存器–传送计数寄存器•灵活的中断产生(DMA模块中包含MLI通道的服务请求节点逻辑)•DMA模块以FPI频率工作,LMB接口以LMB频率工作•依靠目标/目的地址,来自移动引擎的读取/写入访问直接到FPI总线,LMB总线,MLI模块或者到Cerberus模块。TC1728直接存储器访问控制器(DMA)用户手册11-52011-12DMA,V1.011.2.2术语定义为了便于DMA控制器的功能描述,本节中定义了一些基本术语。DMA转移DMA转移操作通常由两部分组成:1.读转移操作:将数据从数据源加载到DMA控制器。2.写转移操作:将数据从DMA控制器写入数据目的地址。DMA转移操作中,始终通过DMA控制器将数据从数据源地址转移到数据目的地址。数据暂时保存在DMA控制器中。读转移和写转移操作的数据宽度始终一致(8位、16位或32位),不支持数据合并或分解。DMA控制器源数据读转移DMA通道写转移目的数据DMA转移MCA06150图11-2DMA术语定义DMA传送DMA传送可由1、2、4、8或16次DMA转移操作组成。DMA事务DMA事务由几个(至少一个)DMA传送组成。传送计数决定一个DMA事务中的DMA传送次数。例子:1024字(32位宽度)的事务可由256次传送组成,每次传送由4次DMA字转移操作组成;或由128次传送组成,每次传送由8次DMA字转移操作组成。TC1728直接存储器访问控制器(DMA)用户手册11-62011-12DMA,V1.011.2.3DMA原理DMA控制器支持从一个地址到另一个地址的DMA转移操作。可由硬件或软件请求DMA转移。由来自外设模块或其它DMA通道的特定请求线触发DMA硬件请求(见图11-3)。模块的功能决定各外设模块中可用DMA请求线个数。通常情况下,DMA通道的DMA请求和中断请求可同时产生。因此,中断控制单元和DMA控制器能够独立响应由同一个请求源产生的中断和DMA请求。DMA控制器DMA子模块0DMA子模块1请求FPI总线总线切换LMB总线请求片上外设单元1片上外设单元3片上外设单元2请求DMA外设接口MCA06151图11-3DMA原理DMA控制器主要由两个个DMA子模块和一个总线切换组成。一旦完成配置,DMA子模块可作为总线主设备连接到FPI总线和LMB总线上。TC1728直接存储器访问控制器(DMA)用户手册11-72011-12DMA,V1.011.2.4DMA通道功能每路DMA通道(共16路)都有一组对应的寄存器组,共包含7个32位寄存器。这些寄存器都有指示相关DMA子模块通道的标记和指示相关DMA通道的标记:标记“m”给出DMA子模块的编号(m=0-1),标记“n”给出DMA子模块的通道号(n=0-7)。例如:CHCR04为DMA子模块0中DMA通道4的控制寄存器。一组DMA通道寄存器包含下列寄存器:•通道mn控制寄存器CHCRmn(详见页11-86)•通道mn状态寄存器CHSRmn(详见页11-90)•通道mn中断控制寄存器CHICRmn(详见页11-91)•通道mn地址控制寄存器ADRCRmn(详见页11-93)•通道mn源地址寄存器SADRmn(详见页11-98)•通道mn目的地址寄存器DADRmn(详见页11-99)•通道mn映射地址寄存器SHADRmn(详见页11-100)11.2.4.1映射源地址或目的地址在如下典型应用中,ASC模块使用DMA事务将接收到的数据(源地址固定)传送到存储器缓冲区(目的地址可变)中。传送一定数量的数据之后,应发起新的DMA事务,将后续ASC数据传送到另一个存储器缓冲区中。在DMA事务运行期间,当用实际目的地址来更新目的地址寄存器时,映射机制允许在不影响目的地址寄存器内容的前提下,编程设置新目的地址。这种情况下,新的目的地址被写入缓冲寄存器,即映射地址寄存器。启动下一次DMA事务时,无须CPU干预,新地址会从映射地址寄存器传送到目的地址寄存器。这种映射机制减轻了CPU负荷,重新编程地址寄存器之前,CPU无须检查DMA事务是否结束。映射地址寄存器还能够保存源地址。不过它不能同时保存源地址和目的地址。这意味着,启动DMA事务时,映射机制只能自动更新源地址或者目的地址。如果下一个DMA事务需要更新两个地址寄存器(源地址和目的地址),则首先必须完成该通道正在运行的DMA事务,随后,在启动下一个DMA之前,通过写操作更新源地址寄存器和目的地址寄存器。图11-4给出更新源地址寄存器的操作过程。目的地址寄存器的更新也是以这种方式。TC1728直接存储器访问控制器(DMA)用户手册11-82011-12DMA,V1.0当新地址被写入源地址或目的地址寄存器(写入相关寄存器的地址处)时,如果没有正在运行的DMA事务,新地址值直接写入源地址或目的地址寄存器。这种情况下,不需要进行地址缓冲。若有DMA事务在运行,将新地址写入源地址或目的地址寄存器(写入相关寄存器的地址处),不会发生地址寄存器传送操作,SHADRmn保存写入的新地址值。对于该操作,要求位域ADRCRmn.SHCT必须为01B(新地址为源地址)或10B(新地址为目的地址)。启动下一次DMA事务时,发生映射传送且SHADRmn的内容被写入SADRmn或DADRmn(ADRCRmn.SHCT必须作相应设置)中。映射传送之后,若映射寄存器使能位置0(ADRCRmn.SHWEN=0),SHADRmn将被置为00000000H。在此情况下(ADRCRmn.SHWEN=0),可由软件通过读取映射地址寄存器的方式,检查是否已经发生了映射传送。由于映射寄存器只能被分配给源地址寄存器或目的地址寄存器,因此DMA事务运行期间只有一个地址寄存器可被映射。请注意:在单次模式或连续模式中