Keil MDK编译器下查看占用Flash和SRAM空间大小

本文介绍了如何查看Keil MDK编译后的FLASH和SRAM使用情况,重点解析了Code、RO-data、RW-data、ZI-data的含义。Code表示程序占用的FLASH空间,RO-data为只读常量,RW-data为已初始化全局变量(存储在SRAM),ZI-data则是未初始化的全局变量。在程序启动时,RW-data会从FLASH复制到SRAM。了解这些信息对于优化嵌入式程序的内存使用至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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中。

/**************************************************************************************************************/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值