Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
您好!
我们正在 MSMC 存储器中定义的内核之间共享数据。 为了避免出现数据一致性问题并避免使用高速缓存函数(WB、wbInv、inv)、我们在 MSMC 中定义了一个重新映射到地址0xA1000000的段。 然后、我们使用相应的 MAR 寄存器禁用此部分的高速缓存。 但是、它不适用于在存储器(core0)中加载数据的内核。 下面是一些显示问题的屏幕截图。
您可以看到、地址0xA1xxxxxx 处的共享数据缓存(绿色)。 相应的 MAR 寄存器(MAR 161)配置正确。 MPAX 也是正确配置的,因为共享数据是初始化变量,如果 MPAX 错误,它将在启动期间崩溃(在_c_int00()中调用的_auto_init_elf 函数中)。
平台定义如下:
在我的 C6678.cmd 文件中、MSMCRAM_CACHE 和 MSMCRAM_NO_CACHE 部分仅由 Core0加载:
/*共享代码和数据*/
sharedCode > MSMCSRAM_cache
.sharedVar > MSMCSRAM_NO_cache
其他内核包括.obj 文件、其中定义了这些数据、但未加载它们:
/*共享代码和数据*/
.sharedCode > MSMCSRAM_cache、 type = NoLoad
.sharedVar > MSMCSRAM_NO_cache、type = NoLoad
数据一致性适用于除 Core0之外的所有其他内核。 其他内核看不到来自 Core0的数据、而 Core0看不到来自其他内核的数据。
我们使用的是 SYSBIOS 6.46.05.55、XDC 工具3.32.1.22
有什么想法如何使其发挥作用?
谢谢
Hugo


