Keil/MDK编译后内存大小RO,RW,ZI理解.

  一般用 KEIL / MDK 开发cortex M系列内核MCU,编译工程后,可以在Build Output窗口看到内存大小相关的信息,如下图。并且会得到一个map文件,默认在路径:./Listings/xxx.map。

 打开map文件,直接拉到文件的最底部,可以看到如下内容:

==============================================================================


      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   

     93080       5964       3868        948       3384     141071   Grand Totals
     93080       5964       3868        948       3384     141071   ELF Image Totals
     93080       5964       3868        948          0          0   ROM Totals

==============================================================================

    Total RO  Size (Code + RO Data)                96948 (  94.68kB)
    Total RW  Size (RW Data + ZI Data)              4332 (   4.23kB)
    Total ROM Size (Code + RO Data + RW Data)      97896 (  95.60kB)

==============================================================================

上面一栏:

1)Code(inc. data): 表示所有代码占用的空间;

2)RO Data:表示程序中定义的常量,const定义的变量,总共占用的空间;

3)RW Data:表示程序中定义的初始值非0的全局变量和函数内部定义的static变量;

4)ZI Data:表示程序中定义的初始化值为0的全局变量和函数内部定义的static变量;

5)inc.data:指的是inline data.

下面一栏:

1)Total RO  Size  = Code + RO Data;

2)Total RW  Size  = RW Data + ZI Data;

3)Total ROM Size = Code + RO Data + RW Data;

占用FLASH和RAM空间的计算:

1)占用FLASH空间 = Total ROM Size = Code + RO Data + RW Data;

2)占用RAM空间 = Total RW  Size  = RW Data + ZI Data;

特殊说明:

从上面可以看到,ZI Data即占用了FLASH空间又占用了RAM空间。 这是因为ZI Data数据,在固件烧录的时候是存放在FLASH中,当程序运行后,会把这部分数据拷贝到RAM中。

官方解释:

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值