keil5编译后生成 Program Size: Code RO-data RW-data ZI-data是什么

原文链接: https://blog.csdn.net/ylzmm/article/details/79233560

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ylzmm/article/details/79233560
 在keil5下全编译了这么多次代码,每次编译完了后都有这么一行提示,闲来没事还是搜索学习了一下。

Program Size: Code=49560 RO-data=7032 RW-data=308 ZI-data=1100180 (数据当然是不一样的哈) 

通过查阅keil5的帮助文档(ARM Development Tools),看到样的的一个数据,如图


Code (inc. data)   RO Data   RW Data    ZI Data      Debug
3712        1580        19        44      10200       7436   Object Totals
0              0        16         0          0          0   (incl. Generated)
0              0         3         0          0          0   (incl. Padding)
21376        648       805         4        300      10216   Library Totals 
0              0         6         0          0          0   (incl. Padding)
===============================================================================
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)
 (1)Code (inc. data): 网上多大说的是程序代码所占的字节数。但是这种说法并不完全,在官方文档中这么
    一句话:Shows how many bytes are occupied by code. In this image, there are 3712 bytes of code. 
    This includes 1580 bytes of inline data (inc. data), for example, literal pools, and short strings.
    (意思就是说显示代码占用了多少字节。 在上面的这个表中,有3712个字节的代码。 这包括1580字节的内联
    数据,例如文字池和短字符串)

    Code中不仅仅包含了代码的大小。其中还包括了inline data(内联数据),比如literal pools(文字池)
    和short strings(短字符串)。

 (2)RO-data: 表示程序中的只读常量数据。比如const类型的数据 (除inline data之外的只读数据)。

 (3)RW-data: 表示可读写变量的大小,也就是说是程序中已经初始化的变量大小。

 (4)ZI-data: 表示程序中未初始化的变量大小。就是程序中已经定义但是初始化值为0或者
   是没有初始化赋值的变量(编译器会默认把没有赋值的变量自动赋值为0)。


  下面对几个数值的关系进行说明

  ROM size:  也就是下载到单片机FLASH中的数据为  Code +RO-data +RW-data 和的大小。
  为什么不把ZI-data 也下载进去呢? 其实是没有必要的,这是浪费空间,只要程序一上电运
  行就会把ZI-data 自动清0。

  RAM size: 程序运行时所需要的大小空间为 RW-data+ ZI-data
 

你可能感兴趣的:(单片机学习)