AXI DMA in Petalinux with PYNQ support

AXI DMA in petalinux with PYNQ support
Hello, I’m working on an AXI DMA Loopback design and the Linux device driver that goes with it. An AXI DMA is configured in Direct-Register mode. The DMA design is depicted in the following block diagram (TX looped back to RX using a FIFO). The petalinux version is 5.4.0-xilinx-v2020.1 with PYNQ support, and the board is a digilent ZYBO-Z20.

So I’m attempting to develop a Linux driver for DMA in an operating system that supports PYNQ. I use jupyter notebook to download the bitstream and device tree.

The AXI DMA appears to transmit and receive data correctly, and it is capable of generating MM2S and S2MM interrupts. That is something I can clearly observe while debugging in Vivado.

I’m only transmitting 25 bytes to keep things simple. Surprisingly, AXI DMA also received the same data. On the terminal, I am printing the received data. That signifies the hardware is in good working order. When I run the DMA user program, however, I get a DMA timeout.

Even if I increase the number of transfers, the outcome remains the same.

Is anyone else seeing the same issue when using petalinux with PYNQ support? Has anyone attempted to develop a PYNQ Linux driver?

Thanks in Advance

2 Likes