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型
CCS软件编译时Relocation Overflow Error报错解决方法_第1张图片
方法二:用far关键字声明特定的变量。例如

 int far a;

你可能感兴趣的:(DSP)