DMA的工作过程

DMA是Direct Memory Access的缩写,意为存储器直接访问。可以不通过CPU而在DMA控制器的控制下,高速地与I/O设备和存储器之间交换数据。CPU除了在数据传输开始和结束时做一些处理外,在传输过程中,CPU可以进行其他工作。这样,在大部分时间里,CPU和输入/输出都处于并行操作状态。所以,使整个计算机系统的效率大提高。DMA控制器是实现DMA输入/输出方式的具体执行操作。

ARM9的S3C2440拥有4通道的DMA控制器,与系统总线的外围总线相连。DMA控制器的每一个通道可以在系统总线上的存储器与外围总线之间、系统总线上的设备之间以及外围总线之间操作数据传输而不被限制。

S3C2440的DMA在以下四种情况可运行:

1.  源设备和目标都在系统总线AHB上;

2.  源设备和目标都在外围总线APB上;

3.  源设备在系统总线,而目标设备位于外围总线;

4.  源设备在外围总线,而目标设备位于系统总线;

DMA的主要优点是:可以不通过CPU的中断来实现数据的传输,DMA的运行可以通过软件或者通过外围设备的中断和请求来初始化。

DMA的工作过程(如图):





 


DMA的工作过程

1)  外设向DMAC发出请求;

2)  DMAC通过HOLD向CPU发出总线请求;

3)  CPU响应释放三总线,并且发应答HLDA;

4)  DMAC向外设发DMA应答;

5)  DMAC发出地址、控制信号,为外设传送数据;

6)  传送完规定的数据后,DMAC撤销HOLD信号,CPU也撤销HLDA信号,并且恢复对三总线的控制。