TI中文支持网
TI专业的中文技术问题搜集分享网站

C6678多核编程,设置同步标志时用了cache保护,仍然做不到每个核同步更新。

各位工程师好:

        我在L2共享内存中申请了一个同步标志multiCoreSyncDoneCore0Wait[0],每一个核运行到的时候标志的相应位就置一:

if(CoreNum){

       SYS_CACHE_INV ((void *) &multiCoreSyncDone[0], 128, CACHE_WAIT);

       multiCoreSyncDoneCore0Wait[0] |= (Uint8)(1<<CoreNum);

       SYS_CACHE_WB ((void *) &multiCoreSyncDoneCore0Wait[0], 128, CACHE_WAIT);

}

else{

       while(multiCoreSyncDoneCore0Wait[0] != 0xFF)

       SYS_CACHE_INV ((void *) &multiCoreSyncDoneCore0Wait[0], 1, CACHE_WAIT);

}

对于每个核multiCoreSyncDoneCore0Wait[0]的值都是不同的,请问这是因为核同步操作不能多个核同时操作一个数,即使是不同位也不可以么?

                                                                                                                                                                                                                                               谢谢!

xu kuang:

回复 Allen35065:

谢谢您的答案!

    不过基础太差,有很多地方还不明白。比如cache的详细说明,还有不可共享的内存怎么让其他核读到,硬件信号保护是什么。

    请问想学习上面这些内容需要读哪些文件,有没有相应的实例?谢谢!

Allen35065:

回复 xu kuang:

关于cache的一致性维护可以看看下面两篇文章,第一篇中文我找不到TI的链接了

http://blog.csdn.net/liangwei88624/article/details/6121282

http://www.ti.com/lit/ug/spru610c/spru610c.pdf

xu kuang:

回复 Allen35065:

十分感谢!

haotian chang:

你好。我也在弄这一部分,学一下

赞(0)
未经允许不得转载:TI中文支持网 » C6678多核编程,设置同步标志时用了cache保护,仍然做不到每个核同步更新。
分享到: 更多 (0)