This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ARM side QDMA example

I am creating a video processing application for the DM8148 and would like to use QDMA from the ARM processor for copying memory buffers because memcpy is too expensive.


I have found a lot of documentation relating to using DMA from the dsp, but nothing related to the ARM processor.


Is it possible to initiate a QDMA transfer from the ARM processor? and if so, where can I find information regarding this?

  • At hardware level it doesn't matter really:  the EDMA controller itself doesn't care1 whether it's being programmed by the Cortex-A8, the DSP, or even another DMA transfer.  The main difference is that the DMA/QDMA channel should be assigned to region 0 for the Cortex-A8 versus region 1 for the DSP to get  the completion irq delivered to the right place.

    Programming EDMA directly is however unsafe if there's any other software running that uses it.  The EDMA3 low-level driver uses a resource manager to claim DMA channels and such, so if you're running SYS/BIOS that may be what you're looking for. That wiki page also has more info on other options available.  If you're running linux then I'm not sure what the proper way is to claim a channel.

    Note that an EDMA-based memcpy obviously requires that the data actually resides in memory, so if you're also working with the data from the cortex-A8, be sure to do appropriate cache flushing first.  If you need to access the data both before and after the memcpy, there is a chance that this cache flushing will negate the performance benefit of using EDMA.

    Related to this, I should also mention that the cortex-A8 has an integrated "preload engine" to perform bulk preloading of data into L2 cache and bulk evictions from L2 cache back to memory. This can obviously make a big performance difference if you know which data you're going to need in the near future, and when you're "done" with it.

    1 except for permission-checks, if the EDMA controller's memory protection functionality is being used.