I was wondering if these addresses are physical addresses or can they also be virtual addresses; if it can be virtual, how do I make it so it knows which address space being referenced? I want to write a program that uses the mSGDMAs to move data in software (for example, transfer data from array A to another array B in the same program).
The addresses used here should be physical addressing. Virtual address is applicable only when you have memory management unit (MMU) in your design; this is mostly applicable when you have OS.
I would like to know if you are willing to use mSGDMA with Nios II or HPS. If you want to use it with Nios II, you can refer to this video:
It shows an explanation of how to instantiate this IP and how to write a simple software to transfer the data.
Hope this might help.
I am currently using the HPS and would not like to use the Nios ii. Is there a way to do the task mentioned above using the HPS?
You can use mSGDMA with HPS as well. This design might help you understand the concept:
However, the design files were removed from this link since it was using an old version of linux kernel. I am currently working on migration to newer kernel.
I was able to fine the original design files of the datamover application, however, it doesnt have any zImage file. You can refer to the source code of Nios II and the linux module developed to communicate with DMAs.
We are still working on finding the alternative design, yet it takes longer time for verification.