1. 堆、栈、flash、ROM、RAM、bss段、data段、text段、Code、Ro-data ZI-data、RW-data的区别?

1.1 堆、栈简介

堆栈是指在stm32启动文件中定义的那一段head和stack,是跟在data段和bss段后面的一块空间,要区别于操作系统里的线程栈。详情可查看.map文件
在stm32中,通常堆向高地址增长(向上增长),栈向低地址增长(向下增长);

  • 堆:是用户调用malloc()时申请的内存;
  • 栈:是提供给局部变量使用的,即由c语言机制自动申请和释放;

1.2 flash、ROM、RAM的区别

  • 在stm32中flash就是ROM,掉电数据不会丢失;(通常保存着text段、Code、Ro-data、Rw-data)
  • RAM就是运行内存,掉电数据就丢失;(通常保存着堆、栈、bss段、data段、ZI-data、RW-data)

1.3 通常stm32在keil里编译完后被分成5个内存段(堆、栈、bss段、data段、text段)

以下存储在RAM

  • 堆区:在启动文件里分配,作为用户主动申请时的空间,如调用malloc()
  • 栈区:在启动文件里分配,作为局部变量自动申请和释放空间的变量(也有说是编译器分配的空间)
  • 全局区和静态区(bss+data):存放全局变量,静态变量的区域;其中bss段(ZI-data)存放未初始化的全局变量和静态变量;data段(RW-data)存放初始化后的全局变量和静态变量;

以下存储在flash(text段)

  • 文字常量区:宏,常量字符串等存放区域;(RO-data)
  • 程序代码区:程序代码块存放区域;(Code)

2. map文件最后面部分表达的意思

Total RO Size (Code + RO Data) 66092 ( 64.54kB)
Total RW Size (RW Data + ZI Data) 9256 ( 9.04kB)
Total ROM Size (Code + RO Data + RW Data) 66672 ( 65.11kB)

  • Code + RO Data:text段,即文字常量和程序代码区;
  • RW Data + ZI Data:bss段和data段,即全局变量和静态变量区;
  • Code + RO Data + RW Data:text段+data段组成总的ROM,即工程代码在flash里占的空间大小;不包含ZI Data是因为,它里面的数值是未初始化或初始化为0的,所以在启动系统的时候直接将这块RAM清0即可。而RW Data是在RAM中使用的,为什么需要存储到flash,是因为这部分变量都是有初始化值的,如果只存在RAM中,在掉电后数据就丢失了,所以需要在flash中存一份。

stm32中堆、栈、flash、ROM、RAM、bss段、data段、text段、Code、Ro-data、 ZI-data、RW-data简介相关推荐

  1. STM32查看工程内存/Flash/ROM使用情况

    先编译工程,然后双击下图中的红框位置 然后会打开一个"工程名.map"页面,以上图为例则是"OLED.map" 光标直接拉到最下面 Total RO  Size ...

  2. linux 目标文件(*.o) bss,data,text,rodata,堆,栈

    学习于:http://blog.csdn.net/sunny04/article/details/40627311 linux目标文件 一个简单的程序被编译成目标文件后的结构如下: 注:初始化为0在此 ...

  3. STM32——.bss .data .text 与Code, RO-data , RW-data, ZI-data的关系

    核心就是RAM和ROM的作用和区别 1 .bss .data .text 1.1 bss段: bss段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域. bss是英文B ...

  4. STM32F4内的FLASH和RAM

    STM32F4内的FLASH和RAM(CCM) 单片机的flash和RAM,可以简单理解为电脑的硬盘和内存条. FLASH 什么是FLASH?FLASH的作用? 掉电不丢失数据,能够存储数据的存储器, ...

  5. keil STM32中sct 分散加载文件学习

    sct 分散加载文件简介 MDK 生成一个以工程名命名的后缀为 *.sct 的分散加载文件 (Linker Control File,scatter loading),链接器根据该文件的配置分配各个节 ...

  6. 计算机专业的教学内容落后实例,中职《Flash动画制作》课程教学改革

    中职<Flash动画制作>课程教学改革 来源:用户上传 作者: 李绍园 作者简介:李绍园(1981-),女,广东惠州市博罗中等专业学校计算机助理讲师.研究方向:计算机教育教学.(广东 惠州 ...

  7. Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的重温

    一.C程序的内存分配 1.栈区(stack) 由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区(heap) 一般由程序员分配释放,若程序员不释放,程序 ...

  8. 【嵌入式】Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的分配地址

    Ubuntu.stm32下的C程序中堆.栈.全局.局部等变量的分配地址 一.总体介绍 1.栈区(stack) 2.堆区(heap) 3.全局区(静态区) (1).bss段 (2).data段 4.常量 ...

  9. STM32对SD卡数据读取和在Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的分配地址的对比分析

    一.SD卡协议原理 1.SD卡简介 SD存储卡是一种基于半导体快闪记忆器的新一代记忆设备,由于它体积小.数据传输速度快.可热插拔等优良的特性,被广泛地于便携式装置上使用,例如数码相机.平板电脑和多媒体 ...

最新文章

  1. vim block vim_如何不再害怕Vim
  2. What is Gensim?
  3. (转帖)开源容器集群管理系统Kubernetes架构及组件介绍
  4. 谜题39:您好,再见!
  5. 如何分析及处理 Flink 反压?
  6. Wireshark coloring rules tips
  7. java俄罗斯方块简单代码_Java简易俄罗斯方块
  8. Eclipse安装WindowsBuilder失败解决方法
  9. 不是复制硅谷,而是与硅谷建立人脉
  10. 服务器装凤凰系统,云服务器安装凤凰os
  11. deepin 惠普打印驱动安装
  12. 如何成为优秀的程序员?
  13. 360wifi驱动linux驱动安装,360WiFi驱动安装使用教程,详细图文版
  14. 涉密计算机病毒库升级管理,涉密计算机管理制度.doc
  15. js 中日期 转换成时间戳 例如2020-12-19 转换为时间戳
  16. 《腾讯网UED体验设计之旅》
  17. 行车路线(改)(图的应用)
  18. MTCNN开源训练(PNet训练)
  19. Unity2019中的android动态申请权限(Permissions)
  20. Windows定时开关机

热门文章

  1. 护理学跨考计算机专业,什么是跨专业考研?
  2. 3分钟搞明白信用评分卡模型模型验证
  3. Elastic:配置 Elasticsearch 服务器 logs
  4. 可并堆——左偏树 Leftist Heap
  5. 仿大逃杀源码_破咒不是您的典型大逃杀
  6. php rpm是什么,1. 区分 rpm -qi -qf -ql -qa四个不同选项组合的作用?
  7. 【转载】完全版线段树 by notonlysuccess大牛
  8. 彻底消除电脑中的流氓软件与广告弹窗
  9. python的实验报告大一心理_Python程序设计实验报告: 实验六
  10. 利用python爬取网易云歌手top50歌曲歌词