Trying to do a simple DMA loopback (Memory A-> DMA ->Memory B) in a PYNQ z-1 board (I know you guys would redirect me to xilinx forum but I just wanted your opinion). Anybody has any leads on how to do it with C programming?

Using -PYNQ Z-1 board. Petalinux 2021.1

Hi Pranav,

The Xilinx Linux kernel repo has some example code using the DMA in C. Maybe this would be a good place to start. You can find that, along with the drivers, here.

Other than that, I’d have a good read of PG021 as there are some quirks with the DMA IP that can trip you up.

If you want to use Scatter Gather then it gets a bit more complicated. It might be worth looking at the PYNQ implementation of the DMA driver, as it’s written in pure Python, and is a bit easier to read than the C driver. It makes a good reference when comparing descriptions of the SG functionality in PG021 and how it’s implemented in the driver.



Thank you soo much Josh. This will help me a lot.