Other Parts Discussed in Thread: SYSCONFIG
Hi there,
I am programming a prototype to share data between the CPU1 and the CM(Communication Manager), for that the SDK via driverlib provides support for Message Queue, using the same global data declaration in both cores.
On example "ipc_ex2_msgqueue_c28x1" this works fine, but putting more global data with the same principle to share more data, appears a problem the C28x allocates the memory with a alignment of 128 bytes (64 words), while the CM seems don't use any alignment, additionally the order which is allocated the data in the memory changes with the size of the global data, with a other global declaration large enough witch isn't multiple of 128 bytes the struct on memory of C28x appears with a offset relative with the CM core. See the images:
(IPC_CM_to_CPU1_GetBuffer_QPC is my global struct on memory shared between CPU1 and CM)
My data = 248 bytes
CM:
C28x: (As you can see the struct provided by the driverlib has a size which isn't multiple of 128 bytes)
MyData = 992 bytes:
CM: (the data change the order)
C28x: (in this case the driverlib IPC will not work)
I have tried to change the ALIGN of the section in the CM command file, but it didn't work, in C28x i am using the sysconfig to configure the command file, therefore i can not change nothing about the CM_TO_CPU_MEMORY_SHARED section because there is no option for this on sysconfig,
So... can i declare global variables on memory shared or i have to make it only locally? Is there any way to know where the data will be allocated? I already tried to change the align of this SECTION on CM using the parameter ALIGN(128), but there is no change on the result, any suggestions to do this?
Thank you for your guidance.
Ramon Martins.