YB体育【STM32】STM32之深入理解DMA
发布时间:2024-02-20 00:36:15

  YB体育任何一个技术的出现都是为了解决当时出现的问题,任何一个技术既有优点也会有缺点,任何一个技术的适用都需要分场景,看条件。DMA也不例外。

  DMA处于总线矩阵的前级,与内核cortex-M3同级别YB体育,属于主设备(Master)。DMA用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。

  1) DMA会暂停系统总线若干个周期。意思是DMA工作时,CPU被挂起?

  DMA在进行外设1与内存之间的数据传输时,CPU依然可以通过总线矩阵访问外设工作,只不过无法访问外设1,这可以理解(被DMA占用)。那CPU是否也无法访问内存呢?答案是可以访问内存,有以下三种方式(wiki解释):

  1)突发传输,停止CPU访问内存:由DMA控制器发一个停止信号给CPU,要求CPU放弃对连接内存的数据总线的使用权。DMA控制器获得总线控制权以后,开始进行数据传输,知道传输完成后发送完成信息中断,通知CPU。

  缺点:在DMA控制器访内阶段,内存的效能没有充分发挥,相当一部分内存工作周期是空闲的YB体育。

  2)周期挪用:当外设I/O设备没有DMA请求时,CPU按程序要求访问内存;一旦I/O设备有DMA请求,则由I/O设备挪用一个或几个内存周期。

  与停止CPU访内的DMA方法比较,该方法既实现了I/O传送,又较好地发挥了内存和CPU的效率,是一种广泛采用的方法。

  DMA与CPU相互配合,交替执行,时分复用。这种DMA传送对CPU来说,如同透明的玻璃一般,没有任何感觉或影响。在透明的DMA方式下工作,CPU既不停止主程序的运行,也不进入等待状态,是一种高效率的工作方式。当然,相应的硬件逻辑也就更加复杂YB体育。

  DMA方式主要适用于一些高速的外设I/O设备。这些设备传输字节或字的速度非常快。对于这类高速I/O设备,如果用输入输出指令或采用中断的方法来传输字节信息,会大量占用CPU的时间,同时也容易造成数据的丢失。而DMA方式能使I/O设备直接和存储器进行成批数据的快速传送。

  但是,使用DMA也是有缺点的:它势必会影响到CPU访问内存的速度(CPU与DMA时分复用数据总线),影响其他功能的执行速度。

  对于数据量较小的传输来说,更没必要使用DMA,毕竟DMA每一次传输完成后也会引发CPU中断,而直接使用CPU中断,也是一次中断。只不过在中断向量表中的位置不同而已。