一、Code、RO-data、RW-data和ZI-data

STM32单片机在keil开发环境下编译完成后,会显示:
Program Size: Code=XXXX RO-data=XXXX RW-data=XXXX ZI-data=XXXX  
如图1所示:

其中Code、RO-data、RW-data和ZI-data是什么意思呢?
01:Code 代表执行的代码,程序中所有的函数;
02:RO-data 代表只读数据,程序中所定义的全局常量数据;
03:RW-data代表已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量;
04:ZI-data代表定义了但未初始化的可读写数据,ZI英语是zero initial,就是程序中用到的变量并且被系统初始化为0的变量的字节数,keil编译器默认是把你没有初始化的变量都赋值一个0,这些变量在程序运行时是保存在RAM中的。

二、.map文件分析

.map文件位于生成工程中的Listings文件夹下,打开可以看到图2显示内容:

发现KEIL编译后显示的是图中Grand Totals/ELFImage Totals, 而实际存储在ROM中的数据并不包含ZI-Data(因为ZI-Data未初始化,对于MDK并不需要单独提供地址保存其初始化数据)。

01:程序编译后的HEX文件大小=Total ROM Size的值=(Code+ROData+RW Data);图2中显示表示编译后HEX文件大小12.79KB,这个就是实际烧录到单片机Flash里面的程序文件大小。单片机选型时要注意单片机的Flash容量。

02:程序实际在单片机RAM中运行的数据大小=Total RW Size的值=(RWData+ZI Data);

总之,只有单片机的实际Flash容量大于等于程序编译后的Total ROM Size值,且单片机的实际RAM容量大于等于编译后的Total RW Size值,程序才能在单片机中正常运行。

真的明白Code、RO-data、RW-data和ZI-data吗?相关推荐

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

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

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

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

  3. ARM中的RO、RW和ZI DATA

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

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

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

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

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

  6. CODE RO RW ZI

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

  7. CODE RO RW ZI的区别

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

  8. Kiel 中Code RO-data RW-data ZI Data是什么意思

    2019独角兽企业重金招聘Python工程师标准>>> 在使用keil中编译经常会看到这样的一行提示 Code:代表执行的代码段,程序中所有的函数都位于此处. RO-data: 代表 ...

  9. code ro rw zi 编译的一个ARM的程序,编译结果中的一句话

    code ro rw zi 编译的一个ARM的程序,编译结果中的一句话 Program Size: Code=8044 RO-data=52 RW-data=56 ZI-data=5184 其中: C ...

  10. Keil中的Code,RO,RW,ZI分别表示什么?

    在使用keil开发STM32应用程序时,点击Build后在Build Output窗口中经常会有如下信息: 以前一直好奇这几个参数和实际使用的STM32芯片中Flash和SRAM的对应关系,于是上网搜 ...

最新文章

  1. 【基础复习】二:预处理、const与sizeof
  2. Java Code Examples for java.net.Authenticator
  3. How is note created - backend implementation
  4. locker server启动
  5. 如果恶魔给你一亿,一年之后必须还两个亿,你会接受吗?
  6. win10浏览器闪退_Win10系统Edge浏览器闪退问题的解决方法
  7. 荣耀V40将采用300Hz 触控采样率,1月18日正式发布!
  8. 可能是 Python 中最火的第三方开源测试框架 pytest
  9. 考研_数学二_中值定理_证明题_辅助函数的设法
  10. mysql逻辑删除案例_实现数据逻辑删除的一种方案
  11. Git报错:another git process seems to be running in this repository
  12. 解决SAS/EG中某些process出现的WARNING: The font Arial is not available. Albany AMT will be used.
  13. 漏洞复现之CVE-2018-1273 Spring Data Commons 远程命令执行
  14. 怎么提高自己服务器的抗DDOS能力?
  15. 开关电源-反激+单级PFC超低纹波超低THD
  16. 点餐微信小程序【源码好又多】
  17. GPRS/GPS模块组学习——服务器搭建之云服务器 ECS
  18. hg8245c backupsettings.html,HG8245C电信定制版转华为官方版,附(官方固件三枚、SU密码计算器、ftp上传工具)...
  19. 怎么解决tekla节点中梁的对齐方式在节点内外有差异
  20. 防重复提交(注解+AOP)

热门文章

  1. 基于alphalens对qlib的alpha158做单因子分析
  2. WORD 表格中图片显示不出来?
  3. 使用Ubuntu搭建Web服务器
  4. kotlin 定义静态变量
  5. Mysql 启动命令详解
  6. OpenCV_tutorials 04 imgproc module - Affine Transformations
  7. svn clean up 特别慢
  8. c语言程序答案PDF,C语言程序设计答案.pdf
  9. 外贸找客户软件工具-G-EXTRACTOR-谷歌商家
  10. 第一章 时空、运动