DMA-Engine和DMA-Controller有什么区别?

时间:2017-05-26 07:14:22

标签: linux linux-kernel dma

  1. 如上所述,dma引擎和dma-controller(关注linux)有什么区别?

  2. linux dma引擎什么时候到位?这是一种特殊设备还是所有外围设备的一部分,它们支持dma?

  3. 浏览linux源码时,我找到了驱动程序ste_dma40.c。任何驱动程序如何使用此引擎?

2 个答案:

答案 0 :(得分:6)

DMA - 直接内存访问。驱动程序在没有CPU参与的情况下从/向内存读取或写入的操作(将其释放以执行其他操作)。

DMA控制器 - 魔法无法完成读写操作。如果CPU没有这样做,我们需要另一台硬件来完成它。许多年前(在ISA / EISA时),通常在主板上使用共享硬件执行此操作。近年来,每个HW都有自己的DMA HW机制。 但在所有情况下,此特定HW都会获取源地址和目标地址并传递数据。通常在完成时触发中断。

DMA引擎 - 现在我不知道你的意思。我相信你可能会提到处理DMA的SW端。 DMA比通常的I / O稍微复杂一些,因为在DMA操作期间所有存储器SRC和DST必须始终物理存在。如果将DST地址交换到磁盘,则HW将写入错误的地址,系统将崩溃。 DMA的这个和其他方面由驱动程序处理,代码部分可能称为“DMA引擎”

*'DMA引擎'的另一种解释可能是处理HW端的DMA HW控制器的固件(或HW)的代码部分。

答案 1 :(得分:2)

根据本文档http://www.asprom.com/application/intel_3.pdf

不应将82C37 DMA控制器 与发现的DMA引擎混淆 在某些早期的MCH(内存控制器)中 集线器)组件。这些DMA控制器 绑定到ISA / LPC总线并使用 主要用于慢速往返 软盘控制器之类的设备。

因此,似乎是在以前的平台发现的使用MCH设备的设备。

相关问题