Wrong in DMA init: DMA not found

I am doing some basic tests in my zynq7020 board. The PYNQ image was maked from pynqv2.4. I failed to use DMA function. My test code is simple:

import numpy as np
import pynq. lib. dma
from pynq import MMIO
import Overlayfrom pynq
from pynq import Xlnk
from time import sleep

myproj = Overlay(“sys.bit”)
mydma = myproj.axi_dma_0

errors:


I have no idea for the errors. Am I forget init something?

Hi,
Did you check this DMA tutorial?

Tutorial: PYNQ DMA (Part 2: Using the DMA from PYNQ)

I have checked the tutorial and confirm that there are no problems with the DMA settings in vivado. Now, there are contradictory issues:


I can find the axi_dma_0 in ip_dict, but can not use it.

Is is displaying the dma when you try myproj?

Yes, the DMA information can be correctly printed by the command:
myproj.ip_dict[“axi_dma_0”]

Hi @rookie,

Welcome to the PYNQ community.

This is a very strange error. Can you the latest version of PYNQ?
What Vivado version did you use to build the overlay?

Mario

Thank you for the attentions to this issue. I have solved the problem. The problem come from a direct connection of a DMA interrupt (s2mm_introut) to Zynq IP (IRQ_F2P) without using AXI interrupt controller. It makes pynq unable to recognize DMA correctly.

1 Like

Yes, not using an interrupt controller to handle interrupts in early versions will result in an issue.
Glad that you solved the issue.