[问答] 用6678进行多核同步,在共享内存里开一个8个的数组,每个元素对应一个核,主核停在了轮询上请问这是为什么?

bbwerq ( 楼主 ) 2018-6-25 05:59:05  显示全部楼层
本帖最后由 一只耳朵怪 于 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个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

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

小黑屋|手机版|Archiver|电子发烧友 ( 粤ICP备14022951号-2 )

GMT+8, 2018-9-24 13:17 , Processed in 0.951038 second(s), 23 queries , Memcache On.

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表