最近一个C6701的板子遇到一个奇怪的问题:
我在程序里定义了浮点型全局数组,就像这样float a[3] = {1.1, 2.2, 3.3};
把程序烧进flash后上电后产品输出不对,加上仿真器去看发现数组a的值并没有初始化为我定义的初始值,数组元素的所有四个字节都加载成了最高的字节。比如a[0]原本的四个字节应该为0x12345678,但是现在经过_c_int00初始化后成了0x12121212。我在同一文件中定义的3×3的2维数组却初始化正确。
现在只有定义成方阵且所有元素都初始化过才能初始化正确,其他方式定义的数组都不行,例如定义float a[2][3]或float a[3][3]的元素没有全部初始化都会出错。
带仿真器的时候如果用-c链接选项加载程序也是同样的现象,但是改成-cr就可以。
我用的外部boot模式,CE0是32bit的SDRAM,flash是8bit的。不知道跟我的DSP没有使能字节寻址有没有关系。还请大神们指点迷津,谢谢。
Shine:
请问在脱机时, 用的.out文件也是经过-cr选项编译后的.out文件么?
mvller yang:
回复 Shine:
不是,脱机是用的-c选项。烧写进去的也是用的-c选项编译出来的.out
mvller yang:
回复 Shine:
Shine Zhang
请问在脱机时, 用的.out文件也是经过-cr选项编译后的.out文件么?
Shine:
回复 mvller yang:
如果二维的可以, 一维的不可以, 会不会是编译器的问题?
c6701是很老的芯片, 你用的编译器也是老版本的吧?
mvller yang:
回复 Shine:
Shine Zhang
如果二维的可以, 一维的不可以, 会不会是编译器的问题?
c6701是很老的芯片, 你用的编译器也是老版本的吧?