为什么升级到更高版本的Code Composer Studio/Compiler会增加MSP430-F148程序的大小?

为什么升级到更高版本的Code Composer Studio/Compiler会增加MSP430-F148程序的大小?,c,msp430,code-composer,C,Msp430,Code Composer,我为TI MPS430-F148微控制器提供了一个经过测试、正在运行和发布的固件程序(C语言)。它经过精心制作,以适合可用内存,由TI的CodeComposer Studio 5.2.1版/编译器4.1.1版开发 我从CodeComposer Studio 5.2.1导出了该项目,并将其导入TI的Code Composer Studio 7.4.0版。在构建项目时,我收到以下错误消息: “错误#10099-D:程序无法装入可用内存。” 随后出现一条警告,说明我的程序是使用编译器版本4.1.1创建

我为TI MPS430-F148微控制器提供了一个经过测试、正在运行和发布的固件程序(C语言)。它经过精心制作,以适合可用内存,由TI的CodeComposer Studio 5.2.1版/编译器4.1.1版开发

我从CodeComposer Studio 5.2.1导出了该项目,并将其导入TI的Code Composer Studio 7.4.0版。在构建项目时,我收到以下错误消息:

“错误#10099-D:程序无法装入可用内存。”

随后出现一条警告,说明我的程序是使用编译器版本4.1.1创建的,但将使用另一个编译器版本:

“此项目是使用当前未安装的编译器版本-4.1.1[MSP430]创建的。在生成-16.9.6.LTS期间将使用另一版本的编译器。”

警告中的其他文本建议获取并安装早期版本的编译器。我找到并安装了最接近版本4.1.1的版本,即版本4.1.9

然后,正如预期的那样,该项目毫无错误地构建出来,并有空闲的内存。它通过了随后的测试。问题解决了,但还有一个问题

我假设更高版本的CodeComposer Studio和更高版本的编译器,使用相同的项目文件和相同的源代码,仍然可以生成适合可用内存的代码


我的假设有什么问题

您认为它是同一个编译器的主要假设是错误的:它是不同的编译器,即使它“只是”不同的版本。您必须像对待新编译器一样对待它

如果没有源代码,我无法告诉您其新行为的确切原因,但我想这是另一种优化速度的方式。变更日志可能会给您一个提示,例如:打开/关闭一些速度/大小优化。或者,正如Mandraenke所说,实际原因只是链中其他地方的一些不同设置,我的第一个猜测是在
Makefile

你应该改变你的编译器,有些人甚至说是整个构建工具链,只有当你需要修复一个严重的bug,一些额外的选项,或者支持一个更新的标准,特别是现在的MCU大动物园。根据目前硬盘的大小,将编译器[1]与源代码一起存档可能不是最糟糕的主意


[1] 编译器的许可证可能允许也可能不允许使用它。

您认为它是同一个编译器的主要假设是错误的:它是不同的编译器,即使它“只是”不同的版本。您必须像对待新编译器一样对待它

如果没有源代码,我无法告诉您其新行为的确切原因,但我想这是另一种优化速度的方式。变更日志可能会给您一个提示,例如:打开/关闭一些速度/大小优化。或者,正如Mandraenke所说,实际原因只是链中其他地方的一些不同设置,我的第一个猜测是在
Makefile

你应该改变你的编译器,有些人甚至说是整个构建工具链,只有当你需要修复一个严重的bug,一些额外的选项,或者支持一个更新的标准,特别是现在的MCU大动物园。根据目前硬盘的大小,将编译器[1]与源代码一起存档可能不是最糟糕的主意


[1] 编译器的许可证可能允许,也可能不允许。

是否检查了编译器设置?特别是优化器设置和调试设置。是。4.x设置与16.x设置匹配。是否检查编译器设置?特别是优化器设置和调试设置。是。而且4.x设置与16.x设置相匹配。是的,一般来说,最好至少封存一个完整的产品构建系统,包括计算机、操作系统、工具链等。不允许对该系统上的任何内容进行升级…将其关闭,放在盒子中,存储在仓库中…是的,通常,最好至少封存一个完整的产品构建系统,包括计算机、操作系统、工具链等。不允许对该系统上的任何内容进行升级…将其关闭,将其放入盒子中,存储在仓库中。。。