一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但 是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将我的一些关于RO,RW和ZI的理解写出来,希望能对大家有所帮助。 要了解RO,RW和ZI需要首先了解以下知识: ARM程序...
Code:程序代码,存储在rom中; RO-data:只读数据,存储在rom中; RW-data:可读可写数据,既存储在ram中,也存储在rom中(RW-data已初始化的数据会存储在rom中,上电会从rom搬移至ram中); ZI-data:Zero Initialize,未初始化的数据,上电后在ram中划分一个区域统一存储,MDK会给默认赋值为0。 2、Code、RO-data、RW...
Total RO Size(Code + RO Data) 1008 ( 0.98kB) Total RW Size(RW Data + ZI Data) 96 ( 0.09kB) Total ROM Size(Code + RO Data + RW Data) 1008 ( 0.98kB) Prog2编译出来后的信息如下: Total RO Size(Code + RO Data) 1009 ( 0.99kB) Total RW Size(RW Data + ZI Data) 96 ( 0....
一个ARM程序包含3部分:RO,RW和ZI。RO是程序中的指令和常量;RW是程序中的已初始化变量;ZI是程序中的未初始化的变量. 由以上3点说明可以理解为:RO就是readonly,RW就是read/write,ZI就是zero ARM映像文件的组成 所谓ARM映像文件就是指烧录到ROM中的bin文件,也称为image文件。以下用Image文件来称呼它。
1.比如编译一个工程文件,产生如下提示信息:Program Size: Code=18938 RO-data=622 RW-data=124 ZI-data=7724 RO段、RW段和ZI段 要了解RO,RW和ZI需要首先了解以下知识:ARM程序的组成 此处所说的“ARM程序”是指在ARM系统中正在
RW-data是(Read Write) 初始化了的可读写变量的大小; ZI-data是(Zero Initialize) 没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化; 2.总结 简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code + RO Data + RW Data ...
谈谈Keil-MDK编译输出的:Code-data,RO-data,RW-data,ZI-dataCode-data,RO-data,RW-data,ZI-data 程序运行时加载过程 一、编译过程 (1) 编译,MDK 软件使用的编译器是 armcc 和 armasm,它们根据每个 c/c++和汇编源文件编译成对应的以“.o”为后缀名的对象文件(Object Code,也称目标...
1、ARM 编译中的 RO、RW 和 ZI DATA 区段ARM 程序(指在 ARM 系统中正在执行的程序,而非保存在 ROM 中的 bin 文件)的组成一个ARM 程序包含 3 部分:RO 段,RW 段和 ZI 段RO 是程序中的指令和常量 RW 是程序中的已初始化变量 ZI 是程序中的未初始化的变量由以上 3 点说明可以理解为: RO 就是 ...
RO-data:它指程序中用到的只读数据,因而程序不能被修改的内容,这些数据被存储在ROM区。 RO-data区典型:例1、C语言中const关键字定义的变量。例2、C语言中定义的全局常量。例3、C语言中定义的字符串。 RW-data:即可读写数据区域,一定是初始化为“非0值”的可读写数据,而且应用程序可以修改其内容,这些数据被...
ZI是程序中的未初始化的变量 由以上3点说明可以理解为: RO就是readonly, RW就是read/write, ZI就是zero ARM映像文件的组成 所谓ARM映像文件就是指烧录到ROM中的bin文件,也成为image文件。以下用Image文件来称呼它。 Image文件包含了RO和RW数据。 之所以Image文件不包含ZI数据,是因为ZI数据都是0,没必要包含,只要...