核心代码消耗的空间大小

【基于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+