Hi I am trying to use AXI-VDMA in pynq. I am facing a problem when I try to use the axi_vdma I got the next error:
overlay.axi_vdma_0
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Input In [59], in <cell line: 1>()
----> 1 overlay.axi_vdma_0
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/overlay.py:363, in Overlay.__getattr__(self, key)
358 """Overload of __getattr__ to return a driver for an IP or
359 hierarchy. Throws an `RuntimeError` if the overlay is not loaded.
360
361 """
362 if self.is_loaded():
--> 363 return getattr(self._ip_map, key)
364 else:
365 raise RuntimeError("Overlay not currently loaded")
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/overlay.py:904, in _IPMap.__getattr__(self, key)
902 ipdescription = self._description["ip"][key]
903 try:
--> 904 driver = ipdescription["driver"](ipdescription)
905 except UnsupportedConfiguration as e:
906 warnings.warn(
907 "Configuration if IP {} not supported: {}".format(key, str(e.args)),
908 UserWarning,
909 )
File /usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/lib/video/dma.py:580, in AxiVDMA.__init__(self, description, framecount)
578 memory = description["device"].default_memory
579 if has_s2mm:
--> 580 self.readchannel = AxiVDMA.S2MMChannel(self, self.s2mm_introut, memory)
581 if has_mm2s:
582 self.writechannel = AxiVDMA.MM2SChannel(self, self.mm2s_introut, memory)
AttributeError: 'AxiVDMA' object has no attribute 's2mm_introut'
Regarding, the block design I have used two block desgins:
This error shows up only when the interrupt pin is not connected.
The second problem could be, after the first time you have tried with the bitstream without interrupt, you have a straight way tried to load the bitstream with interrupt without restarting the program, but because of a bug in pynq 3.0.1, the temporary hwh file in the buffer doesn’t change so you have not seen any effect (the solution is to start with PL.reset() before loading the overlay). Or Another reason could be, you have copied only the bitstream file, not the updated hwh file.
Hi @mizan , thanks for the reply.
If you see the block design the interrupts are connected.
Also, I am concerned about the cache problem when loading an overlay, I reseted the board, in order to test.
I am starting to think if this is an error of the last version of pynq.
Hi Ricardo,
I currently don’t have kr260 in my hand. But I can confirm that almost similar design with more vdmas running on the zcu104 board with pynq 3.0.1 has no problem so far.
Have you tried replacing HWH file with updated one? also PL.reset() before loading overlay?
Try add AXI-interrupt above the US-ZYNQ interrupt pin (IRQ 0).
The structure of the device-tree of PYNQ depends on the version you using. (Old version is more subject to this structure).
Try and see if it resolve the issue.
Thanks for your answers, I managed to solve the issue. However, when I am sending the image over the VDMA is getting stucked reading the output from the readchannel, possibly I am doing something wrong.
Is there a close loop example for the VDMA, I know there is for DMA but I have not seen any for VDMA.
All help is more than welcome.
Thanks in advance,
Ricardo.