1、Code、RO-data、RW-data、ZI-data这几个分别是什么? Code:程序代码,存储在rom中; RO-data:只读数据,存储在rom中; RW-data:可读可写数据,既存储在ram中,也存储在rom中(RW-data已初始化的数据会存储在rom中,上电会从rom搬移至ram中); ZI-data:Zero Initialize,未初始化的数据,上电后在ram中划分一个...
ro-data:位于数据段的一部分,存储只读数据。 rw-data:也位于数据段,但存储的是可读写数据,即需要被初始化的全局变量和静态变量。 BSS段(Block Started by Symbol Segment):存储零初始化数据(zi-data),即未显式初始化的全局变量和静态变量。这部分内存区域在程序加载时通常会被清零。 堆(Heap):动态分配的内存区...
5.Total ROM Size (Code + RO Data + RW Data)这样所写的程序占用的ROM的字节总数,也就是说程序所下载到ROM flash 中的大小。为什么Rom中还要存RW,因为掉电后RAM中所有数据都丢失了,每次上电RAM中的数据是被重新赋值的,每次这些固定的值就是存储在Rom中的,为什么不包含ZI段呢,是因为ZI数据都是0,没必要包...
(4) 使用 armlink 链接对象文件,根据程序的调用把各个.o 文件的内容链接起来,最后生成程序的 axf 映像文件,并附带程序各个域大小的说明,包括 Code、RO-data、RW-data及 ZI-data 的大小。 (5) 使用 fromelf 生成下载格式文件,它根据 axf 映像文件转化成 hex 文件,并列出编译过程出现的错误(Er...
ZI-data是(Zero Initialize) 没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化; 简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code + RO Data + RW Data 程序运行的时候,芯片内部RAM使用的空间为: RW Data + ZI Data ...
RW-data, ZI-data...RAM 二、单片机启动过程中Code,RO-data,RW-data,ZI-data的操作流程 1、ARM映像文件的组成 所谓ARM映像文件就是指烧录到Flash中的bin文件,也称为image文件 image文件包含了Code, RO-data, RW-data数据。 之所以image文件不包含ZI-data...
RO-data:它指程序中用到的只读数据,因而程序不能被修改的内容,这些数据被存储在ROM区。 RO-data区典型:例1、C语言中const关键字定义的变量。例2、C语言中定义的全局常量。例3、C语言中定义的字符串。 RW-data:即可读写数据区域,一定是初始化为“非0值”的可读写数据,而且应用程序可以修改其内容,这些数据被...
详解STM32编译后Code,RO-data,RW-data,ZI-data ARM中的RO、RW和ZI DATA 要了解RO,RW和ZI需要首先了解以下知识: ARM程序的组成 此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。 一个ARM程序包含3部分:RO,RW和ZI RO是程序中的指令和常量 RW...
Code代表执行的代码,程序中所有的函数都位于此处。RO-data代表只读数据,程序中所定义的全局常量数据和字符串都位于此处。RW-data代表已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量位于此处。ZI-data代表未初始化的读写数据,程序中定义了但没有初始化的全局变量和静态变量位于此处。
CODE、RO、RW、ZI Data 域及堆栈空间 在工程的编译提示输出信息中有一个语句“Program Size:Code=xx RO-data=xx RW-data=xx ZI data=xx”,它说明了程序各个域的大小,编译后,应用程序中所有具有同一性质的数据 (包括代 码) 被归到一个域,程序在存储或运行的时候,不同的域会呈现不同的状态,这些域的意义...