TI论坛
直播中

李丽

7年用户 304经验值
私信 关注
[问答]

C6670的DDR读入cache,在core1,core2,core3核上无法将SucceedFlag从DDR中读入cache,请问这个问题如何解决?

定义的外部变量#pragma DATA_SECtiON(SucceedFlag, ".externalMEM");  int SucceedFlag[3]; 在core0上使用CACHE_wbL2( SucceedFlag,3*sizeof(int),CACHE_WAIT)将cache的数值存入DDR后,外部变量声明过了。在core1,core2,core3核上无法将SucceedFlag从DDR中读入cache,使用CACHE_invL2(SucceedFlag,3*sizeof(int),CACHE_WAIT)语句也不可以。
请问这个问题如何解决?

回帖(9)

王英

2018-8-6 07:19:52
无法读入是什么意思?访问不了还是值不对,如果值不对,那这三个核看到的值是一样的吗?你可以接仿真器看看这个具体地址。
另外多核同步的flag最好是放到非cache的区域会更方便些。
举报

李丽

2018-8-6 07:24:54
引用: hdfsf 发表于 2018-8-6 07:19
无法读入是什么意思?访问不了还是值不对,如果值不对,那这三个核看到的值是一样的吗?你可以接仿真器看看这个具体地址。
另外多核同步的flag最好是放到非cache的区域会更方便些。

你好,我们用的是外部变量,DDR上的数据传过去啦,就是cache读不出来,该怎么解决呢?
举报

杨娟

2018-8-6 07:38:48
对于你这种多核通过共享标志位的方式,建议将共享标志所在memory定义为non cacheable,这样就不需要维护cache一致性。
如果所在memory cacheable,则需要保证地址及长度cache line对齐,即128B对齐,然后在写完之后需要write back L2 cache,在读之前需要invalid L2 cache。
                                                                          

举报

黄淳

2018-8-6 07:45:55
引用: zbb9612 发表于 2018-8-6 07:38
对于你这种多核通过共享标志位的方式,建议将共享标志所在memory定义为non cacheable,这样就不需要维护cache一致性。
如果所在memory cacheable,则需要保证地址及长度cache line对齐,即128B对齐,然后在写完之后需要write back L2 cache,在读之前需要invalid L2 cache。
                                                                          

我也与遇到了该问题,请问128B对齐是指128字节对齐吗,还有就是如何把memory设置成 non cacheable?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分