Keil 编译内存信息:Program size: Code, RO-data , RW-data, ZI-data

1、Code 是代码占用的空间。

2、RO-data是 Read Only 只读常量的大小,如const型

3、RW-data是(Read Write) RW是可读可写变量,就是初始化时候就已经赋值了的,RW + ZI就是你的程序总共使用的RAM字节数。

4、ZI-data是(Zero Initialize) 没有初始化的可读写变量的大小,就是程序中用到的变量并且被系统初始化为0的变量的字节数,keil编译器默认是把你没有初始化的变量都赋值一个0,这些变量在程序运行时是保存在RAM中的。

Program size: Code, RO-data , RW-data, ZI-data

一般 MCU 包含的存储空间有:片内 Flash 与片内 RAM,RAM 相当于内存,Flash 相当于硬盘。

现在我们就一个STM32的工程为例子

linking...
Program Size: Code=11720 RO-data=1268 RW-data=108 ZI-data=1388
FromELF: creating hex file...
"..\object\BootLoader.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:05

上面提到的 Program Size 包含以下几个部分:

(1)Code:代码段,存放程序的代码部分;

(2)RO-data:只读数据段,存放程序中定义的常量;

(3)RW-data:读写数据段,存放初始化为非 0 值的全局变量;

(4)ZI-data:0 数据段,存放未初始化的全局变量及初始化为 0 的变量;

编译完工程会生成一个. map 的文件,该文件说明了各个函数占用的尺寸和地址,在文件的最后几行也说明了上面几个字段的关系:

==============================================================================Code (inc. data)   RO Data    RW Data    ZI Data      Debug   11720       1356       1268        108       1388     267457   Grand Totals11720       1356       1268        108       1388     267457   ELF Image Totals11720       1356       1268        108          0          0   ROM Totals==============================================================================Total RO  Size (Code + RO Data)                12988 (  12.68kB)Total RW  Size (RW Data + ZI Data)              1496 (   1.46kB)Total ROM Size (Code + RO Data + RW Data)      13096 (  12.79kB)==============================================================================

RO Size (Code + RO Data) ,表示程序占用Flash空间的大小。

RW  Size (RW Data + ZI Data),表示运行时占用的RAM的大小。

ROM Size (Code + RO Data + RW Data) ,表示烧写程序占用的Flash空间的大小。

Program size: Code, RO-data , RW-data, ZI-data相关推荐

  1. ARM编译中的RO、RW和ZI DATA区段

    ARM编译中的RO.RW和ZI DATA区段 ARM编译中的RO.RW和ZI DATA区段 ARM程序(指在ARM系统中正在执行的程序,而非保存在ROM中的bin文件)的组成 一个ARM程序包含3部分 ...

  2. ARM中的RO、RW和ZI DATA

    一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将 ...

  3. stm32 ARM中的RO、RW和ZI DATA

    一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将 ...

  4. KEIL 中的RO、RW和ZI DATA所代表的意思

    RO段.RW段和ZI段 要了解RO,RW和ZI需要首先了解以下知识: ARM程序的组成             此处所说的"ARM程序"是指在ARM系统中正在执行的程序,而非保存在 ...

  5. KEIL MDK中的RO、RW和ZI

    KEIL MDK中的RO.RW和ZI DATA理解及KEIL中ROM和RAM使用大小计算 (2013-12-25 09:33:06) 转载▼ 标签: it 分类: 嵌入式相关 本文来源与网络 http ...

  6. 关于RO、RW、ZI的说明

    参考文章: ARM中RO.RW和ZI DATA说明 http://mcuos.com/thread-2843-1-1.html STM32后生成编译文件大小探索 http://www.cnblogs. ...

  7. 了解RO、RW、ZI和.text .bss .data

    了解RO,RW和ZI 1.RO段包括只读代码段(code段/.text段)和常量段(RO Data段/.constdata段).  2.RW段(.data段)指已被初始化成非0值的变量段.  3.  ...

  8. Program Size: Code=x RO-data=x RW-data=x ZI-data=x 的含义

    Program Size: Code=x RO-data=x RW-data=x ZI-data=x 的含义 Code(代码): 程序所占用的FLASH大小,存储在FLASH. RO-data(只读的 ...

  9. Keil编译产生的RO,RW和ZI是什么

    转载自: http://sdjntl.spaces.eepw.com.cn/articles/article/item/80656 要了解RO,RW和ZI需要首先了解以下知识: 1.ARM程序的组成: ...

  10. RO、RW和ZI段详解

    要了解RO,RW和ZI需要首先了解以下知识: (1) ARM程序的组成 此处所说的"ARM程序"是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件, ...

最新文章

  1. 本地配yum(没有网络)
  2. [Cubieboard] 安装 Lubuntu server for SDCard
  3. iOS -OC调用js页面
  4. linux awk详解
  5. DTStructure分治法与最大子列和问题
  6. 【linux】查看字体
  7. 使用 csv 导入的方式在 SAP S/4HANA 里创建 employee 数据
  8. Java学习笔记(4)——枚举类型
  9. emlog_toolkit.php,emlog 4.0版本IIS6下伪静态划定规矩
  10. ajax java base64 图片储存
  11. ES中------拼音搜索
  12. win7打印机找不到USB001接口的解决方法
  13. 【实验】阿里云大数据助理工程师认证(ACA)- ACA认证配套实验-03-MaxCompute内置函数
  14. 为什么不敢和别人竞争_三千亿碧桂园的残酷竞争:别人能,你为什么不能?
  15. Fabric 1.0源代码分析(23)LevelDB(KV数据库)
  16. Cesium本地加载地形(dem高程)数据
  17. 一个老迅雷人眼中的“迅雷恩怨”门: 无论对错, 至少良知不可逝
  18. 浅析EtherCAT总线
  19. ko文件 、insmod命令
  20. 【xlwings api语言参考】Worksheets.Add 方法

热门文章

  1. MediaSession框架
  2. 11月 | Gauss松鼠会活动回顾总结
  3. Device Owner模式
  4. TM4C123-使用ROM中的函数库
  5. 计算机待机英语,计算机休眠
  6. 单位球坐标变换为椭球 matlab
  7. Gan 和 StyleGAN 架构
  8. 爱思唯尔(ELSEVIER)期刊LaTeX通用模板下载及使用技巧
  9. 什么是Usenet | 第2部分
  10. 5APMP项目管理:PMP考试备考经验学习方法和模拟考题(1-经验篇)