Hello,
I might need C++ APIs to handle multi-threaded AXI (both lite, so configs, and master, so large portion of memory)
Then mmap is the way, it is very fast and efficient.
I do not know if concurrent access is safe, but worst case you will know and add a semaphore.
By the way, if you experiment freezing of the system when using this, it is because you are hitting an address which does not responds, and the AXI bus will hang. On ZynqMP you can activate a watchdog to release the bus if it hangs, but not on Zynq-7000.
Unfortunately, python profoundly limits the multi-threading/process (and I could not find a proper solution, which might be my bad) to this issue.
I also noticed that accessing IP registers is very slow on Pynq, slower than 1us, and with an inconsistent speed.
You can try to use mmap from Pynq or Python and see if it improves it’s performance enough for your needs.
Alveo
I do not have experience on Alveo and OpenCL, I am just a Zynq fanboy.
So I am not sure mmap would work with a PCIe card.
Mikaël