精华内容
下载资源
问答
  • Code_RO-data_RW-data_ZI-data

    2016-06-10 18:12:22
    Code_RO-data_RW-data_ZI-data
  • Code, RO-data,RW-data,ZI-data Code为程序代码部分。表示要执行的代码,程序中所以的函数都位于此处 RO-data 表示程序中只读数据,程序中所定义的全局常量数据和字符串都位于此处。 RW-data 表示 已初始化的可读可...

    一 基础知识

    字节 8位
    半字 16位
    字 32位

    二 解惑

    Code, RO-data,RW-data,ZI-data

    Code为程序代码部分。表示要执行的代码,程序中所以的函数都位于此处
    RO-data 表示程序中只读数据,程序中所定义的全局常量数据和字符串都位于此处。
    RW-data 表示 已初始化的可读可写的数据,程序中定义并且初始化的全局和静态变量位于此处。
    ZI-data 表示 未初始化的读写数据,程序中定义了但没有初始化的全局变量和静态变量位于此处。
    在这里插入图片描述

    Program Size: Code=“1136” RO-data=320 RW-data=0 ZI-data=1632
    下载到单片机FLASH中的程序是:Code + RO-data + RW-data (单位是字节Byte)
    hex = (1136 + 320 + 0 = 1456)/ 1024 = 1.421875KB
    运行在RAM中的数据是:RW-data + ZIdata

    展开全文
  • STM32--Code、RO-dataRW-data和ZI-data

    千次阅读 2019-01-08 09:19:38
    MDK编译程序的组成:  Code:代码域,它指的是编译器生成的机器指令,这些内容被存储到ROM区。  RO-data: Read Only data,只读数据域,它指程序... RW-data: Read Write 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
        参考资料:零死角玩转STM32

    展开全文
  • RW-Data:表示已经初始化的静态变量,变量有初值; ZI-Data:表示未初始化的静态变量,变量无初值。 #define DATA (0x10000000) /* RO-Data */ char const GcChar = 5; /* RO-Data */ char GcStr[] = "stri...

        使用keil编译工程生成hex的时候,会给出程序的大小和所占的内存。那么到底是怎么看这些信息的呢?

    Code:为程序代码部分;

    RO-Data:表示程序定义的常量及 const 型数据;

    RW-Data:表示已经初始化的静态变量,变量有初值;

    ZI-Data:表示未初始化的静态变量,变量无初值。

    #define DATA (0x10000000) /* RO-Data */
    char const GcChar = 5; /* RO-Data */
    char GcStr[] = "string."; /* RW-Data */
    char GcZero; /* ZI-Data */

    其中,

    ROM(Flash) Size = Code+RO-Data+RW-Data;

    RAM Size = RW-Data+ZI-Data;

        为什么上述的 RW-Data 既占用 Flash 又占用 RAM 么,变量不是放在 RAM 中的么,为

    什么会占用 Flash?因为 RW 数据不能像 ZI 那样“无中生有”的, ZI 段数据只要求其所在

    的区域全部初始化为零,所以只需要程序根据编译器给出的 ZI 基址及大小来将相应的 RAM

    清零。但 RW 段数据却不这样做,所以编译器为了完成所有 RW 段数据赋值,其先将 RW 段

    的所有初值,先保存到 Flash 中,程序执行时,再 Flash 中的数据搬运到 RAM 中,所以 RW

    段即占用 Flash 又占用 RAM,且占用的空间大小是相等的。

     

    内容参考自《周立功分散加载文件浅释》

    展开全文
  • Program Size: Code= RO-data= RW-data= ZI-data=

    千次阅读 2020-07-28 16:29:47
    Program Size: Code= RO-data= RW-data= ZI-data= 代表了当前程序所占内存的大小。 Code:程序所占用的FLASH大小,存储在FLASH中。 RO-data:代表的是只读的数据,程序定义的常量,如const型,存储在FLASH中。 RW-...

    Program Size: Code=    RO-data=    RW-data=   ZI-data=   代表了当前程序所占内存的大小。

    Code:程序所占用的FLASH大小,存储在FLASH中。

    RO-data:代表的是只读的数据,程序定义的常量,如const型,存储在FLASH中。

    RW-data:存储的为有初始值要求的、可读可写的数据,存储的是已经初始化的变量,存储在FLASH中。初始化时RW-data从FLASH拷贝到SRAM中。

    ZI-data:存储的为未被初始化的可读写变量,存储在SRAM中。

    Total RO Size = Code + RO Size
    Total RW Size = RW Data + ZI Data
    Total ROM Size = Code + RO Data + RW Data

     

    展开全文
  • 1)Code:代码段,存放程序的代码部分; 2)RO-data:只读数据段,存放程序中定义的常量; 3)RW-data:读写数据段,存放初始化为非 0 值的全局变量;...2.RW-data 和ZI-data,表示运行时占用的...
  • RW Size (RW Data + ZI Data) 1864 ( 1.82kB) /*运行时程序占用RAM空间的大小*/ ROM Size (Code + RO Data + RW Data) 1920 ( 1.88kB) /*烧写时程序占用FLASH空间的大小*/  看到这里我们就有疑问,为...
  • Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116 1)Code 是代码占用的空间; 2)RO-data 是 Read Only 只读常量的大小,如const型; 3)RW-data 是(Read Write)初始化了的可读写变量的大小; 4)ZI-data...
  • Code、RO-dataRW-data、ZI-data的含义理解以及程序最终占用处理器中的Flash空间大小和SRAM空间大小如何?今天就此问题跟大家进行详细的讨论,希望可以对大家有所帮助。 一、含义解释: Code:即代码域,它通常...
  • RO-dataRW-data、ZI-data的解释

    万次阅读 多人点赞 2019-03-14 17:58:07
    KEIL MDK 查看代码量、RAM使用情况–RO-dataRW-data、ZI-data的解释 KEIL RVMDK编译后的信息 Program Size: Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116 Code是代码占用的空间; RO-data是 Read Only 只读...
  • Program Size: Code=49560 RO-data=7032 RW-data=308 ZI-data=1100180 (数据当然是不一样的哈) 通过查阅keil5的帮助文档(ARM Development Tools),看到样的的一个数据,如图 Code (inc. d...
  • KEIL编译后Program Size: Code=1032 RO-data=336 RW-data=12 ZI-data=1836 的含义 Program Size: Code=1032 RO-data=336 RW-data=12 ZI-data=1836 的含义 Code: 程序所占用的FLASH大小,存储在FLASH. RO-data: Read-...
  • 一、各个名词的介绍 Code:即代码域,它指的是编译器生成的机器指令,这些内容被存储到ROM区。 RO-data:Read Only data,即只读数据...RW-data:Read Write data,即可读写数据域,它指初始化为“非0值”的可读写...
  • Code-data,RO-data,RW-data,ZI-data 程序运行时加载过程 浅谈Keil-MDK创建项目&编译过程 Code-data,RO-data,RW-data,ZI-data 详解 加载过程 RW-data 和 ZI-data 它们仅仅是初始值不一样而已,为什么编译器非要...
  • RW-data=xxx ZI-data=xxx Code 代表执行的代码,程序中所有的函数都位于此处。 RO-data 代表只读数据,程序中所定义的全局常量数据和字符串都位于此处。 RW-data 代表已初始化的读写数据,程序中定义并且初始...
  • KEIL编译器区分RW-data和ZI-data

    千次阅读 2017-10-12 19:24:11
    KEIL工程的编译提示输出信息中有一个语句“Program Size:Code=xx RO-data=xx RW-data=xx ZI-data=xx”,它说明了程序各个域的大小,编译后,应用程序中所有具有同一性质的数据(包括代码)被归到一个域,程序在存储或...
  • Program Size: Code=x RO-data=x RW-data=x ZI-data=x 的含义 Code(代码): 程序所占用的FLASH大小,存储在FLASH. RO-data(只读的数据): Read-only-data,程序定义的常量,如const型,存储在FLASH中。 RW-data(有初始...
  • keilMDK编译完成后,ProgramSize:Code,RO-dataRW-data,ZI-data的意义 转载 2016-02-12 15:27:07 Program Size: Code=344 RO-data=252 RW-data=100 ZI-data=1024 看了多遍,总是忘,这次还是把它分析透了吧,...
  • Program Size: Code=54872 RO-data=8656 RW-data=764 ZI-data=21812 在keil中的map文件可以看到如下信息: Total RO Size (Code + RO Data) 18568 ( 18.13kB) Total RW Size (RW Data + ZI Data) ...
  • 在使用Keil编译器编译时,最后都会打印出信息:Program Size: Code=XX RO-data=XX RW-data=XX ZI-data=XX,我这里实际打印信息如下: Program Size: Code=5688 RO-data=424 RW-data=48 ZI-data=1832 今天来详细...
  • 在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息:Program Size: Code=6320 RO-data=4864 RW-data=44 ZI-data=1636 代表的意思:Code :是程序中代码所占字节大小RO-data :程序中所...
  • 示例:Program Size: Code=138676 RO-data=5876 RW-data=2088 ZI-data=33088 对应的map文件:程序编译后产生的有关芯片所用到所有程序,数据及IO空间的一种映射文件 ===========================================...
  • Keil 编译内存信息:Program size: Code, RO-data , RW-data, ZI-data 学习一、用keil编译程序后会打印对应的内存分配信息,例如如Program Size: Code=97782 RO-data=9578 RW-data=2992 ZI-data=87696 ,如下图所示...
  • 代码占用ROM=Code+(RO-data)+(RW-data) RAM=(RW-data)+(ZI-data) 占用: ROM = 200412 + 5212 = 200k RAM = 1076+60788 = 60k 即将占满ram和rom空间。 工程中有个.map文件可以看到各个...
  • Program Size: Code=796 RO-data=336 RW-data=20ZI-data=1636   FromELF: creating hex file... "myex1.axf" - 0Error(s), 1 Warning(s). 代码2  int main() { constint x=16;  int a,b,c,d...
  • Total ROM Size (Code + RO Data + RW Data)这样所写的程序占用的ROM的字节总数,也就是说程序所下载到ROM flash 中的大小。 RAM size: RW Data + ZI Data (即程序运行的时,RAM使用的空间) 为什么ROM( flash ...
  • 最近一直在研究单片机比较核心的东西,像题目中说的这些,...一.CODE,RO-DATA,RW-DATA,ZI-DATA CODE:顾名思义,就是代码,指程序中代码即函数体的大小,注意程序中未使用的函数也会算在CODE中,也即会占用FLASH...
  • Code, RO-data,RW-data,ZI-data Code表示 程序代码部分 RO-data 表示 程序定义的常量,如:const temp; RW-data 表示 已初始化的全局变量 ZI-data 表示 未初始化的全局变量 RW-data, ZIdata—————————...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 139,910
精华内容 55,964
关键字:

RW-data