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