We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

Showing results for 
Search instead for 
Did you mean: 
Visitor charlie5902
Registered: ‎08-28-2018

DMA Engine question

Hi - I have an AXI DMA slave controller set up and working well. I am able to set up and successfully transfer a 2 MB block from memory to the AXI DMA using a driver writtent to use the Linux DMA Engine API.

I need to set up a ping-pong buffer system to transfer a sequence of 2 MB blocks. I have the driver designed to do a simple ping-pong and it works.

I have 2 buffers mapped and submitted to the DMA engine. I have a separate completion routine for each of the 2 buffers. I start DMA and monitor operation with an ILA and probes I write to from the driver when the completion routines fire. I do not get a completion routine for buffer A until the DMA process finishes buffer B, then I get both completion routines. This is not enough time for me to reload the buffers and restart the DMA.

So the question is - should I not expect to get a completion event on Buffer A as soon as the DMA engine is done with it? If so, what should I be lookng for as to why that is not happening?

Thanks in advance.


1 Reply
Participant jsara
Registered: ‎08-14-2015

Re: DMA Engine question

Why not go the other way, let the firmware initiate the transfer when ever it is ready.  You could use the IP memorymover or other variants to do this.

0 Kudos