一. DMA的工作原理:

DMA是一种内存访问技术;

可以独立于CPU, 直接读、写系统存储器、外设等

DMA协议架构 dma的工作模式和工作原理_优先级

二. 工作、传输模式:

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.存储器到存储器