I observed some odd SGDMA behavior today. Does SGDMA behave badly if its descriptors are in off-chip RAM? In any case I think I see it copying the wrong data in the attached signal tap output. The correct data flows in in the top trace, but the avalon-mm writes to memory are skipping some of the data that is streaming in? Perhaps the issues is contention between its descriptor read/write functions and the dma function if they are attached to the same tap on the same pipeline bridge? When I moved the descriptors into on-chip ram the problem vanished. I do use the IO functions to access the descriptors so there shouldnt be any cache flushing invalidating issues if the descriptors are in off-chip ram.
sgdma_odd_behavior.jpg
sgdma_odd_behavior.jpg