打印

你知道你的程序占了多大内存么?

[复制链接]
1260|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenyilin|  楼主 | 2019-4-4 17:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在开发的过程中,如果遇到内存即将不足的时候,都会很关注这个代码到底占用了多少空间,经常有一个误区,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。

以上论述只代表个人观点,仅供参考学习。如有雷同,纯属巧合,可联系后台删除。万分感谢您的关注与支持!


来源: 你知道你的程序占了多大内存么?

使用特权

评论回复
沙发
lvben5d| | 2019-4-4 19:54 | 只看该作者
本帖最后由 lvben5d 于 2019-4-4 20:00 编辑

没有MMU的芯片,我个人认为HEAP一点都没实用意义。HEAP设置为0x0000    STACK这边跟你函数镶嵌层数,以及最大镶嵌下局部变量的总数有关系。 在你应用RAM足够下,余下都放STACK是个万无一失的小技巧。当然你总要先考虑好STACK够不够是吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:GigaDevice
简介:兆易创新科技集团股份有限公司 (股票代码603986) 是全球领先的Fabless芯片供应商,公司成立于2005年4月,总部设于中国北京

17

主题

55

帖子

3

粉丝