TI论坛
直播中

刘甜甜

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

请问STATIC BASE,OVERFLOW是怎么产生的?

本帖最后由 一只耳朵怪 于 2018-6-25 15:40 编辑

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

回帖(4)

李玉珍

2018-6-25 06:52:28

最佳答案

这个warning指的是变量ang_xiashi被放在了一个near类型的段中,通过DP-relative的方式进行寻找。
解决的办法是将这个变量强制分配到.far(非初始化)或.fardata(初始化)段中
举报

李玉珍

2018-6-25 07:14:26
引用: cmh9 发表于 2018-6-25 07:02
这个warning指的是变量ang_xiashi被放在了一个near类型的段中,通过DP-relative的方式进行寻找。
解决的办法是将这个变量强制分配到.far(非初始化)或.fardata(初始化)段中

如果用户的段必须要放在自己命名的段里面,可以试着在变量定义前加far关键字,
或者在编译选项的Runtime Model option->Data access model下面强制选择成far
这样所有没有特殊声明的变量都会放在far段内。
举报

刘甜甜

2018-6-25 07:27:28
引用: cmh9 发表于 2018-6-25 07:14
如果用户的段必须要放在自己命名的段里面,可以试着在变量定义前加far关键字,
或者在编译选项的Runtime Model option->Data access model下面强制选择成far
这样所有没有特殊声明的变量都会放在far段内。

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

李玉珍

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

你好,
        这个变量之所以每次都会被分配到near类型的段中,跟变量的声明,是否初始化有关系,跟文件的链接顺序,以及变量在文件中的位置也有一定的关系。因为链接器是按照工程中文件的顺序依次分配内存的,可能正好你所定义的这个变量的就被分配到了near中。
        有关变量分配地址的描述,你可以参考TI网站上sprab89 The C6000 Embedded Application Binary Interface中4.1节的内容.
         如果你觉得这个问题解决了,请帮忙在帖子中定已解决的按键,谢谢!
举报

更多回帖

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