03-15-2017 05:58 PM
I'm trying to perform a pretty big (streaming) data transfer (~ 4MBytes) from an ADC to DDR using a custom IP and the AXI DMA S2MM port. I'm learning how to use the AXI DMA core. I'm using it in simple interrupt mode (no SG) and I've got a few questions.
1. There's a problem when I run the simple mode with interrupts example (xaxidma_example_simple_intr). If I set maximum packet length (MAX_PKT_LEN in code) to a number higher than 0x3FFF (i.e. 0x4000) everything hangs (DMA hangs). Why is this happening? Is there a maximum packet size?
2. Now, about my own design: my custom IP asserts tlast when a determined number of packets are sent and, when this happens, DMA stops getting data from my custom IP. As I have read in these forums, that's the way it works. But... Is there any way to resume the DMA and make it keep getting data again instantly without losing any data?
3. I would like to perform data transfers of, at least, 4MB without losing any word of my data. Is it possible using simple mode? Could you give me any advices to achieve this aim properly?
Have a nice day!
07-16-2017 08:06 PM
If you have not figured out why, or for anyone finding this question in the future, I found out why recently.
This parameter specifies the DMA buffer size. It defaults to 14 bits or 16KB or 0x4000.