学习使用keil,总结一点学习经验。
解释几个名词:
编译的一个ARM的程序,编译结果中的一句话
Program Size: Code=8044 RO-data=52 RW-data=56 ZI-data=5184
其中:
Code指存储到flash【Rom】中的程序代码,代码被系统添加了一部分初始化ZI的代码,编程者看不到这部分。
ZI英语是zero initial,就是程序中用到的,并且被系统初始化为0的变量的字节数,keil编译器默认是把你没有初始化的变量都赋值一个0,这些变量在程序运行时是保存在RAM中的。
RW是可读可写变量,就是初始化时候就已经赋值了的,RW + ZI就是你的程序总共使用的RAM字节数。
还有一个RO,这个是初始化的常量,但是这些值是被保存到Rom中的,就放在主程序后面,这样所写的程序占用的rom的字节总数就是Code + RO + RW。为什么Rom中还要存RW,还有ZI函数呢,因为掉电后RAM中所有数据都丢失了,每次上电RAM中的数据是被重新赋值的,每次这些固定的值就是存储在Rom中的。
这样把我上面的例子做一个计算,Code + RO + RW就是你的rom中占用的字节数,打开memory window可以查看程序空间的结尾是不是这样。
附加一段keil帮助中的文字:
Example 3.2. Image information
Code (inc. data) RO Data RW Data ZI Data Debug
25088 2228 824 48 10500 17652 Grand Totals
25088 2228 824 48 10500 17652 ELF Image Totals
25088 2228 824 48 0 0 ROM Totals
===============================================================================
Total RO Size (Code + RO Data) 25912 ( 25.30kB)
Total RW Size (RW Data + ZI Data) 10548 ( 10.30kB)
Total ROM Size (Code + RO Data + RW Data) 25960 ( 25.35kB)
残弈悟恩 2015-10-23 14:28