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.

STATIC BASE,OVERFLOW的问题

您好~我将一个多核的程序中的一个宏定义值,也就是图片中的ang_xiashi改成一个需要在程序中计算出来的变量,这个值放在自己开的.newsat这个段中,同时在CMD文件中将.newdat指定到MSM中,然后重新编译这个工程,就出现了如图所示的warning,不知道是为什么?在同一个工程中我也有将别的一些变量放在MSM中,让8个核能去同时读到的,但就是提示这个ang_xiashi的warning,而且实在不懂那个overflow是怎么产生的?用的是CCS5.1 。希望各位帮忙解答下!谢谢~~

  • 这个warning指的是变量ang_xiashi被放在了一个near类型的段中,通过DP-relative的方式进行寻找。

    解决的办法是将这个变量强制分配到.far(非初始化)或.fardata(初始化)段中

  • 如果用户的段必须要放在自己命名的段里面,可以试着在变量定义前加far关键字,

    或者在编译选项的Runtime Model option->Data access model下面强制选择成far

    这样所有没有特殊声明的变量都会放在far段内。

  • 您好~谢谢回答!这个方法是可以将这些warning给去掉!但是我还有一个疑惑,就是我在同个工程中,还有别的变量和ang_xiashi完全一样的定义,但是每次报warning都是报ang_xiashi这个变量的问题,不管将ang_xiashi这个变量放在哪一个段中!这又是什么呢???什么情况下会出现类似warning呢??谢谢~

  • 你好,

            这个变量之所以每次都会被分配到near类型的段中,跟变量的声明,是否初始化有关系,跟文件的链接顺序,以及变量在文件中的位置也有一定的关系。因为链接器是按照工程中文件的顺序依次分配内存的,可能正好你所定义的这个变量的就被分配到了near中。

            有关变量分配地址的描述,你可以参考TI网站上sprab89 The C6000 Embedded Application Binary Interface中4.1节的内容.

             如果你觉得这个问题解决了,请帮忙在帖子中定已解决的按键,谢谢!