NetDBFPGA / ecv2021_demo

5 stars 0 forks source link

KeyError: '' for Quick Run of two_stream = Two_stream('./files/config.config') #4

Open yuyuyuyuyao opened 2 years ago

yuyuyuyuyao commented 2 years ago

Hi! This work is very fascinating! Thank you so much for your generous sharing. When I downloaded pre-build bitstream and tried to run the demo, I encountered an KeyError for Quick Run of two_stream = Two_stream('./files/config.config'). The detials of the Error are as follow,

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-6-21540529c8e7> in <module>()
----> 1 two_stream = Two_stream('./files/config.config')

/home/xilinx/jupyter_notebooks/3d_stream_dma/two_stream.py in __init__(self, config_path)
     28                      3)
     29 
---> 30         self.lucas_kanade_acc = LK_accelerator(config, overlay=overlay)
     31         self.feature_bank = Feature_bank(config)
     32 

/home/xilinx/jupyter_notebooks/3d_stream_dma/LK_optical_flow/accelerator.py in __init__(self, config, overlay)
     19     def __init__(self, config=None, overlay=None):
     20 
---> 21         self.create_static_pl_instance(overlay) #all LK_accelerator share same PL instance
     22 
     23         assert config is not None

/home/xilinx/jupyter_notebooks/3d_stream_dma/LK_optical_flow/accelerator.py in create_static_pl_instance(overlay)
     40 
     41         # static PL objects
---> 42         LK_accelerator.hls_lk = overlay.hls_LK_0
     43         LK_accelerator.dma0 = overlay.axi_dma_0 #inp1_arr,vx_arr
     44         LK_accelerator.dma1 = overlay.axi_dma_1 #inp2_arr,vy_arr

/usr/local/lib/python3.6/dist-packages/pynq/overlay.py in __getattr__(self, key)
    323         """
    324         if self.is_loaded():
--> 325             return getattr(self._ip_map, key)
    326         else:
    327             raise RuntimeError("Overlay not currently loaded")

/usr/local/lib/python3.6/dist-packages/pynq/overlay.py in __getattr__(self, key)
    525         elif key in self._description['ip']:
    526             ipdescription = self._description['ip'][key]
--> 527             driver = ipdescription['driver'](ipdescription)
    528             setattr(self, key, driver)
    529             return driver

/usr/local/lib/python3.6/dist-packages/pynq/overlay.py in __init__(self, description)
    475             self._gpio = {}
    476         for interrupt, details in self._interrupts.items():
--> 477             setattr(self, interrupt, Interrupt(details['fullpath']))
    478         for gpio, entry in self._gpio.items():
    479             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)
    175         """
    176         self.name = name
--> 177         self.mmio = MMIO(PL.ip_dict[name]['phys_addr'], 32)
    178         self.wait_handles = [[] for _ in range(32)]
    179         self.event_number = 0

KeyError: ''

I found that the static PL objects in create_static_pl_instance(overlay) function of file, LK_optical_flow/accelerator.py, have the similar Error. Moreover, I found the similar Error discussion in https://support.xilinx.com/s/question/0D52E00006iI5nOSAS/a-key-error-when-i-am-trying-to-access-a-dma-ip-on-pynq-z1-board?language=en_US, but it dose not work in this work.

Thanks!

loonggi commented 2 years ago

Disable the interrupt of zynq and it will work.