This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ccsV5.5编译生成文件比3.3大很多,怎么处理?

    Dear  Sir;

    公司之前的程序是在3.3版本的CCS上编译,已经用了好几年,算是比较成熟了。最近成立新的事业部将以前的程序用ccsV5.5编译后

老是报Flash空间不足的错误。发现econst段太大,要求空间为1331,但是只剩下oxfd1的flash。对比可以看到ccsV5编译生成的文件要比

3.3生成的文件大1k左右,这是正常的吗?

    

  • out文件大1K并不能说明什么问题,out文件还包含有很多调试信息。econst存的是常量数据,这个段大说明你程序中的常量数据量大。

  • 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


  • 编译的时候编译条件是否一致     release还是debug

    还有优化条件呢     但是不至于大那么多

  • const必须位于低64K的地址范围内,econst没有这个限制。你试一下不同的优化等级。