What is the difference between DMA-Engine and DMA controller?

  • As mentioned above, what is the difference between dma engine and dma controller (focus on Linux)?

  • When does the linux dma engine come in? Is this a special device or is it always part of all dma-enabled peripherals?

  • While looking at the linux source, I found the ste_dma40.c driver. How does any driver use this engine?

+3


source to share


1 answer


DMA - Direct Memory Access. The work of your driver, reading or writing from / to your HW memory without the participation of the processor in it (freeing it from other things).

DMA Controller - reading and writing cannot be performed by magic. if the CPU doesn't, we need another HW to do this. Many years ago (during ISA / EISA) it was customary to use a common HW on the motherboard that performed this operation. In recent years, each HW has its own DMA HW mechanism. But in all cases, this particular HW receives the source address and the destination address and transmits the data. Usually triggers an interrupt when done.



DMA Engine - Now I'm not sure what you mean. I suppose you are probably referring to the SW side that handles DMA. DMA is a little more complicated than regular I / O, as all SRC and DST memory must be physically present during the DMA operation. If the DST address is changed to disk, HW will write to the bad address and the system will crash. This and other aspects of DMA are handled by the driver with sections of code you probably call the "DMA Engine"

* Another interpretation of "DMA Engine" is the part of the firmware (or HW) code that handles the HW DMA controller on the HW side.

+3


source







All Articles