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

求教,如何让一个从未使用过的数组不被优化掉~

各位好

          想把buf 放到一个内存段“Ram1” , 但是这个buf又没有在程序中¥直接¥引用,如何避免他被优化掉呢??

看到C6000编译器提供了

 #pragma  DATA_SECTION (buf,"Ram1")  //来指定存放位置

 #pragma  RETAIN(buf) //来保持buf始终被链接

int buf ; // 发现这样写buf 还是会被优化掉··

目前还尝试了 volatile 这样是不行的,另外不可以使用lock 方式放在固定地址。

可能大家看出来弄这个buf是为了占住空间,我需要认为这个buf所在的位置已经被分配,请给些意见,谢谢各位。

Tony Tang:

在cmd里把这个内存空间空出来不行吗?

shuyu liang:

回复 Tony Tang:

谢谢

        我也是结合这种方式用的,但您的意思是,比如我定义4个数组分配空间 ,为了保证在空间上绝对分分配出来,需将A B C D 数组依次指向CMD中已经划好的四个内存空间吗???

#pragma DATA_SECTION(A,"sectA")

char A[X]

#pragma DATA_SECTION(B,"sectB")

char B[X]

#pragma DATA_SECTION(C"sectC")

char C[X]

      另外,咱们#pragma REMAIN 这个是不是有bug呀,我再-O3的选项中从来都没有试出他有用,我的测试方法是将A B C D 连续声明在某一块内存中,然后不使用B,直接打印A C地址 ,发现A C只间隔了一个数组的大小~ 麻烦啦

问题背景信息:

A.目前使用TMS320DM8148B.硬件环境基于8148的DVR产品C.软件环境基于DVRRDK3.5版本D.DSP核调试环境是CCS5.3产品已在迭代阶段

       

   

Jingang Yang:

回复 Tony Tang:

tony,你的邮箱是tony-tang@ti.com么?为啥我email发布过去嘞……

shuyu liang:

回复 Tony Tang:

Tony Tang试了没有问题啊:

多谢帮助 ^_^

         我发现在ccs编译一部分内容 ,和在linux中编译整个DVRRDK的时候有了差异,在CCS中不会引起这个问题,可能是编译选项的差异,但我没有对比出来。

         最后一个问题, 您知道有哪些可能将未使用buffer禁止分配的相关编译选项吗?或是别的可导致未使用buffer不分配的可能?

赞(0)
未经允许不得转载:TI中文支持网 » 求教,如何让一个从未使用过的数组不被优化掉~
分享到: 更多 (0)