I have a zynq board running with petalinux. The .xsa file is to transfer data between processing system (PS) and programmable logic (PL) using AXI DMA. I am writing an application in VITIS to verify. In my application I need to write appropriate values to the regsiters for example S2MM_DMACR,S2MM_DMASR, S2MM_DA,S2MM_LENGTH etc. I can write to S2MM_DMACR but I cannot write to S2MM_DA or S2MM_LENGTH for example. I have functions to set the value of the registers and get the value of the registers. I can verify by printing the value after setting the register value. I can clearly see that I can set any value to S2MM_DMACR but cannot set any value to S2MM_DA and S2MM_LENGTH. I have used appropriate offset to access the registers. Any suggestion, how to fix it?
EDIT: I am accessing the registers through mmap and address in uio0.
I was expecting to print the value I have set the S2MM_DA and S2MM_LENGTH but it is always 0.
The FPGA design can be found in the link
https://www.fpgadeveloper.com/2014/08/using-the-axi-dma-in-vivado.html/
I have decided to answer this question as it might help others someday. The scatter/gather mode was enabled in the Vivado design. It was not supposed to be enabled. Enabling scatter/gather mode does not allow one to write to those registers.