# 核心代码消耗的空间大小 【基于master分支代码 d70d8cd】 【例程仓库BearPi分支 Examples/template/ 目录代码】 选择这个分支是因为VC6和VC5都可以编译通过,而exmaples分支有用到ST标准库导致无法用VC6编译通过。 ------------------------------------------------- 将BabyOS的代码剔除后,使用VC6和VC5进行编译,优化等级设置为-O0 ```c //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,再次编译 ```C //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库导致。 ![输入图片说明](../_static/clibmap.png) 编译时勾选使用micro lib ```C //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 ```C //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) ============================================================================== ``` 最终结论 ```C //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+ ```