STM32CubeIDE 与 Keil µVision 生成的代码大小对比
我过去通常使用 STM32CubeMX 生成代码,然后通过 Keil µVision(默认配置)进行编辑、编译并烧录到开发板。最近,我用 STM32CubeIDE 的引导加载程序教程,但完全相同的源代码生成的代码体积却大得多(47k 对比 27k),而我需要将其控制在 32k 以内...
我对 Debug / Release 配置以及编译器指令不太清楚。从技术上讲,是否有可能通过配置 STM32CubeIDE,使其基于完全相同的源文件生成与 Keil µVision 完全一致的代码?
Keil默认用ARMCC编译器,CubeIDE用GCC,两边优化差异很大。 你可以在CubeIDE里把编译配置改成Release模式,再开 -Os 优化,体积会小很多。 Debug配置里带了调试信息和断言代码,自然比Keil的Release大。 记得关掉 printf、HAL库里一些冗余功能,这些在G0里空间占用明显。 你对比的时候要确认链接脚本是不是完全一致,不然段对齐也会影响大小。 CubeIDE里 C/C++ Build → Settings → MCU GCC Compiler/Linker 可以单独设置优化参数。 有些时候打开 -flto 链接时优化,可以接近Keil编译出来的大小。 如果真要极限压缩,可以考虑用LL库替换部分HAL,代码会小不少。 Keil编译器对Thumb模式支持更精细,GCC这边需要手动指定 -mthumb。 我的经验是CubeIDE调好参数后,体积能和Keil差不多,不会差到一倍那么大。
页:
[1]