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

Why does upgrading to a higher Version of Code Composer Studio/Compiler increase the size of the program for MSP430-F148?

我有一个用于 TI MPS430-F148 微控制器的经过测试、工作和运输的固件程序(C 语言)。它经过精心设计以适应可用内存,使用 TI 的 Code Composer Studio 5.2.1 版/编译器 4.1.1 版开发。

我从 Code Composer Studio 5.2.1 导出项目并将其导入 TI 的 Code Composer Studio Version 7.4.0。构建项目后,我收到此错误消息:

"error #10099-D: program will not fit into available memory."

这之后是一个警告,说我的程序是用编译器版本 4.1.1 创建的,但将使用另一个编译器版本:

"This project was created using a version of compiler that is not currently installed - 4.1.1 [MSP430]. Another version of the compiler will be used during build - 16.9.6.LTS."

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

然后项目构建没有错误,如预期的那样有空闲内存。它通过了后续测试。问题解决了,但还有一个问题。

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

我的假设有什么问题?

您的主要假设——它是完全相同的编译器——是错误的:它是不同的编译器,即使它是 "just" 不同的版本。您必须像对待新编译器一样对待它。

如果没有源代码,我无法告诉您其新行为的确切原因,但我想这是一种不同的速度优化方式。 ChangeLog 可能会给您提示,例如:将 on/off 的一些优化切换为 speed/size。或者,正如 Mandraenke 所建议的那样,实际原因只是链中其他地方的一些不同设置,我的第一个猜测是在 Makefile.

你应该改变你的编译器,有些人甚至说整个构建工具链,只有当你需要一个 grave 错误修复,一些额外的选项,或者支持更新的标准时,尤其是在当今庞大的 MCU 动物园中。以当前的硬盘驱动器大小,将编译器 [1] 与源代码一起存档可能不是最糟糕的主意。

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