我在做多核的同步的时候,定义了一个int型的flag,并且把它放到了共享存储区中。在core0中将其值改写为1,但在其他核中该值依然是0,并没有随着core0改变。
只是知道用的是CACHE_invL1d之类的函数,但是具体操作不知道。。有没有例子什么的可以借鉴一下
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我在做多核的同步的时候,定义了一个int型的flag,并且把它放到了共享存储区中。在core0中将其值改写为1,但在其他核中该值依然是0,并没有随着core0改变。
只是知道用的是CACHE_invL1d之类的函数,但是具体操作不知道。。有没有例子什么的可以借鉴一下
你应该先使用CACHE_wbL1d()函数进行回写,然后再使用CACHE_invL1d()使其无效。如下
#pragma DATA_SECTION(flag,".MSRAM")
#pragma DATA_ALIGN(flag,8)
volatile int flag=0
void main
{
这里应该有L1 L2的缓存配置
if ( coreID == 0 )
{
做完一些初始化以及相应的处理
flag = 1;
CACHE_wbL1d ((void*) &flag , 4 , CACHE_WAIT );
}
else
{
do{
CACHE_invL1d ((void*) &flag , 4 , CACHE_WAIT );
}while (flag == 0)
}
}
不 知道您说的设置具体是指什么,L1 cache分成L1P, L1Dcache,L2cache 可配,也可全部用作RAM
可以参考CSL中CACHE函数的操作 结合CACHE user guide进行理解
我想把L2设置为ram,但是不知道用什么语句,如何用