|
载入中... AVR ZONE
致力于工业自动化控制、电子产品开发、单片机应用开发
这么多年了,我一直坚持走技术这条路,走自己喜欢的这条路,希望无悔...... 他们彼此深信,是瞬间迸发的热情让他们相遇。这样的确定是美丽的... |
|
什么是DMA?最近在用STM32芯片,内部的很多接口都支持DMA,由于对其功能还是一知半解,搜集了一些概念性的资料来参考。
现在很多的MCU、ARM内部都集成上DMA传输功能,为数据传输提供更快的速度。
DMA(DirectMemoryAccess,直接内存存取),顾名思义DMA功能就是让设备可以绕过处理器,直接由内存来读取资料。打开硬盘的DMA模式将大幅度的提高硬盘系统的功能,使我们能更快更好的进行视频处理和文件传输。打开刻录机的DMA选项,可以保障刻录品质,并降低刻录时的CPU占用率。所以在我们首次连接好DVD刻录机,进入Windows系统后要做的第一件事情就是要确认DVD刻录机的DMA模式已打开。
直接内存存取(DMA)方式
直接内存存取技术是指,数据在内存与I/O设备间直接进行成块传输。 DMA技术特征
DMA有两个技术特征,首先是直接传送,其次是块传送。 所谓直接传送,即在内存与IO设备间传送一个数据块的过程中,不需要CPU的任何中间干涉,只需要CPU在过程开始时向设备发出“传送块数据”的命令,然后通过中断来得知过程是否结束和下次操作是否准备就绪。 DMA工作过程
⑴当进程要求设备输入数据时,CPU把准备存放输入数据的内存起始地址以及要传送的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器。 ⑵发出数据传输要求的进行进入等待状态。此时正在执行的CPU指令被暂时挂起。进程调度程序调度其他进程占据CPU。 ⑶输入设备不断地窃取CPU工作周期,将数据缓冲寄存器中的数据源源不断地写入内存,直到所要求的字节全部传送完毕。 ⑷DMA控制器在传送完所有字节时,通过中断请求线发出中断信号。CPU在接收到中断信号后,转入中断处理程序进行后续处理。 ⑸中断处理结束后,CPU返回到被中断的进程中,或切换到新的进程上下文环境中,继续执行。 DMA与中断的区别
⑴中断方式是在数据缓冲寄存器满之后发出中断,要求CPU进行中断处理,而DMA方式则是在所要求传送的数据块全部传送结束时要求CPU 进行中断处理。这就大大减少了CPU进行中断处理的次数。 ⑵中断方式的数据传送是在中断处理时由CPU控制完成的,而DMA方式则是在DMA控制器的控制下,不经过CPU控制完成的。这就排除了CPU因并行设备过多而来不及处理以及因速度不匹配而造成数据丢失等现象。 DMA方式的优缺点
在DMA方式中,由于I/O设备直接同内存发生成块的数据交换,因此I/O效率比较高。由于DMA技术可以提高I/O效率,因此在现代计算机系统中,得到了广泛的应用。许多输入输出设备的控制器,特别是块设备的控制器,都支持DMA方式。 通过上述分析可以看出,DMA控制器功能的强弱,是决定DMA效率的关键因素。DMA控制器需要为每次数据传送做大量的工作,数据传送单位的增大意味着传送次数的减少。另外,DMA方式窃取了始终周期,CPU处理效率降低了,要想尽量少地窃取始终周期,就要设法提高DMA控制器的性能,这样可以较少地影响CPU出理效率。 |


