Hello yxi95,
I successfully got the driver and the user application working using the dma approach you told me.
I realized that the dma_addr I got by using the dma mapping was the same value as the physical address of the buffer I allocated using the alloc_pages, I think it is only applicable for my current architecture and its Linux.
Yes, I ended up using the ioctl to sync the data between the CPU and the FPGA, I will apply your advice.
I am not sure if taking some time to develop the ACP way will provide me something better than the current DMA approach you said you got something not so good when using the ACP port.
How did you measure the performance comparison between using the ACP port and FPGA-SDRAM port?
If I would use the ACP port, do I need to cast the buffer to an unsigned long long to manage the data in 64 bits format? is it required? My FPGA module has a 32 bits bus data.
Also from the kernel driver I allocated 32 buffers (4MB each one by calling the alloc_pages function several times) to get a total of 128MB of contiguous physical memory, I am planning on making a custom malloc function (or memory pools) to provide dynamic memory allocation to a user application. Is there a different way to get +100MB of contiguous physical memory without calling the alloc_pages multiple times? Maybe another function?
Thanks for your support!