一. DMA的工作原理:
DMA是一种内存访问技术;
可以独立于CPU, 直接读、写系统存储器、外设等
二. 工作、传输模式:
1. 工作模式:FIFO模式与直接模式
FIFO模式下,可以将要传输的多个数据(或字节)累计存储在FIFO缓冲器中,然后在FIFO缓冲器中设置存储阈值,当到达阈值时,FIFO会自动把所有存储的数据一次性的发送到目标地址;
直接模式下,DMA直接进行数据从源地址到目的地址的传输,对于外设的传输,因为外设内部一般也有FIFO,所以传输的数据可以被直接存储在外设的FIFO中。
2. 传输模式:单次传输与突发传输
单次传输模式下,一次操作(软件)只能传输一次(一次可以理解为一个节拍,如一个字节)
突发传输模式下,一次操作可以传输多次,如4次,8次,16次
三. 寻址模式:
a. 增量寻址:发送完数据后,继续发送下一个地址的数据,配合突出传输模式
b. 非增量寻址:发送完数据后,如果想要继续发送数据,需要更具软件配置的发送下一个数据的地址,再进行数据的传输。
四. DMA的双面性特点:
对于CPU,DMA是外设
对于外设,DMA是控制器
五. 使用DMA的原因:
a. 把比较固定的任务让DMA来做,可以减轻CPU负担,提高系统的效率
b. DMA具有一般CPU没有的高效操作,提高系统的吞吐率
六. 基于ARM Cortex M3的SOC DMA系统架构
系统有两个DMA;
每个DMA有两个端口,作为Master,对外设,Mem控制。同时作为Slave,CPU可以通过BUS对DMA控制,
其中一个DMA 2,有两个端口均连接至BUS MATRIX上,DMA1 仅有一个端口连接至BUS MATRIX;
对于两个DMA,均可以连接至AHB-APB Bridge
DMA0,端口并没有连接至AHB/APB上,而且由BUS Matrix 连接至存储器中,并且有一路端口专用于AHB-APB 2上。
七. 思考的问题
a. DMA与CPU如何竞争总线?
i. 两路DMA, CPU军师总线矩阵的master,
ii. DMA与CPU同时访问一个slave时,BUS Matrix会仲裁器对请求进行仲裁,决定优先级访问顺序。
iii. DMA与CPU同时访问不同slave时,可以同时工作
b. 为什么使用2个DMA,分别起什么作用?
i. 对于一个DMA来说,通道数是有限的;
ii. 两路DMA,可以连接更多的外设DMA请求源
iii. 两路DMA,在内存,外设的访问空间上做了一定的区分,可以同时工作,提高了系统效率(分别服务不同的外设)
c. 同样是DMA,DMA1与DMA2的应用的区别?
i. DMA2的master端口可以访问总线矩阵中所有的slave(存储器、AHB1、AHB2、APB1、APB2)
ii. DMA1的端口1只连接了存储器属性的slave,端口2直接连接了APB1上
iii. DMA2可以实现存储器、AHB1、AHB2、APB1、APB2之间数据的相互传输
iv. DMA1只能实现存储器、APB1之间的相互传输(不经过总线的仲裁,大大提高了访问速度、减轻总线矩阵的负担)
d. DMA1为什么只有一个master连接至BUS矩阵中?
i. 同一个DMA会有多个master接口,master的功能不同,所映射的地址范围不同
ii. master接口绕开总线矩阵的仲裁,而直接连接到外设的AHB2APB桥,加快对外设的访问速度
iii. 减少连接到总线矩阵的master接口数量,降低矩阵的复杂度,有利于提高系统效率
八. 一般结构:
a. DMA请求
i. 如果外设想要通过DMA出书数据,必须先向DMA控制器发送DMA请求,DMA收到请求后,由控制器给CPU请求信号,要求占用总线,收到占用总线的授权后,DMA向外设发送应答信号,当外设应答后,DMA收到应答信号后,就会启动DMA传输,指导传输完毕。
ii. DMA有DMA1和DMA2两个控制器,DMA1有两个控制器,DMA1有7个通道,DMA2有5个通道
iii. 不同DMA控制器的通道有不同的外设请求
b. 通道
i. DMA可以有多个通道,例如在上面的架构中,总共有7+5 = 12个通道。
ii. 每个通道对应不同外设的DMA请求,虽然每个通道可以接收多个外设请求,但是同一时间只能接收一个,不能同时接收多个请求
c. 仲裁器
i. 当有多个DMA请求时,则需要仲裁器进行优先级管理。
ii. 仲裁器管理DMA请求分为2个阶段:
1) 第一个阶段由软件完成:可以在寄存器中设计优先级的等级(根据硬件的设计)
2) 第二个阶段由硬件完成:如果两个以上的DMA通道的请求设置的优先级一样,则优先级取决于通道编号
iii. 仲裁器优先级
1) 固定优先级顺序:优先级在架构中就已经确定好了,或者,由软件配置
2) 轮转算法优先级:优先级不断轮转
3) 随机算法优先级:使用随机数
九. DMA数据配置——传输方向
a. 从外设到存储器
b. 存储器到外设
c.存储器到存储器