TI的工程师你们好!
自制的一块6678板子,多核跑程序时出现问题,定义在共享内存内的变量,其他核心无法正确读取数据
在BIOS内,我从共享内存内开辟了一段1K的空间,名字叫做MSMC_DATA.
在cfg内,使用如下指令定义一个新段ShareData并放入MSMC_DATA.内
Program.sectMap[".ShareData"] = new Program.SectionSpec();
Program.sectMap[".ShareData"].loadSegment = "MSMC_DATA";
在程序内,使用DATA_SECTION将共享变量放入到ShareData段内
#pragma DATA_SECTION (TrackingInf1, ".ShareData")//sharedata is confided in the cfg file
volatile TrackingInf TrackingInf1;
但是当程序运行过程中,如果TrackingInf1发生了改变,其他核心并不能正确读取变量的值,
所以是不是应该将其存储空间(MSMC_DATA)或者段(ShareData)定义为Noncacheable?
具体需要如何操作?是在cfg文件内进行还是在Main函数中?
如果有更好的解决办法又该如何处理?