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信号,并且恢复对三总线的控制。