Hello,
so first of this is just an cosmetic-issue, since it does not affect the tunrime of the program, nor the compilation itself.
We are using the ipc of the AM243x and thus we are also using a buffer, which is marked with an attribute-directive
uint8_t gRPMessageVringMem[IPC_RPMESSAGE_NUM_VRINGS][IPC_RPMESSAGE_VRING_SIZE] __attribute__((aligned(128), section(".bss.ipc_vring_mem")));
so the memory is located in the bss-section with its subsection ipc_vring_mem. The linker script defines the section like this:
.bss.ipc_vring_mem (NOLOAD) : {} > RTOS_NORTOS_IPC_SHM_MEM
Unfortunately the taken space of the gRPMessageVringMem also appears in the corresponding map-file as space taken by the .c/.cpp-file where it is defined (IpcDriver.cpp.obj, last cloumn):
We can see that since if we change the number of buffers or the size of the ipc-buffers, this value also changes. Unfortunately this is true for all 4 cores if we use them. nevertheless they use exactly the same memory-address for the buffer but if you just look at the generated sizes this is applied to all mcu-memory-printouts via tiarmsize. Luckily the output-file-size is not affected by this!
So if I call tiarmsize for one mcu it shows me this for 8 buffers, 256 Bytes each, 4 cores:
and this for 16 buffers
So it's not a real problem but can be really confusing and misleading, since 4 cores share the same memory, but it is shown for every core each and seems to be an overall 4 times the size it really is. We want to track our memory-footprint in the future via tiarmsize but it's probably not the way to go then. Or is it possible to somehow make the tiarmsize notice it should not take that memory into account? Or is there a possiblity to show an overall memory footprint which takes in the common .bss-memory for all cores?
tiarmsize seems not to provide such an option.
Best regards
Felix