CCS软件编译时Relocation Overflow Error报错解决方法

编译时结束会出现一堆警告(错误),内容大概是
The 16-bit relocated address 0xFFFF is too large to encode in the 15-bit field.
有警告就必须消除,否则极有可能在程序运行过程中出现不可预知的问题。

警告的原因:

在32位的指令结构中,一个时钟周期只能访问偏移地址范围内的内存,32位的寻址结构使用其中的15位来作为偏移地址,所以可以访问的内存空间共2^15=32k.这些内存空间中用来保存near型的变量。也就是near型变量可以在一个时钟周期完成访问。如果变量空间超过了32k,就需要定义为far型。far型变量需要3个时钟周期完成访问。编译器在编译的时候默认将所有全局变量作为near型变量,数组作为far型变量。有时候代码执行时会将一个far的变量按照near去访问,就会警告或报错,提示原因是xxxis too large to encode in the 15bit field,就是说这个变量太大,超出了15位的偏移地址的访问范围。

解决方法:

方法一:将所有变量处理成far型。在CCS “Project” -> "Properites"找到如下位置选择far。编译器会将所有变量处理为far型
在这里插入图片描述
方法二:用far关键字声明特定的变量。例如

 int far a;
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值