Dear Sir;
公司之前的程序是在3.3版本的CCS上编译,已经用了好几年,算是比较成熟了。最近成立新的事业部将以前的程序用ccsV5.5编译后
老是报Flash空间不足的错误。发现econst段太大,要求空间为1331,但是只剩下oxfd1的flash。对比可以看到ccsV5编译生成的文件要比
3.3生成的文件大1k左右,这是正常的吗?
Hank Zhao:
out文件大1K并不能说明什么问题,out文件还包含有很多调试信息。econst存的是常量数据,这个段大说明你程序中的常量数据量大。
Dear Sir;
公司之前的程序是在3.3版本的CCS上编译,已经用了好几年,算是比较成熟了。最近成立新的事业部将以前的程序用ccsV5.5编译后
老是报Flash空间不足的错误。发现econst段太大,要求空间为1331,但是只剩下oxfd1的flash。对比可以看到ccsV5编译生成的文件要比
3.3生成的文件大1k左右,这是正常的吗?
gui li1:
回复 Hank Zhao:
Dear Zhao!
谢谢您的回复。
可能我前面没有描述清楚,因为公司不能在论坛发表贴子,我是在家里凭印象说的。我今天重新试验了几次,
从错误信息看,提示需要0x1331字的Flash,但Flash未使用的空间为0x672字。这样看来还需要3K左右的空间来存储程序。
目标芯片(28232)和程序都没有变,只是平台从3.3变为ccs5.5,这样看来似乎是5.5编译的文件比3.3大3k多。我不知道
编译信息指的这个空间是不是out文件,因为有错误的情况下out文件没有生成。
程序的常量数据比较多,全局变量更多(历史问题,尾大不掉了),econst大是意料之中的。现在主要是比较疑惑5.5编译Flash空间不够的问题。
顺便问一下econst和const的区别,资料上的描述好像是一样的:
const: 包含字符串常量和初始化的全局变量和静态变量(由const)的初始化和说明
econst: 包含字符串常量和初始化的全局变量和静态变量(由far const)的初始化和说明
为了调试程序,我在编译器设置中设置优化—–Local Optimization,这样编译能通过,但是运行却出现了问题。当Debug将程序下载到Flash
后点全速运行,程序会报过电流的故障。这个故障是在外部中断程序中检测的,但设置相应的断点,可以发现那一段似乎程序根本没有执行。
我怀疑可能是优化引起的异常。更奇怪的是,当我暂停程序,restart之后,程序居然就正常运行了。但如果点reset再点restart的话,程序依然报
过电流的故障。所以我想请问一下,restart和reset动作后,程序运行的过程有什么不同?所谓的硬件复位和软件复位有什么不同,restart是哪一种呢?GEL_Restart和这个有关系吗?
ligui
Dear Sir;
公司之前的程序是在3.3版本的CCS上编译,已经用了好几年,算是比较成熟了。最近成立新的事业部将以前的程序用ccsV5.5编译后
老是报Flash空间不足的错误。发现econst段太大,要求空间为1331,但是只剩下oxfd1的flash。对比可以看到ccsV5编译生成的文件要比
3.3生成的文件大1k左右,这是正常的吗?
mangui zhang:
回复 gui li1:
编译的时候编译条件是否一致 release还是debug
还有优化条件呢 但是不至于大那么多
Dear Sir;
公司之前的程序是在3.3版本的CCS上编译,已经用了好几年,算是比较成熟了。最近成立新的事业部将以前的程序用ccsV5.5编译后
老是报Flash空间不足的错误。发现econst段太大,要求空间为1331,但是只剩下oxfd1的flash。对比可以看到ccsV5编译生成的文件要比
3.3生成的文件大1k左右,这是正常的吗?
Hank Zhao:
回复 gui li1:
const必须位于低64K的地址范围内,econst没有这个限制。你试一下不同的优化等级。