核心代码消耗的空间大小
【基于master分支代码 d70d8cd】
【例程仓库BearPi分支 Examples/template/ 目录代码】
选择这个分支是因为VC6和VC5都可以编译通过,而exmaples分支有用到ST标准库导致无法用VC6编译通过。
将BabyOS的代码剔除后,使用VC6和VC5进行编译,优化等级设置为-O0
//VC6 && 优化等级0
==============================================================================
Total RO Size (Code + RO Data) 13844 ( 13.52kB)
Total RW Size (RW Data + ZI Data) 1920 ( 1.88kB)
Total ROM Size (Code + RO Data + RW Data) 13856 ( 13.53kB)
==============================================================================
//VC5 && 优化等级0
Total RO Size (Code + RO Data) 9924 ( 9.69kB)
Total RW Size (RW Data + ZI Data) 2224 ( 2.17kB)
Total ROM Size (Code + RO Data + RW Data) 9940 ( 9.71kB)
==============================================================================
恢复代码,使用VC6和VC5进行编译,优化等级设置为-O0,再次编译
//VC6 && 优化等级0
==============================================================================
Total RO Size (Code + RO Data) 25640 ( 25.04kB)
Total RW Size (RW Data + ZI Data) 2288 ( 2.23kB)
Total ROM Size (Code + RO Data + RW Data) 25676 ( 25.07kB)
==============================================================================
//VC5 && 优化等级0
Total RO Size (Code + RO Data) 21104 ( 20.61kB)
Total RW Size (RW Data + ZI Data) 2624 ( 2.56kB)
Total ROM Size (Code + RO Data + RW Data) 21152 ( 20.66kB)
==============================================================================
通过第一轮的对比,加入BabyOS代码后 RO增加12KB,RW增加400B,ROM增加12KB;
对存储区的消耗增加12K对于单片机来说是挺多的了,继续查找增加的原因。
通过查看map文件,可以看到增加的空间里有部分是C库导致。
编译时勾选使用micro lib
//VC5 && 优化等级0
==============================================================================
Total RO Size (Code + RO Data) 15576 ( 15.21kB)
Total RW Size (RW Data + ZI Data) 2016 ( 1.97kB)
Total ROM Size (Code + RO Data + RW Data) 15624 ( 15.26kB)
==============================================================================
b_config.h
全局配置中将打印等级改为off
//VC5 && 优化等级0
==============================================================================
Total RO Size (Code + RO Data) 11040 ( 10.78kB)
Total RW Size (RW Data + ZI Data) 1744 ( 1.70kB)
Total ROM Size (Code + RO Data + RW Data) 11072 ( 10.81kB)
==============================================================================
最终结论
//BabyOS核心代码,优化等级为0时
==============================================================================
Total RO Size (Code + RO Data) 1116 ( 1.09kB)
Total RW Size (RW Data + ZI Data) 400 ( 0.39kB)
Total ROM Size (Code + RO Data + RW Data) 1132 ( 1.11kB)
==============================================================================
//开启debug打印(勾选 Use MicroLib) RO/ROM的消耗增加5KB
//开启debug打印(未勾选 Use MicroLib) RO/ROM的消耗增加10KB+