STM32--Code、RO-data、RW-data和ZI-data
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相关推荐
- stm32 ARM中的RO、RW和ZI DATA
一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将 ...
- ARM中的RO、RW和ZI DATA
一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将 ...
- 了解RO、RW、ZI和.text .bss .data
了解RO,RW和ZI 1.RO段包括只读代码段(code段/.text段)和常量段(RO Data段/.constdata段). 2.RW段(.data段)指已被初始化成非0值的变量段. 3. ...
- KEIL 中的RO、RW和ZI DATA所代表的意思
RO段.RW段和ZI段 要了解RO,RW和ZI需要首先了解以下知识: ARM程序的组成 此处所说的"ARM程序"是指在ARM系统中正在执行的程序,而非保存在 ...
- ARM编译中的RO、RW和ZI DATA区段
ARM编译中的RO.RW和ZI DATA区段 ARM编译中的RO.RW和ZI DATA区段 ARM程序(指在ARM系统中正在执行的程序,而非保存在ROM中的bin文件)的组成 一个ARM程序包含3部分 ...
- CODE RO RW ZI
一直以来对于ARM体系 中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该 有不少人也有和我同样的困惑,因 ...
- CODE RO RW ZI的区别
一直以来对于ARM体系 中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该 有不少人也有和我同样的困惑,因 ...
- Kiel 中Code RO-data RW-data ZI Data是什么意思
2019独角兽企业重金招聘Python工程师标准>>> 在使用keil中编译经常会看到这样的一行提示 Code:代表执行的代码段,程序中所有的函数都位于此处. RO-data: 代表 ...
- Keil中的Code,RO,RW,ZI分别表示什么?
在使用keil开发STM32应用程序时,点击Build后在Build Output窗口中经常会有如下信息: 以前一直好奇这几个参数和实际使用的STM32芯片中Flash和SRAM的对应关系,于是上网搜 ...
- Keil编译后的Code,RO,RW,ZI分别表示什么以及和芯片Flash、SRAM的对应关系
在使用keil开发STM32应用程序时,点击Build后在Build Output窗口中经常会有如下信息: 以前一直好奇这几个参数和实际使用的STM32芯片中Flash和SRAM的对应关系,于是上网搜 ...
最新文章
- R语言dataframe数据列中的缺失值NA的个数统计实战:特定数据列的NA值统计、所有特征的NA值统计
- java中new BigDecimal的坑
- https的那些事儿
- 手把手教你刷新BACKUP Bios
- 开博首发2017年1月13日开博大吉
- nyoj1047欧几里得
- MS-SQL CLR 直接读写文件,飞一般的感觉!
- ArchLinux学习之环境变量
- c语言函数与宏定义的应用,C语言第3次实_函数与宏定义的应用.doc
- python编程(基于twisted的client编程)
- Perl的模块判断及安装
- 怎么去除WPS图表外面默认的灰色的框
- 易捷行云EasyStack与火星高科完成产品互认证,保护云上数据
- JDBC,JDBC连接池和JNDI
- stm32开发遇到的问题及后续
- 获取当前时间的后一天/前一天或者后1小时/前1小时
- Ubuntu Linux上几款好玩的免费游戏
- 特朗普纽约投资项目售价8.5亿
- 使用小白装机工具提示“检测到硬盘错误”解决方法
- ERP系统帮助企业解决物料清单管理难题
热门文章
- 沃信科技T3 Sota安装配置手册(1-4章)
- [计算机视觉] AprilTag 2: Efficient and robust fiducial detection(2016)论文理解
- AFD在CentOS环境中部署
- 2021年系统集成项目管理工程师证书领取
- Couldn‘t terminate the existing process for com.hopechart.gallery
- 标号法(label-setting algorithm)求解带时间窗的最短路问题(ESPPRC)
- 深度学习,如何选择GPU服务器?
- sht20 python_SHT20 IIC 寄存器概述
- SHT30 温湿度传感器 使用示例
- 使用Aptana Studio 3开发python教程