導言
如上圖所示,在編譯器附加選項(全局)里添加--specs=nano.specs
,告訴編譯器使用newlib-nano替代newlib去編譯代碼。
newlib vs. newlib-nano
- newlib 是 GNU ARM 工具鏈默認的 C 標準庫,功能完整,但體積較大(包含了完整的 printf/scanf、浮點支持、本地化、多線程等)。
- newlib-nano 是針對嵌入式優化的裁剪版本,去掉了大部分不必要的功能,使用更小的緩沖區,更適合 Flash 和 RAM 都比較緊張的 MCU(比如 STM32G431)。
一、測試編譯
如上兩圖所示:
- RAM的使用從13344 / 1024 = 13.03125kb 變成 10816 / 1024 = 10.5625kb。
- FLASH的使用從75104 / 1024 = 73.34375kb 變成 45676 / 1024 = 44.60546kb。
總之,--specs=nano.specs
的效果非常明顯。