各位工程师好:
我在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:
你好。我也在弄这一部分,学一下