On a project using a custom Zynq 7000 SBC, I'm trying to demultiplex data from OCM to DDR using PL330 with linux 4.4
Baseline is take 32 bits out of 64 in OCM and put these back to back in DDR.
In my test run, I program DMA to transfer 5 times 12 * 32 words from OCM to DDR, generating and interrupt after each 12 * 32 words block is transfered.
Using a modified linux driver to program the right PL330 firmware.
So far so good. Everything works fine. I experience however a strange lag between transfers 2 and 3.
I could track this down by getting the DMA IRQ out of the chip through GPIO plus toggling another GPIO when entering and exiting IRQ handler.
I get consistent transfer time for each transfer (about 10µs measured using an oscilloscope), but strangely, I get about 1.7ms for the 3rd transfer between end of interrupt and beginning of next one. Almost always. Once in a while, the transfers occur all with the same duration but this is not very often.
I'm a little bit lost on to what I can do to track down this issue.