bperez77 / xilinx_axidma

A zero-copy Linux driver and a userspace interface library for Xilinx's AXI DMA and VDMA IP blocks. These serve as bridges for communication between the processing system and FPGA programmable logic fabric, through one of the DMA ports on the Zynq processing system. Distributed under the MIT License.
MIT License
464 stars 227 forks source link

Petalinux 2016.2 VDMA receive transaction timed out #114

Closed bashidagha closed 4 years ago

bashidagha commented 4 years ago

First Thanks you @bperez77 for this driver, it's very useful.

I'm trying sudo ./axidma_benchmark -v -f 10x10x3 -g 10x10x3 -n 10 but it's make error in dmesg like this:

[14241.683071] axidma: axidma_dma.c: axidma_start_transfer: 301: VDMA receive transaction timed out.

I saw similar issues, but not understand what's problem with my work. This is my Vivado Project and as you see, i used vdma ip for do some gaussian (I'm sure about guassian ip performance.)

My Vivado and Petalinux Version is 2016.2

image

this is my device-tree also:

   axidma_chrdev: axidma_chrdev@0 {
           compatible = "xlnx,axidma-chrdev";
           dmas = <&axi_vdma_0 0 &axi_vdma_0 1>;
           dma-names = "tx_channel", "rx_channel";
               };

amba_pl: amba_pl {
    #address-cells = <1>;
    #size-cells = <1>;
    compatible = "simple-bus";
    ranges ;
    axi_vdma_0: dma@43000000 {
        #dma-cells = <1>;
        compatible = "xlnx,axi-vdma-1.00.a";
        interrupt-parent = <&intc>;
        interrupts = <0 29 4 0 30 4>;
        reg = <0x43000000 0x10000>;
        xlnx,flush-fsync = <0x1>;
        xlnx,num-fstores = <0x3>;
        dma-channel@43000000 {
            compatible = "xlnx,axi-vdma-mm2s-channel";
            interrupts = <0 29 4>;
            xlnx,datawidth = <0x8>;
            xlnx,device-id = <0>;
            xlnx,include-dre ;
        };
        dma-channel@43000030 {
            compatible = "xlnx,axi-vdma-s2mm-channel";
            interrupts = <0 30 4>;
            xlnx,datawidth = <0x8>;
            xlnx,device-id = <1>;
            xlnx,include-dre ;
        };};};};

I also active kernel config that said in the README.md

after insmod driver i see belows in dmesg:

` [15451.840824] axidma: axidma_dma.c: axidma_dma_init: 718: DMA: Found 0 transmit channels and 0 receive channels.

[15451.849449] axidma: axidma_dma.c: axidma_dma_init: 720: VDMA: Found 1 transmit channels and 1 receive channels. `

@bperez77 and others, can you help me?

bashidagha commented 4 years ago

As @bperez77 before said, it's an error that mostly come from hw. It was also true for me. Set Number Of frame buffer in VDMA ip to one. Also sets fsync of vdma to none and master. :>