langcer 发表于 2011-4-26 00:28

求助:DSP有时会就无法编译通过?神马状况?


CCS3.3+XDS510+2812

为了调试方便,参考网上写了个myprintf()函数。测试程序在电脑上已经完美运行。
参考:http://blog.csdn.net/guijiewan/archive/2010/04/08/5461600.aspx
但是测试程序在DSP中有时能编译通过,有时就会如上图所示,出现错误。
经过多次测试,发现用myprintf()连续多次输出字符串%s或浮点%f时会出错
本人新接触DSP菜鸟,盼高手解答

aresc 发表于 2011-4-26 21:41

第一个error是说RAML0那个存储空间里能用的有效的空闲size是0x1b8个字节,但你的程序编完了之后需要0x238字节. 你可以把RAML0的空间加大,或者把.econst的一部分放到其他的section里.

但想不通为什么有时候能编,有时候不能编? 如果不改程序的话,按理都不能编啊.

langcer 发表于 2011-4-28 00:18

刚开始用DSP,对.cmd还不是很理解。
我个人初步怀疑可能是主程序里面用的静态字符串太多了,超出econst规定的范围了。

测试程序中如下能够编译通过:
myprintf(“printf test begin!”);
myprintf(“string:%s”,"string");
myprintf(“int:%d”,999);
myprintf(“int:%f”,3.14159);

但是如果在在程序中加入一句类似下面的语句就会编译通不过
myprintf(“printf test over!”);
myprintf(“int:%f”,9.87654);

调用函数一次跟多次有神马区别啊,困惑?

huangxz 发表于 2011-4-28 08:18

正解,是RAML0空间不够了,在RAM中仿真很多时候都会遇到这个问题,因为在RAM一般都比较小,建议直接在watch中看变量的值,不要输出到串口,这样可以节约空间。
页: [1]
查看完整版本: 求助:DSP有时会就无法编译通过?神马状况?