07-15-2020 06:30 PM
I want to make a embedded video process system on my Pynq-Z2 board with PYNQ framework driving.
I have an OV5640 camera as input. The driver hierarchy outputs a video stream fitting VDMA timing and send to axi_vdma_cam S2MM channel. This part works well. I want to do some image processing via another VDMA axi_vdma_proc. It transfer frames to image_processing hierarchy (which works well in other projects).
Now, I want to use PYNQ API to drive axi_vdma_proc but MM2S channel encounter an error and make itself halted.
It raise an error saying DMA channel not started, so I read register 0x00 and 0x04 to see what happened.
Register 0x00 value is 65674 and 0x04 is 86049, which means MM2S channel encounters an slave error on MM port. I can't figure out why.
07-16-2020 12:46 PM
Slave error means the VDMA core saw an error response to a transaction on the AXI bus, meaning either the SmartConnect or the Zynq generated one. I would place an ILA on the diagram and use it to see what transaction is giving you that error. Most likely, there is an address coming in that the SmartConnect does not expect. What did you set the VDMA read/write addresses to?
07-16-2020 06:31 PM
The read/write address is allocated by Linux OS，it should be good to access. I tried to tie the axi_vdma_cam's readchannel (S2MM) to axi_vdma_proc's writechannel (MM2S) and it worked well and no error. But I used writeframe() API then it raise VDMAslverr. So I think it may be a bug of PYNQ.