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

C6670的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)语句也不可以。

请问这个问题如何解决?

Allen35065:

无法读入是什么意思?访问不了还是值不对,如果值不对,那这三个核看到的值是一样的吗?你可以接仿真器看看这个具体地址。

另外多核同步的flag最好是放到非cache的区域会更方便些。

Zhao Yan1:

回复 Allen35065:

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

hocodrecon:

回复 Andy Yin1:

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

Zhao Yan1:

回复 Andy Yin1:

你好,如果改为non cacheable,标志位的数值是正确啦,但是以标志位为条件的判断从核的运行就会慢,也就是说从核会多运行的好多次上一个标志位数值的函数,请问怎么解决?感觉从核貌似好长时间才能意识到标志位数值的改变

Zhao Yan1:

回复 Andy Yin1:

从核从memory读入数据为什么很慢…我空跑了好长的时间才能读到?即使是改成non cache,也是同样的~~

定义成外部变量128B对齐是不是下面这样的?

#pragma DATA_SECTION(SucceedFlag, ".externalMEM");int SucceedFlag[3];//三个捕获成功标志#pragma DATA_ALIGN(SucceedFlag,CACHE_L2_LINESIZE);//128B对齐

还是下面这样的?

#pragma DATA_SECTION(SucceedFlag, ".externalMEM");int SucceedFlag[3*CACHE_L2_LINESIZE/sizeof(int)];//三个捕获成功标志#pragma DATA_ALIGN(SucceedFlag,CACHE_L2_LINESIZE);//128B对齐

Andy Yin1:

回复 Zhao Yan1:

各个DSP读写shared memory的效率是一样的,你说的读入数据很慢应该跟你的软件有关,把读数的代码发上来看看。

长度和地址都最好128byte对齐。

Zhao Yan1:

回复 Andy Yin1:

thank you!终于发现..还是自己的多个msgQ的时序搞错啦~~

赞(0)
未经允许不得转载:TI中文支持网 » C6670的DDR读入cache问题
分享到: 更多 (0)