在Keil MDK编译器编译后,信息栏都会显示编译情况,这其中就包含了FLASH和SRAM的信息。如下图所示:
/**************************************************************************************************************/
查看FLASH和SRAM的占用空间问题,主要看下面的语句:
Program Size:Code=44856 RO-data=448 RW-data=148 ZI-data=145488
/**************************************************************************************************************/
其中要着重注意的是Code、RO-data、RW-data、ZI-data所代表的意思。
Code:表示程序所占用FLASH的大小(FLASH);
RO-data:即Read Only-data,表示程序定义的常量,如const类型(FLASH);
RW-data:即Read Write-data,表示已被初始化的全局变量(SRAM);
ZI-data:即Zero-Init-data,表示未被初始化的全局变量(SRAM);
/**************************************************************************************************************/
那么FLASH和SRAM占用情况的计算方式如下所示:
flash = Code + RO-data + RW-data = 44856 + 448 + 148 = 45452Bytes
sram = RW-data + ZI-data = 148 + 145488 = 15636Bytes
还有一个要特别注意的是程序的大小不是.hex文件的大小,而是编译结果的Code+RO-data。
在程序初始化的时候,RW-data会从FLASH中拷贝到RAM中。
/**************************************************************************************************************/