Code、 RO-data=、 RW-data、ZI-data、
1. 查看码Flash/内存RAM占用大小
工程编译后,双击上图中红框位置,会打开 .map文件,包含了各个函数和文件占用的空间大小和地址。
2. Code-Data,RO-Data,RW-Data,ZI-Data 分别是什么含义
Code-Data:代码占用的空间大小(占用的空间为内部Flash)
RO-Data:只读常量大小(const常量,#define宏常量。一般用于不需要更改的数据)
RW-Data:初始化了的变量大小
ZI-Data:没有初始化的变量
工程总计占用的 Flash大小:Total ROM Size (Code + RO Data + RW Data)
工程总计占用的 RAM大小:Total RW Size (RW Data + ZI Data)
编译器显示的单位是 Byte字节。
3. 单片机中的Flash是干什么的?以及为什么占用Flash的大小为 Code + RO Data + RW Data
Tips:单片机与电脑/linux嵌入式 在代码运行的空间上不同。大多数单片机,代码都是在Flash中运行的。而电脑/linux嵌入式,是将代码从存储介质(可能是硬盘/SD卡/EMMC/NAND)中读出,拷贝到RAM,再在RAM中去执行代码。
因为单片机的运行速度一般都比较慢,Flash的读取速度足够跟得上代码运行的速度。并且在单片机内部都会有Flash预读操作,相当于提前读取Flash代码段放入缓存,CPU运行代码时直接从缓存中读,不需要等待Flash读取完成,从而加快单片机的读取和运行速度。代码在Flash中运行,这样做的好处是可以减少RAM的占用,减少生产的硬件成本。
而电脑/linux嵌入式则不一样,运行速度较为迅速,Flash的读取速度远远跟不上代码运行的速度,如果这时还在Flash中运行代码,则会严重影响代码的执行速度。所以要先将代码从存储介质(可能是硬盘/SD卡/EMMC/NAND)中读出,拷贝到RAM,在RAM中去执行代码。
特别注意:并非所有的单片机都是在Flash中运行代码,像stm32H7系列、NXP 的i.MX RT系列 就是代码在RAM中运行的。这类MCU的特点是运行速度非常快,远超一般单片机。它们内部Flash更像 Cortex-A嵌入式处理器中的 BootROM,内置Flash很小,几乎都是用来执行出厂配置代码的,用户很少用,都是将代码存放于外置的Flsh中。
还有一种情况,就是系统比较复杂的情况,也需要将代码运行于RAM上。用户可自行将代码拷贝到RAM中运行,并用函数指针去调用RAM中的注册函数。
4. 常用单片机的 Flash/RAM 空间大小
型号 |
Flash Size |
RAM Size |
STM32F030f4p6 | 16KBytes | 4KBytes |
STM32F030c8t6 | 64KBytes | 8KBytes |
STM32F030rct6 | 256KBytes | 32KBytes |
STM32F103c8t6 | 64KBytes | 20KBytes |
STM32F103rct6 | 256KBytes | 48KBytes |
STM32F103zet6 | 512KBytes | 64KBytes |
STM32F407vet6 | 512KBytes | 192KBytes |
STM32F407zet6 | 512KBytes | 192KBytes |
STM32F407zgt6 | 1024KBytes | 192KBytes |
相关链接:为什么单片机的代码在Flash中运行,单片机的代码运行位置跟电脑有什么不同?
Code、 RO-data=、 RW-data、ZI-data、相关推荐
- KEIL 中的RO、RW和ZI DATA所代表的意思
RO段.RW段和ZI段 要了解RO,RW和ZI需要首先了解以下知识: ARM程序的组成 此处所说的"ARM程序"是指在ARM系统中正在执行的程序,而非保存在 ...
- ARM编译中的RO、RW和ZI DATA区段
ARM编译中的RO.RW和ZI DATA区段 ARM编译中的RO.RW和ZI DATA区段 ARM程序(指在ARM系统中正在执行的程序,而非保存在ROM中的bin文件)的组成 一个ARM程序包含3部分 ...
- RO段、RW段和ZI段 --Image$$??$$Limit 含义
要了解RO,RW和ZI需要首先了解以下知识: (1) ARM程序的组成 此处所说的"ARM程序"是指在ARM系统中正在执行的程序,而非保存在ROM中的bin ...
- linux硬盘ro改为rw,RO,RW,ZI 和scatter file详解(转载)
要了解RO,RW和ZI需要首先了解以下知识: (1) ARM程序的组成 此处所说的"ARM程序"是指在 ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件 ...
- ARM中的RO、RW和ZI DATA
一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将 ...
- stm32 ARM中的RO、RW和ZI DATA
一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将 ...
- RO段、RW段和ZI段 转载:RO段、RW段和ZI段
RO段.RW段和ZI段 转载:RO段.RW段和ZI段 2009-04-02 15:23 原帖地址 Posted by gavinkwoe 一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而 ...
- RO段、RW段和ZI段
RO段.RW段和ZI段 RO段.RW段和ZI段 Posted by gavinkwoe 一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规 ...
- python可视化多个机器学习模型在独立测试集(test data set)上面的AUC值、可视化模型效能
python可视化多个机器学习模型在独立测试集(test data set)上面的AUC值.可视化模型效能 # x_lables为模型名称列表,包括,逻辑回归.朴素贝叶斯.支持向量机.随机森林.xgb ...
- ARM中的RO段、RW段和ZI段的区别
1 前言 一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困 ...
最新文章
- dojo 学习笔记之dojo.query - query(id) 与query(class)的差别
- 自己对Delphi中使用正则表达式的研究心得
- ios 打开评论界面
- 【LeetCode】LeetCode之乘积为正数的最长子数组长度——暴力枚举+动态规划+Kadane算法
- Redis—主从复制
- 典型医学设计实验GEO数据分析 (step-by-step) - 数据获取到标准化
- (8)Node.js 模块介绍
- mac下使用mysql
- Java实现MongoDB的日期(Date)分组功能
- matlab2c使用c++实现matlab函数系列教程- poly函数
- 交通信息工程 实验四:交通仿真实验(一)
- 20135202闫佳歆——信息安全系统设计基础第五周学习总结
- 教师资格证面试缴费找不到服务器,2016年教师资格证考试报名网上缴费常见问题...
- 首款搭载HarmonyOS,分布式“智慧眼”!华为智选首款搭载HarmonyOS的智能摄像头正式发布...
- 复化梯形公式c语言实验,实验4_数值积分与数值微分(完成版).doc
- 手机基站伪装潜伏引强烈关注
- 二次型(Quadratic Form)
- 三星认为 LG 零售店销售苹果 iPhone 违约:也应该销售 Galaxy 手机
- CVPR2019目标检测汇总
- Java毕设项目大学生租房平台(java+VUE+Mybatis+Maven+Mysql)
热门文章
- Sun Solaris系统管理命令简介
- Mac安装MPV播放器
- “Hacker_R_US”因炸弹威胁和DDoS勒索被判8年监禁
- 【VBA研究】用Ping命令测试IP地址是否通达
- 网页常用字体(CSS样式)记录:
- wordpress友联_WordPress如何添加友情链接
- wordpress友联_为你的wordpress添加独立的友情链接页面吧
- 5g的八大关键指标_5G的七大关键性能指标5G对生活的改变新5G时代的来临身边巨变...
- 1命名规则 sentinel_sentinel1 GRD数据和SLC数据预处理有什么区别吗?预处理流程是怎样的?...
- linux 删除所有a字符串,linux文本处理三剑客(grep、sed、akw)命令选项整理