您的位置:首页 > 其它

Keil MDK中的Code, RO-data , RW-data, ZI-data分别代表什么意思?(转)

2017-10-31 09:51 537 查看

Keil MDK中的Code, RO-data , RW-data, ZI-data分别代表什么意思?(转)



(1) Code(inc.Data) : 包含两部分,即代码和数据


     - code,即程序代码部分

     - inline data. For example, literal pools(文字常量池), and short strings(短字符串)等. 这个一般被忽略,请大家注意!!!

(2) RO Data: read-only data,只读的数据
 Shows how many bytes are occupied by read-only data.  This
is in addition to the inline data included in the 
Code (inc.
data) 
column. 除inline data 之外的所有只读数据。

(3) RW Data: read write data,可读写的数据

Shows how many bytes are occupied by read-write data.
(4) ZI Data: zero initialized data,零初始化的可读写变量

Shows how many bytes are occupied by zero-initialized data.

keil编译器默认是把你没有初始化的变量都赋值一个0。初始化为零,或者未初始化的变量,都存储于这个区域。

存储Size:

RO size: Code + RO_data

RW size: RW_data + ZI_data

ROM (minimum)size = Code + RO_data + RW_data (即烧/下载程序到FLASH/ROM时,所占用的最小空间)

Total
ROM Size (Code + RO Data + RW Data)这样所写的程序占用的ROM的字节总数,也就是说程序所下载到ROM flash 中的大小。为什么Rom中还要存RW,因为掉电后RAM中所有数据都丢失了,每次上电RAM中的数据是被重新赋值的,每次这些固定的值就是存储在Rom中的,为什么不包含ZI段呢,是因为ZI数据都是0,没必要包含,只要程序运行之前将ZI数据所在的区域一律清零即可。包含进去反而浪费存储空间。

RAM
size: RW Data + Z
4000
I Data (即程序运行的时,RAM使用的空间)

一个ARM程序包含3部分:RO段,RW段和ZI段
RO是程序中的指令和常量
RW是程序中的已初始化变量
ZI是程序中的零初始化的变量
由以上3点说明可以理解为:
RO就是readonly,
RW就是read/write,
ZI就是zero
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐