发 帖  
[问答] 用6678进行多核同步,在共享内存里开一个8个的数组,每个元素对应一个核,主核停在了轮询上请问这是为什么?
265 C6678
分享
本帖最后由 一只耳朵怪 于 2018-6-25 15:46 编辑

大家好:
         我在用6678进行多核同步,在共享内存里开一个8个的数组,每个元素对应一个核,主核对应的元素置0使能从核开始运行,从核之前一直轮询主核对应的元素,全部从核对应的元素置0使能主核开始运行,主核之前轮询。可是从核如果一个一个运行就可以,如果一起运行的话,就不能使对应元素值置0,貌似死置完零又被置1了,因为我有语句:
while(Mark[core_num])
[
Mark[core_num] = 0;
Cache_wb(&Mark[core_num], 4, Cache_Type_ALL, TRUE);
]
之后就一直停在:
while(Mark[0])
[
Cache_inv(&Mark[0], 32, Cache_Type_ALL, TRUE);
asm (" NOP 9");
asm (" NOP 9");
asm (" NOP 9");
asm (" NOP 9");
asm (" NOP 9");
]
主核的程序是:
printf("使能从核运行2\n");
Mark[0] = 0;

Cache_wbInv(&Mark[0], 4, Cache_Type_ALL, TRUE);
platform_delay(30);
printf("等待从核运行完成2\n");
while(Mark[1]|Mark[2]|Mark[3]|Mark[4]|Mark[5]|Mark[6]|Mark[7])
[
Cache_inv(&Mark[1], 28, Cache_Type_ALL, TRUE);
]
主核停在了轮询上,应该不存在cache 一致性的问题,我每次都writeback和invalide了。最后看共享内存里面,除了Mark[7] = 0,其他的都是1,不知道为啥,很纠结!请专家不吝赐教!跪谢!
0
2018-6-25 05:59:05   1 评论 邀请回答
1 条评论

只有小组成员才能发言,加入小组>>

37个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表