在开发的过程中,如果遇到内存即将不足的时候,都会很关注这个代码到底占用了多少空间,经常有一个误区,hex 文件就是程序的大小(事实上并不是的) 现在用keil 来查看,计算这个代码占用的空间 在编译完成之后,总可以看到以下的信息提示: 下面解释下他们的含义: Program Size: Code=x RO-data=x RW-data=x ZI-data=x 的含义 Code(代码): 程序所占用的FLASH大小,存储在FLASH. RO-data(只读的数据): Read-only-data,程序定义的常量,如const型,存储在FLASH中。 RW-data(有初始值要求的、可读可写的数据):
Read-write-data,已经被初始化的变量,存储在FLASH中。初始化时RW-data从flash拷贝到SRAM。 ZI-data:Zero-Init-data,未被初始化的可读写变量,存储在SRAM中。ZI-data不会被算做代码里因为不会被初始化。 ROM(Flash) size = Code + RO-data + RW-data;
RAM size = RW-data + ZI-data
简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code+RO Data+RW Data
程序运行的时候,芯片内部RAM使用的空间为: RW Data + ZI Data。
以上论述只代表个人观点,仅供参考学习。如有雷同,纯属巧合,可联系后台删除。万分感谢您的关注与支持!
来源: 你知道你的程序占了多大内存么? |