Occasional data corruption with FPD ZDMA on ZCU9EG
Is there additional documentation available for programming the FPD ZDMA on the ZYNQ Ultrascale+ (I'm on a ZCU9EG in particular) beyond the very meager sample code and the DMA description in the TRM (ug1085)?
We have a bare metal application running on an A53 in the PS complex that is attempting to use the FPD ZDMA to DMA data from ring buffers implemented in the PL via BRAMs that interface to the PS complex via AXI BRAM controllers, and then store it into buffers in the DDR for further processing. Initially it seemed like this would be a breeze using the simple mode example provided in the SDK (or via the Confluence page at https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841725/ZynqMP+DMA+Standalone+driver). Unfortunately, we're finding that on large data transfers (i.e., MB's fragmented into multiple ~4kB chunks/blocks) we're seeing intermittent data mismatches in the first 8 bytes of a few of the chunks/blocks (typically 3-4 blocks per 1MB transfer in my tests).
I've gone over all of the available documentation with a fine-toothed comb and can't figure out what might be the source of my troubles so I'm hoping someone who reads this has seen a similar issue and might have some insight into how to deal with this issue. Any ideas? Please let me know. Thanks!