Closed kj4tmp closed 5 months ago
We have excellent documentation, it's called the source code ;-)
You first have to understand what the principle behind overlapped mapping is. It means that the input and output bytes -per slave- share the same logical memory space (FMMU). This automatically has the consequence that the largest of the input or output size determines the memory occupied.
If you take the effort of printing out the FMMU logical addresses of each slave you would see how this works out. So for each slave we calculate the maximum of the input or output size. One extra rule is that we skip allocating logical memory space for outputs if the output size is zero and we are the last slave.
So slave 3 gets one extra input space because output size is 1. Slave 3 get 16 output bytes (instead of 0). Slave 4 gets 8 output bytes (instead of 2).
But you could have read that from the source just a easy.
My iomap size appears incorrect as returned from
ecx_config_overlap_map_group
.I am using
ecx_config_overlap_map_group(0)
to produce my iomap, which returns66
.Here are stats from my slavelist (in bytes):
Doing some math:
I am not extremely memory contrained, I am just trying to gain better understanding of the IOmap so i can use it correctly. I have found no issues using the IOmap via pointer and bitshifts etc but I may need to process the iomap as one giant struct in the future for performance reasons, which would require me to know how the entire iomap is constructed, including gaps between slaves, etc.