UPGRADE YOUR BROWSER
We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!
12-01-2017 09:19 AM
Problem using streaming mode.
KCU105 board
Release 2016.2 as was used in video
Tried 2017.3 also
Ubuntu 14.04
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?
Thanks.
12-01-2017 09:48 AM
AXI4 Stream,
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:
https://www.xilinx.com/video/technology/getting-the-best-performance-with-dma-for-pci-express.html
12-01-2017 10:07 AM
Hello Austin,
Thanks very much for the quick reply. I understand. Will give it a try.
Craig
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.
R/
Nick
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.