stm32的flash和ram占用情况
stm32的flash和ram占用情况
在stm32中flash就是ROM,掉电数据不会丢失;(通常保存着text段、Code、Ro-data、Rw-data)
RAM就是运行内存,掉电数据就丢失;(通常保存着堆、栈、bss段、data段、ZI-data、RW-data)
编译生成的主要有代码区、只读数据区、读写数据区、初始化值为0数据区。FLASH由代码区、只读数据区 和 读写数据区占用。RAM由读写数据区 和 初始化值为0 的数据区占用。
KEIL5 编译结果分析
在keil中编译结果如下图:
打开生成的map文件拉到最后可看到如下:
编译结果里面几个的含义
Code:代码空间,本质是ARM指令( FLASH)。
RO-data:即 Read Only-data, 表示程序定义的常量,如 const 类型( FLASH)。
RW-data:即 Read Write-data, 非0初始化的全局和静态变量占用的RAM大小,同时还要占用等量的ROM大小用于存放这些非0变量的初值(FLASH+RAM)。
ZI-data:即 Zero Init-data, 0初始化的内存区的大小(该区域3个用途:0初始化的全局和静态变量+堆区+栈区)(RAM)。
由上可知:
程序占用FLASH=Code + RO-data + RW-data 即map文件中ROM size
程序占用RAM = RW-data + ZI-data 即map文件中RW size
RW-data为什么会即占用Flash又占用RAM空间?
由前文知道RAM掉电数据会丢失,RW-data是非0初始化的数据,已初始化的数据需要被存储在掉电不会丢失的FLASH中,上电后会从FLASH搬移到RAM中。
我们都知道在烧写程序的时候,需要烧写bin文件或者hex文件到STM32的flash中,被烧写的文件称为映像文件image。image的内容包含这三个Code 、 RO-data 和 RW-data。
为什么不包含ZI-data呢?通过上一个问题大家可能应该理解了,因为ZI数据是0,没必要包含,只要在程序运行前把ZI数据区域一律清零即可,包含进去反而浪费Flash存储空间。
型号 | FLASH(KB) | RAM(KB) | FOOTPRINT |
---|---|---|---|
GD32F105RBT6 | 128 | 64 | LQFP64 |
VSCODE 编译 text data bss dec 字段含义
text:代码段,存储在FLASH中
data:初始化数据 数据段
bss:未初始化数据 数据段
dec = text + data + bss
stm32的flash和ram占用情况相关推荐
- 【IoT】STM32 查看 FLASH 和 RAM 使用情况(RO-data、RW-data、ZI-data)
1.KEIL MDK 编译后的信息 Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116 1)Code 是代码占用的空间: 2)RO-data 是 Re ...
- stm32 FATFS文件系统如何减少Flash和RAM占用,FATFS移除中文文件名,FATFS移除动态内存
FATFS 下载地址:FATFS源码下载 FATFS 移植的过程中,主要用到三个文件:ff.c.diskio.c.ffconf.h. 移植FATFS不需要过多的操作,过程很是方便,步骤为: 补全 di ...
- stm32 Keil编译后查看代码/内存占用空间,Flash/RAM占用大小,Code-Data,RO-Data,RW-Data,ZI-Data是什么含义
1. 查看码Flash/内存RAM占用大小 工程编译后,双击上图中红框位置,会打开 .map文件,包含了各个函数和文件占用的空间大小和地址. 2. Code-Data,RO-Data,RW-Data, ...
- STM32 内部Flash读写 程序源码 [已验证]
目录 STM32 内部Flash带缓存读写 程序源码 0 Macro 1.Flash_Erase 2. Flash_Read_Byte 3.Flash_Write_NoBuffer 4.Flash_W ...
- stm32内部Flash读写
文章目录 1.stm32内部flash介绍 2.读写驱动编写 3.源码 上篇文章讲到了STM32来驱动外部flah的操作,flash真是好东西啊,内存大,能存的东西多,这样我们就可以用它来做一些大点的 ...
- KEIL MDK 查看代码量、RAM使用情况--Code、RO-data、RW-data、ZI-data的解释
KEIL MDK 查看代码量.RAM使用情况--Code.RO-data.RW-data.ZI-data的解释 原创李宜君 最后发布于2019-01-16 09:10:19 阅读数 146 收藏 展 ...
- map文件分析 stm32_使用STM32内部Flash额外的空间来存储数据
本次分享关于STM32内部FLASH的笔记. STM32 芯片内部的 FLASH 存储器,主要用于存储我们代码.如果内部FLASH存储完我们的代码还有剩余的空间,那么这些剩余的空间我们就可以利用起来, ...
- STM32F4内的FLASH和RAM
STM32F4内的FLASH和RAM(CCM) 单片机的flash和RAM,可以简单理解为电脑的硬盘和内存条. FLASH 什么是FLASH?FLASH的作用? 掉电不丢失数据,能够存储数据的存储器, ...
- 为什么STM32设置Flash地址0x08000000而不是0x00000000?STM32的启动过程
STM32F103ZE芯片存储空间的地址映射关系图. 在MDK编译程序设置ROM和RAM地址时候发现: IROM1为片上程序存储器,即片上集成的Flash存储器,对该处理器Flash大小为512KB, ...
最新文章
- shell 边边角角
- .NET Core微服务之基于Ocelot+IdentityServer实现统一验证与授权
- Linux新手要了解的十个知识点
- 【Problem solved】 error C2665: “loadimage”: 2 个重载中没有一个可以转换所有参数类型...
- 《Linux From Scratch》第一部分:介绍 第一章:介绍-1.3. 更新日志
- python post请求rsa加密_Python的加密方式:RSA加密
- halcon使用直线标定板,标定相机内参代码
- JVM优化系列-Java对象引用与可触及强度
- 计算机主机硬件详细介绍,计算机系统的硬件和系统软件详细介绍
- 阿里依然在“飙车”!第一财季净利润309.49亿元 同比增长54%
- 让计划任务生成的文件中包含当前日期
- 小学在班里排第几名家长才比较放心?
- python 绘制柱状图
- 清除SQLServer日志
- Java菜鸟教程 递归算法与Scanner类
- 左耳朵耗子 | 程序员如何用技术变现?
- python 处理xml
- 微分几何笔记(3) —— Frenet标架及Frenet方程组
- Coursera课程自然语言处理(NLP) 借助概率模型做自然语言处理 deeplearning.ai
- VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-S CALE IMAGE RECOGNITION-论文笔记