Hello, I am using a Digilent Eclypse Z7 running PYNQ v2.6. I created the PYNQ image and device tree overlay using this tutorial: Eclypse-Z7 PYNQ porting guide - Hackster.io
I am trying to control my ADC and DAC Zmods via the axi dmas. Currently I have this code:
import pynq
from pynq import Overlay
import os
ol = Overlay("/home/xilinx/jupyter_notebooks/BE/design_1.bit")
ol.download(dtbo="/home/xilinx/jupyter_notebooks/BE/pl.dtbo")
ol.ip_dict.keys()
dict_keys(['ZmodADC_0/axi_dma_0', 'ZmodDAC_0/axi_dma_1', 'axi_intc_0', 'axi_intc_1', 'axi_intc_2', 'ZmodADC_0/AXI_ZmodADC1410_1', 'ZmodDAC_0/AXI_ZmodDAC1411_v1_0_0'])
When I attempt to call the axi_dma_1 (or axi_dma_0 in the case of the ZmodADC), I am getting the following error:
ol.ZmodDAC_0.axi_dma_1
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-4-39f60fa244e3> in <module>()
----> 1 ol.ZmodDAC_0.axi_dma_1
/usr/local/lib/python3.6/dist-packages/pynq/overlay.py in __getattr__(self, key)
735 elif key in self._description['ip']:
736 ipdescription = self._description['ip'][key]
--> 737 driver = ipdescription['driver'](ipdescription)
738 setattr(self, key, driver)
739 return driver
/usr/local/lib/python3.6/dist-packages/pynq/lib/dma.py in __init__(self, description, *args, **kwargs)
188 'has been deprecated and moved to '
189 'pynq.lib.deprecated')
--> 190 super().__init__(description=description)
191
192 if 'parameters' in description and \
/usr/local/lib/python3.6/dist-packages/pynq/overlay.py in __init__(self, description)
600 self._gpio = {}
601 for interrupt, details in self._interrupts.items():
--> 602 setattr(self, interrupt, Interrupt(details['fullpath']))
603 for gpio, entry in self._gpio.items():
604 gpio_number = GPIO.get_gpio_pin(entry['index'])
/usr/local/lib/python3.6/dist-packages/pynq/interrupt.py in __init__(self, pinname)
96 self.number = PL.interrupt_pins[pinname]['index']
97 self.parent = weakref.ref(
---> 98 _InterruptController.get_controller(parentname))
99 self.event = asyncio.Event()
100 self.waiting = False
/usr/local/lib/python3.6/dist-packages/pynq/interrupt.py in get_controller(name)
157 if con.name == name:
158 return con
--> 159 ret = _InterruptController(name)
160 _InterruptController._controllers.append(ret)
161 return ret
/usr/local/lib/python3.6/dist-packages/pynq/interrupt.py in __init__(self, name)
189 if uiodev is None:
190 raise ValueError('Could not find UIO device for interrupt pin '
--> 191 'for IRQ number {}'.format(number))
192 self.parent = UioController(uiodev)
193 self.number = 0
ValueError: Could not find UIO device for interrupt pin for IRQ number 2
Previously, I had encountered ValueError: ‘’, which I solved using the solution from this post: How to access the DMA in the module - #2 by sazc
So far, I have attempted a few things that were suggested in other posts. This post (Uio device - #2 by PeterOgden) suggested a few reasons but my build has everything correct. I have also tried to recompile pl.dtbo with FPGA manager as the end of the Hackster.io guide suggested disabling runtime reconfiguration as a possible fix. Lastly, I have tried the fixes mentioned in this post: Build PYNQ OS for ZCU102 with Yocto - #21 by PeterOgden.
As a note, when I try and call ol.ZmodADC_0.axi_dma_0, I get the same error for interrupt pin for IRQ number 1.