返回> 网站首页 

Keil - Code, RO-data , RW-data, ZI-data

yoours2021-07-15 19:32:26 阅读 1844

简介一边听听音乐,一边写写文章。

Keil/MDK 编译:

linking...

Program Size: Code=45292 RO-data=3376 RW-data=2952 ZI-data=40448  

FromELF: creating hex file...

==============================================================================

      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   


     45292       2458       3376       2952      40448     530442   Grand Totals

     45292       2458       3376       1432      40448     530442   ELF Image Totals (compressed)

     45292       2458       3376       1432          0          0   ROM Totals


==============================================================================


    Total RO  Size (Code + RO Data)                48668 (  47.53kB)

    Total RW  Size (RW Data + ZI Data)             43400 (  42.38kB)

    Total ROM Size (Code + RO Data + RW Data)      50100 (  48.93kB)


==============================================================================

(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 + ZI Data (即程序运行的时,RAM使用的空间)


一个ARM程序包含3部分:RO段,RW段和ZI段

RO是程序中的指令和常量

RW是程序中的已初始化变量

ZI是程序中的零初始化的变量


由以上3点说明可以理解为:

RO就是readonly,

RW就是read/write,

ZI就是zero


微信小程序扫码登陆

文章评论

1844人参与,0条评论