MDK编译程序的组成:
        Code:代码域,它指的是编译器生成的机器指令,这些内容被存储到ROM区。
        RO-data: Read Only data,只读数据域,它指程序中用到的只读数据,这些数据被存储在ROM区,因而程序不能修改其内容。C语言中const关键字定义的变量就是典型的RO-data。
        RW-data: Read Write data,可读写数据域,它指初始化为“非0值”的可读写数据,程序刚运行时,这些数据具有非0的初始值,且运行的时候它们会常驻在RAM区,因而应用程序可以修改其内容。C语言中定义的全局变量,且定义时赋予“非0值”给该变量进行初始化。
        ZI-data: Zero Initialie data,即0初始化数据,它指初始化为“0值”的可读写数据域。它与RW-data的区别是程序刚运行时这些数据初始值全都为 0,而后续运行过程与RW-data的性质一样,它们也常驻在RAM区,因而应用程序可以更改其内容。例如C语言中使用定义的全局变量,且定义时赋予“ 0 值”给该变量进行初始化(若定义该变量时没有赋予初始值,编译器会把它当ZI-data来对待,初始化为 0);
        ZI-data 的栈空间(Stack)及堆空间(Heap):在C语言中,函数内部定义的局部变量属于栈空间,进入函数的时候会向栈空间申请内存给局部变量,退出时释放局部变量,归还内存空间。而使用malloc动态分配的变量属于堆空间。在程序中的栈空间和堆空间都是属于ZI-data区域的,这些空间都会被初始值化为0值。编译器给出的ZI-data占用的空间值中包含了堆栈的大小(经实际测试,若程序中完全没有使用malloc动态申请堆空间,编译器会优化,不把堆空间计算在内)。
程序组件所属的区域:

程序组件 所属类别
机器代码指令 Code
常量 RO-data
初值非0的全局变量 RW-data
初值为0的全局变量 ZI-data
局部变量 ZI-data栈空间
使用malloc动态分配的空间 ZI-data堆空间

RW-data 和 ZI-data 它们仅仅是初始值不一样而已,应用程序具有静止状态和运行状态。静止态的程序被存储在非易失存储器中,如 STM32 的内部 FLASH,因而系统掉电后也能正常保存但是当程序在运行状态的时候,程序常常需要修改一些暂存数据,由于运行速度的要求,这些数据往往存放在内存中(RAM),掉电后这些数据会丢失。因此,程序在静止与运行的时候它在存储器中的表现是不一样的,
程序状态区域的组成;
程序状态与区域                 组成
程序执行时的只读区域(RO)       Code+RO-data
程序执行时的可读写区域(RW)     RW-data + ZI-data
程序存储时占用的ROM区          Code + RO-data + RW-data
————————————————
版权声明:本文为CSDN博主「tyustli」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tyustli/article/details/86061856

STM32--Code、RO-data、RW-data和ZI-data相关推荐

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

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

  2. ARM中的RO、RW和ZI DATA

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

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

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

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

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

  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. Keil中的Code,RO,RW,ZI分别表示什么?

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

  10. Keil编译后的Code,RO,RW,ZI分别表示什么以及和芯片Flash、SRAM的对应关系

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

最新文章

  1. R语言dataframe数据列中的缺失值NA的个数统计实战:特定数据列的NA值统计、所有特征的NA值统计
  2. java中new BigDecimal的坑
  3. https的那些事儿
  4. 手把手教你刷新BACKUP Bios
  5. 开博首发2017年1月13日开博大吉
  6. nyoj1047欧几里得
  7. MS-SQL CLR 直接读写文件,飞一般的感觉!
  8. ArchLinux学习之环境变量
  9. c语言函数与宏定义的应用,C语言第3次实_函数与宏定义的应用.doc
  10. python编程(基于twisted的client编程)
  11. Perl的模块判断及安装
  12. 怎么去除WPS图表外面默认的灰色的框
  13. 易捷行云EasyStack与火星高科完成产品互认证,保护云上数据
  14. JDBC,JDBC连接池和JNDI
  15. stm32开发遇到的问题及后续
  16. 获取当前时间的后一天/前一天或者后1小时/前1小时
  17. Ubuntu Linux上几款好玩的免费游戏
  18. 特朗普纽约投资项目售价8.5亿
  19. 使用小白装机工具提示“检测到硬盘错误”解决方法
  20. ERP系统帮助企业解决物料清单管理难题

热门文章

  1. 沃信科技T3 Sota安装配置手册(1-4章)
  2. [计算机视觉] AprilTag 2: Efficient and robust fiducial detection(2016)论文理解
  3. AFD在CentOS环境中部署
  4. 2021年系统集成项目管理工程师证书领取
  5. Couldn‘t terminate the existing process for com.hopechart.gallery
  6. 标号法(label-setting algorithm)求解带时间窗的最短路问题(ESPPRC)
  7. 深度学习,如何选择GPU服务器?
  8. sht20 python_SHT20 IIC 寄存器概述
  9. SHT30 温湿度传感器 使用示例
  10. 使用Aptana Studio 3开发python教程