主题中讨论的其他器件:SysConfig
你(们)好!
我正在编程一个原型、以便在 CPU1和 CM (Communication Manager)之间共享数据、因为通过 driverlib 的 SDK 在两个内核中使用相同的全局数据声明为消息队列提供支持。
在示例"ipc_ex2_msgqueue _c28x1"上可行、但使用相同原理放置更多全局数据以共享更多数据时、C28x 使用128字节(64字)对齐方式分配内存时会出现问题、而 CM 似乎未使用任何对齐、 此外、存储器中数据的分配顺序会随全局数据的大小而变化、因为另一个足够大的全局声明不是128字节的倍数 C28x 存储器上的结构相对于 CM 内核显示了一个偏移量。 请参阅图:
(IPC_CM_TO_CPU1_GetBuffer_QPC 是 CPU1和 CM 之间共享存储器上的全局结构)
我的数据= 248字节
厘米:

C28x:(您可以看到 driverlib 提供的结构的大小不是128字节的倍数)

MyData = 992字节:
CM:(数据可更改顺序)

C28x:(在本例中、driverlib IPC 将不起作用)

我已经尝试在 CM 命令文件中更改该段的对齐方式、但不起作用、在 C28x 中、我使用 SysConfig 配置命令文件、因此我无法更改 CM_to_cpu_memory_shared 段的任何内容、因为 SysConfig 上没有此选项、
所以... 我可以在共享的存储器上声明全局变量、还是只能在本地进行全局变量? 是否有任何方法可以知道数据将被分配到何处? 我已经尝试使用参数 align (128)在 CM 上更改此段的对齐方式、但结果没有更改、有没有建议这么做?
感谢您的指导。
Ramon Martins。