keil编译后Program Size: Code=46284 RO-data=988 RW-data=580 ZI-data=1094588

Program Size: Code=46284 RO-data=988 RW-data=580 ZI-data=1094588  

Code      :   程序中代码所占字节大小

RO-data :   Read-only-data  ,存储在flash中的常量大小。

RW-data:   Read-write-data  ,存储在flash中初始化的变量。

ZI-data   :   Zero-Init-data      ,存储在SRAM中未初始化的变量。

ROM(Flash) size = Code+RO-data+RW-data;

RAM size = RW-data+ZI-data

可以通过.map查看占用的flash和ram大小

简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code+RO Data+RW Data

程序运行的时候,芯片内部RAM使用的空间为: RW Data + ZI Data

摘自:https://blog.csdn.net/yuleicqut/article/details/50933441

存储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使用的空间)

 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

原文地址:https://www.cnblogs.com/chulin/p/8760579.html