DMA引擎和DMA控制器有什么区别?

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

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

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

DMA – 直接内存访问。 驱动程序读取或写入硬件存储器的操作,而不涉及CPU(释放它去做其他事情)。

DMA控制器 – 读写不能用魔法来完成。 如果CPU不这样做,我们需要另一个硬件来做到这一点。 许多年前(在ISA / EISA的时候)在主板上使用共享硬件是很常见的。 近年来,每个硬件都有自己的DMA硬件机制。 但是在任何情况下,这个特定的HW都会得到源地址和目标地址并传递数据。 通常在完成时触发中断。

DMA引擎 – 现在我不知道你的意思。 我相信你可能指的是处理DMA的SW端。 DMA比通常的I / O复杂一点,因为在DMA操作期间,所有的存储器SRC和DST必须在物理上始终存在。 如果DST地址交换到磁盘,硬件将写入一个错误的地址,系统将崩溃。 DMA的这个和其他方面是由驱动程序处理的,你可能把它称为“DMA引擎”