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

fuwu1245 ( 楼主 ) 2018-6-25 06:52:27  显示全部楼层
本帖最后由 一只耳朵怪 于 2018-6-25 15:40 编辑

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

cmh9 2018-6-25

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

4个回复

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

举报 使用道具

cmh9 发表于 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段内。
回复

举报 使用道具

fuwu1245 发表于 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呢??谢谢~
回复

举报 使用道具

cmh9 发表于 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节的内容.
         如果你觉得这个问题解决了,请帮忙在帖子中定已解决的按键,谢谢!
回复

举报 使用道具

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /9 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 粤ICP备14022951号-2 )

GMT+8, 2018-7-17 10:07 , Processed in 1.915051 second(s), 24 queries , Memcache On.

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表