12-01-2017 09:19 AM
Problem using streaming mode.
Release 2016.2 as was used in video
Tried 2017.3 also
Using Xilinx device driver
I was able to get AXI Memory Mapped to work perfectly by following every step in the following video:
https://www.youtube.com/watch?v=TzzzM97L4HI – “DMA for PCI Express” (video is very well done BTW). Examined the dmesg dump and everything looks textbook perfect.
I need much higher throughput, however, so it is necessary to use AXI4 Streaming mode. The only thing I changed in the xdma_0_0 block was to activate the "AXI Stream" button instead of the AXI Memory Mapped. Rebuilt everything as before, then ran the run_test.sh test program. Result was that the application hung and caused system errors in Linux. Noticed in dmesg that the transfer_monitor_cyclic_C2H0 was reteiving -512 from the call to wait_event_interruptible.
Is there something else that I need to change in the settings to effect the streaming mode effectively?
12-01-2017 09:48 AM
Is a FIFO. Data goes in, data goes out, forever (no addresses). I suspect you need a PCIe to AXI4 Streaming Bridge (in effect, logic to turn a DMA channel with address into sink and sources of streaming data).
pg194, pg195 (look up Xilinx product guides)
Streaming will be no faster than addressing per se, I would examine the block length, and other options in the AXI4 interface:
12-14-2017 01:58 PM - edited 12-21-2017 01:34 PM
@cthomas Were you able to fix this issue? We are experiencing the same problem where the Linux driver/applicaiton hang up during the C2H operation. (I thought the loopback design was working fine, so I moved on to a design with an AXIS FIFO, which is when I started getting the C2H to hang. So I reverted to the loopback design and it is also hanging up).
I've also posted a similar issue (https://forums.xilinx.com/t5/PCI-Express/DMA-Bridge-Subsystem-for-PCIe-AXI-Stream-c2h-interface/m-p/815172#M9553), but now I see this post.
CC:@austin in case he has any additional tips.
EDIT: My issue was resolved -- the MSI-X interrupts were not working (TX2 issue maybe?). Changing back to MSI interrupts fixed it.
12-21-2017 01:40 PM
The response that I received from Austin is that we need to use FIFOs in streaming mode, not DDR as with the Memory Mapped technique. The most likely reason that it can hang the system and even wreck Linux, is that the driver is chasing through memory looking for the proper eop during cyclic-read..
We are now in the process of building a double buffered FIFO arrangement in order to stream our RF data in.