C6678,EVM板,Multicore Navigator,任务分配系统同步应用遇到的问题,主核发送core->command = 0x11的第一条指令无问题,从核正确解析,可是我从1201队列取出描述子(描述子地址在共享)修改其内容为指令0x22(process->command = 0x22;)时候发现主核存储区改了,但是从核的地址区域值没有改变,而且从核对收到的描述子进行解析仍旧是core->command = 0x11。
主核(已经初始化时候在2001压入描述子(描述子地址在共享),1201队列初始化为0描述子,空)
typedef struct
{
int command;
int dataaddr;
int resultaddr;
}Dispatch;
core = (Dispatch *)pop_queue(2001);
core->command = 0x11;
core->dataaddr = 0xff;
core->resultaddr = 0xaa;
push_queue(1000, (int )core);//主核发送core->command = 0x11的第一条指令无问题,从核正确解析
while(queueStatusConfigRegs[1201].REG_A_EntryCount==0);//同步完成
process = (Dispatch *)pop_queue(1201);
process->command = 0x22;//从1201队列取出描述子(描述子地址在共享)修改其内容为指令0x22,问题出现了主核描述子内容改变,从核不变,从核对收到的指令进行解析仍为0x11即没有修改成功
process->dataaddr = 0xee;
_mfence(); //force all memory operation complete
push_queue(1000, (int )process);
从核
while(1)
{
if(queueStatusConfigRegs[1000].REG_A_EntryCount!=0)
{
process = (Dispatch *)pop_queue(1000);
coreID = process->command;
switch(coreID)
{
case 0x11:
printf("任务准备");
push_queue(1201, (int )process);
break;
case 0x22:
printf("任务识别");
push_queue(1201, (int )process);
break;
case 0x33:
printf("任务返回");
break;
default :
push_queue(1201, (int )process);
break
}
}
为什会出现这种位于共享存储区域的描述子,该存储地址数据不能被修改,或者说,主核修改后,但从核却没有,但第一条指令修改的时候主从都没问题??
谢谢 !盼望解答