KEIL编译后程序的大小,Code、RO-data、RW-data、ZI-data的关系

MDK编译后显示:

Program Size: Code=9748 RO-data=392 RW-data=20 ZI-data=1228

KEIL编译后程序的大小,Code、RO-data、RW-data、ZI-data的关系_第1张图片
首先要弄懂这几个分别是什么?

Code:程序代码,存储在rom中;
RO-data:只读数据,存储在rom中;
RW-data:可读可写数据,既存储在ram中,也存储在rom中(RW-data已初始化的数据会存储在rom中,上电会从rom搬移至ram中);
ZI-data:Zero Initialize,未初始化的数据,上电后在ram中划分一个区域统一存储,MDK会给默认赋值为0。

因此程序占用rom大小=Code+RO-data+RW-data
=9748+392+20=10160=9.92K;
占用ram大小=RW-data+ZI-data
=20+1228=1248 =1.22K。

另外从map文件中也可以看出:
KEIL编译后程序的大小,Code、RO-data、RW-data、ZI-data的关系_第2张图片
同时,也要注意上面的STACK属于ZI-Data。

所以RAM除了heap、stack外,还有ZI-Data、RW-Data区域。

你可能感兴趣的:(mcu,keil编译后程序的大小,Ro-data,RW-data,ZI-data,Ram和flash)