大家好 我现在用的双核 需要用到共享内存SL2
我在核0里面 定义一个变量到SL2 并赋值
但有时在核1 并未看到变量值的变化
看了下论坛 说是和cache的一致性有关 并且SL2的cache一致性是要软件维护的 不像L2是硬件维护的?
SL2的cache一致性要软件维护 是指 我在核0 定义一个变量到SL2 并赋值 然后要执行个cache一致性相关函数 或者 命令?
另外 看资料 说是 如果把共享变量定义到DDR3 是不是就没有这个问题?
Nancy Wang:
1、是的。在读之前要进行失效操作,在写之后要进行回写操作。
2、也需要维护一致性。
skysteed:
回复 Nancy Wang:
你好 我在双核都是裸机的情况下已经试过了
核0写数据时:CORE0_COR1_FLAG=0x1;//核0设标志CACHE_wbInvL1d((void *)(0x0c000000),4,CACHE_WAIT);
核1读数据时:CACHE_invL1d((void *)(0x0c000000),4,CACHE_WAIT);if(CORE0_COR1_FLAG==0x1)如果核0用的是sysbios 怎么实现上述的功能了???
skysteed:
回复 Nancy Wang:
bios_6_37_05_35\packages\ti\sysbios\family\c66 里面的Cache.h文件
和mcsdk_02_01_02_06包mcsdk\pdk_C6657_1_1_2_6\packages\ti\csl里面的csl_cacheAux.h文件的命令函数
怎么不完全一致了?
skysteed:
回复 Nancy Wang:
好的 我看看
试了下 添加mcsdk里的csl库 可以编译通过 试过也行