ARM中RO/RW/ZI

  • 背景
  • 定义
  • LINUX内存为例
  • ARM程序烧录
  • 总结

背景

一直以来,对ARM体系中的RO/RW/ZI不是很清楚,只是知道有这些东西存在。有时看资料、项目中也会看到这些字眼。遂在此总结一些,谈谈自己的理解,方便日后查询,同时有什么错误的地方大家都可以指出,我会做出相应的修改。

定义

可直接从英文全称角度理解:
RO=read-only:只读数据
RW=read-write:可读可写数据
ZI=zero-initialized:未初始化数据

LINUX内存为例

下图以32位Linux系统内存结构为例:

红色和黄色就代表了RO/RW/ZI位置,而蓝色是代表函数内部数据区:局部变量。

代码区:存放程序的代码,即CPU执行的机器指令,并且是只读的。
常量区:存放常量(程序在运行的期间不能够被改变的量,例如: 10,字符串常量”abcde”, 数组的名字等)
静态区(全局区):静态变量和全局变量的存储区域是一起的,一旦静态区的内存被分配, 静态区的内存直到程序全部结束之后才会被释放
堆区:由程序员调用malloc()函数来主动申请的,需使用free()函数来释放内存,若申请了堆区内存,之后忘记释放内存,很容易造成内存泄漏
栈区:存放函数内的局部变量,形参和函数返回值。栈区之中的数据的作用范围过了之后,系统就会回收自动管理栈区的内存(分配内存 , 回收内存),不需要开发人员来手动管理。栈区就像是一家客栈,里面有很多房间,客人来了之后自动分配房间,房间里的客人可以变动,是一种动态的数据变动。
注意:const修饰的变量仍属于变量,不是常量,所以不是存放在常量区。

ARM程序烧录

ARM烧录bin文件到ROM中时,bin文件就只包含RO/RW数据,不包含ZI。
程序实际运行中,又会把RW数据搬运到RAM上,因为RW是变量,变量不能存在ROM中。
具体过程可以用下图表示:

总结

全文从arm体系下的RO/RW/ZI的英文全称角度切入,结合32位Linux内存结构说明RO/RW/ZI内存区的位置,最后通过程序烧录与运行解释了RO/RW/ZI的位置变化。

日常技术积累-ARM中RO/RW/ZI相关推荐

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

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

  2. RO/RW/ZI区别及在mcu中的存储分配

    1 前言 本文所解决的问题是:KEIL编译出来的文件信息中包含RO RW ZI 大小,该信息到底是flash 还是ram大小? 2 ARM程序的组成 此处所说的"ARM程序"是指在 ...

  3. linux硬盘ro改为rw,RO,RW,ZI 和scatter file详解(转载)

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

  4. RO,RW,ZI,FLASH,RAM前世今生

    好久没写博客,-.-. 因为接触两个新的平台,芯翼和OPL,又发现对内存和flash分布的一些疑问,或许是自己根基不够稳吧,如果要搞清楚这些的意义,需要以下几个步骤: 2.RO,RW,ZI 是什么 3 ...

  5. RO,RW,ZI 和scatter file详解(转载)

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

  6. stm32 RO RW ZI

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

  7. CODE RO RW ZI

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

  8. CODE RO RW ZI的区别

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

  9. RO,RW,ZI概念

    RO: RO=read-only RW: RW=read-write ZI: ZI=zero-initialized 各部分在空间上的分配结构如下图: When you compile a stand ...

最新文章

  1. python数据分析入门学习笔记儿
  2. 图论—割点zcmu2095
  3. 【MIPS汇编】ADDI,ADDIU,ADD,ADDU的区别、有符号无符号的谬误
  4. 面试后要请你吃饭_做了15年HR,面试4千人,发现优秀的会计能将这些题应答如流...
  5. 输出节点位移_绝对值信号的编码器有哪些信号输出(一、二)
  6. ORM中的Model与DDD中的DomainModel
  7. JavaScrip入门-变量计算%函数
  8. php 模板继承原理,模板继承体会
  9. Ubuntu16.04下禁用scp、sftp和winscp
  10. UML与软件建模 第五次作业
  11. 从国产手机自强复盘小米十年
  12. Oracle 创建新用户后无法登入,显示user lacks CREATE SESSION privilege; logon denied
  13. 常见阿拉伯数学符号以及拼写
  14. Boost.Asio的使用技巧
  15. CNN with Attention---channal and spatial attention
  16. Python 立体图形的画法(一)
  17. 爬虫图片mysql_爬取微博图片数据存到Mysql中遇到的各种坑\爬取微博图片\Mysql存储图片\微博爬虫...
  18. 两个List合并,并且按某一个字段排序
  19. 成品app直播源码,服务端与客户端传输视频文件
  20. 人工智能到底是什么?AI可以涵盖哪些领域?

热门文章

  1. APP 应用内活动运营,有哪些活动形式?
  2. 【视频处理】模拟视频信号及其传输
  3. 前沿关注 | 5G和边缘计算将如何改变AR和VR?
  4. 中台搞了2年,项目叫停,CIO被裁!本以为中台是道送分题,没想到是送命题!...
  5. 阿里云Linux服务器新手入门(2核4G)
  6. android 日历开发教程,android 开发教程之日历项目实践(三)
  7. oracle系统漏洞绿盟,【处置建议】Oracle WebLogic反序列化漏洞(CVE-2018-2628)安全处置建议...
  8. 语音信号处理频域语谱图matlab实验,语音信号的频域分析
  9. FTT暴雷加密熊市雪上加霜?如何对抗系统风险
  10. java 商城 商品查询_Javaweb网上商城项目实战(17)实现商品详情查询