一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将我的一些关于RO,RW和ZI的理解写出来,希望能对大家有所帮助. 要了解RO,RW和ZI需要首先了解以下知识: ARM程序的组成 此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别. 一个ARM程序包含3部分:RO,RW和ZI…
1.比如编译一个工程文件,产生如下提示信息: Program Size: Code=18938 RO-data=622 RW-data=124 ZI-data=7724 RO段.RW段和ZI段 要了解RO,RW和ZI需要首先了解以下知识:ARM程序的组成            此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别.            一个ARM程序包含3部分:RO,RW和ZI.RO是程序中的指令和常量:R…
在使用keil开发STM32应用程序时,点击Build后在Build Output窗口中经常会有如下信息:<ignore_js_op> 以前一直好奇这几个参数和实际使用的STM32芯片中Flash和SRAM的对应关系,于是上网搜了一圈,做如下总结: 这些参数的单位是Byte 图中几个参数分别代表  Code:代码的大小 RO:常量所占空间 RW:程序中已经初始化的变量所占空间 ZI:未初始化的static变量和全局变量以及堆栈所占的空间 上述参数和芯片Flash以及SRAM的对应关系是  Fl…
一般说来,我们在C语言中定义的每一个变量初始化后都会占用一定的内存(RAM)空间.但是在keil中提供了一个特殊的关键字“code”,这个关键字在标准C中是没有的.其语法举例如下: unsigned char code word[] = {       0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01,       0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30,       0x0F,0x0C,0xE8,0x03,0x08,0x0C…
我们开发项目中,编译.链接完成后,都要看一下RAM和Flash的利用情况,尤其在有bootloader的情况下,确保自己的单片机选型能符合项目的要求.其中ARM程序的组成,是很容易混淆的.此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在Flash中的bin映像(image)文件,这一点清注意区别. 一.Code,RO-data,RW-data,ZI-data所代表的意思 下图是车检器项目的APP利用情况: 图1 Code    = 10956 Code           …
一般 MCU 包含的存储空间有:片内 Flash 与片内 RAM,RAM 相当于内存,Flash 相当于硬盘. 现在我们就一个STM32的工程为例子 linking... Program Size: Code= RO-data= RW-data= ZI-data= FromELF: creating hex file... Error(s), Warning(s). Build Time Elapsed: :: 上面提到的 Program Size 包含以下几个部分: (1)Code:代码段,存…
按照C编译器编译的结果,一般会产生RO段,RW段,ZI段.RO是程序中的指令和常量,RW是程序中的已初始化全局变量,ZI是程序中的未初始化或初始化为零的全局变量. 那么如下的代码 int aaa; int bbb; int main() { aaa = ; bbb = ; ; } 应该产生的是八个字节的ZI段,但很奇怪,--bss_threshold=0 Program Size: Code= RO-data= RW-data= ZI-data= 如上所示,其中的Code段,RO-data段和Z…
转自关于keil中data,idata,xdata,pdata,code的问题 ‍从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述).与ANSI-C稍有不同,它只分SAMLL.COMPACT.LA…
编译的一个ARM的程序,会得到这样的信息: ============================================================================== Code (inc. data) RO Data RW Data ZI Data Debug 2730 194 250 8 96 16068 Grand Totals 2730 194 250 8 96 16068 ELF Image Totals 2730 194 250 8 0 0 ROM T…
一 基础知识 字节  8位半字  16位字    32位 二 解惑 Code, RO-data,RW-data,ZI-data Code为程序代码部分RO-data 表示 程序定义的常量const temp;RW-data 表示 已初始化的全局变量ZI-data 表示 未初始化的全局变量 Program Size: Code="18248" RO-data=320 RW-data=260 ZI-data=3952 Code, RO-data,RW-data ............fl…