Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎10-18-2017

AXI DMA Simple Transfer Interrupts

Hello, I am trying to make a basic application to stream data from DDR through fabric then back to another buffer in DDR using AXI DMA. I am trying to use interrupts to signal the processor when completion of stream occurs. Currently, my software is stalling on the MM2S (Memory Map to Stream I believe) transfer. The interrupt to set completion flags is never being called.


Here is my hardware design


I am trying to use the software provided in this design as an example


It looks like they are doing something different than I am. They are pulling data from an analog to digital converter (ADC) using AXI Stream, performing some basic processing in the processor after the data has been buffered in DDR, then shooting it back out to a digital to analog converter (DAC) using a separate DMA. I am not sure I have to worry about both sending and receiving or just one of the two.


In my application, I simply want to push data from DDR into the fabric then have the DMA redirect it back to somewhere else in DDR. I will attach my code. I am hoping it should be a pretty easy fix for someone with experience with baremetal DMA driver, since this is possibly the simplest DMA application.


My program provides the following console output.

Creating DMA device...
Getting DMA configurations...
Initializing DMA Driver...
Checking for scatter gather...
Resetting DMA...
Enabling interrupts
...Creating interrupt device..
Creating interrupt configurations...
Initializing Interrupt Driver...
Setting interrupt priorities and trigger type...
Connecting interrupt handlers...
Enabling all interrupts...
Initializing exception table and registering handlers...
Enabling non-critical exceptions...
Send: Enabling interrupts...
Kicking off MM2S Transfer...
Waiting for MM2S to complete...





0 Kudos
2 Replies
Registered: ‎10-18-2017

I updated my software and now the interrupts are triggering but the data in the receive buffer is unchanged. Attached is my current code. I am getting the same output for RxBufferPtr before and after the interrupts complete.

0 Kudos
Registered: ‎05-23-2019


have you solved your problem. I seem to be working on something similar , as seen in this link . 

the example axi dma interrupt example project. you seem to have changed the priority trigger type in your code. 

seems like you had already got the interrupt problem solved. 

Thanks much!


0 Kudos