项目后期芯片空间见底是常态。分享几个我用过、确实能挤出空间的笨办法。
1. 查表数据换类型
正弦表用 int16_t 完全够,别用 float。一张 1024 点的表能从 4KB 降到 2KB。
2. const 别乱加
听起来反直觉:加上 const 进只读段,本身不省空间,但有些链接器对只读段的对齐更严格,反而膨胀。先看 map 文件再决定。
3. 合并重复的初始化代码
到处 memset 成同样的值,编译器不一定合并。抽成一个函数,让优化器有机会。
4. 打印字符串集中管理
每个文件里散落的 printf("error") 会重复占用空间,集中成字符串表,能省几百字节。
5. 关掉没用的库函数
链接脚本里把不用的向量表项置零;不用的浮点 printf 关掉,单这一项经常省 3~5KB。
6. 优化等级先别急着调
-Os 会让调试变难。先把上面五步做完,实在不够再上优化等级,并且改完必须重测。
一句话:省空间是细账,靠 map 文件一项项抠,别指望编译器一键搞定。