STM32再启动的时候RAM首先分配给使用到的全局变量,及调用库占用的一些数据(不太清楚是什么数据),然后再将剩余的空间分配给Heap和stack。

    ****以下是网上关于Heap和Stack的说:****

(1)栈区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值等,其操作方式类似于数据结构中的栈。

(2)堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。分配方式类似于数据结构中的链表。 Malloc函数分配的地址在堆区。

(3)全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统自动释放。

(4)文字常量区:常量字符串就是存放在这里的。

(5)程序代码区:存放函数体的二进制代码。

RAM分区:
栈区访问是从高地址向低地址,
堆区访问是从低地址向高地址。

Map文件的阅读:

.data(数据段) 初始化的全局变量和静态变量
.bss(BSS段)未初始化的全局变量和静态变量,编译器自动初始化。

在MDK(Keil)编译过程中,内存的划分如下:
Code是存储程序代码的。

RO-data是存储const常量和指令。

RW-data是存储初始化值不为0的全局变量。

ZI-data是存储未初始化的全局变量或初始化值为0的全局变量。

Flash=Code + RO Data + RW Data;

RAM= RW-data+ZI-data;

此内存划分暂未包括堆栈,堆栈会在程序运行时,占用RAM。
堆栈的内存占用就是MDK里,RAM分配给RW-data+ZI-data之后的地址开始分配的。

如何查看malloc申请的堆区地址:

unsigned char *str;
str = (unsigned char *)malloc(0x100000);
**sysprintf("str addr111 =%x\n\r",str);**
free(str);

注意:malloc申请的空间是在堆区里。

ARM芯片内部堆栈的理解及MAP文件的查看相关推荐

  1. ARM 之十 ARMCC(Keil) map 文件(映射文件)详解

    在看这篇文章之前 需要对 ARM ELF 文件有一定的了解.了解什么是域(Region).节(Section,也称为节区).段(Segment).镜像(Image).镜像文件(Image File)等 ...

  2. 结合drwtsn32.log和.Map文件的查看、定位程序错误位置

    写下大致步骤方便以后查找 参考内容在两个链接的后半部分 http://blog.csdn.net/nokianasty/article/details/8504432 http://blog.chin ...

  3. STM32中堆栈的理解

    STM32中堆栈的理解 关于程序的内存分配 栈区(stack):由编译器自动分配和释放,存放函数的参数与返回值.局部变量等. 堆区(heap):由程序员分配管理,一般未使用(malloc函数). 全局 ...

  4. 通俗来理解 ARM芯片内核,架构,指令集,软核和硬核之间的关系

    1.单片微型计算机: 简称单片机,简单来说就是集CPU(运算.控制).RAM(数据存储-内存).ROM(程序存储).输入输出设备(串口.并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,C ...

  5. Arm芯片上电启动流程剖解

    关键字: stepping stone:(可以看做是Internal RAM) IROM (Internal ROM):固化在CPU内部ROM里的一段代码,它的运行叫做BL0. IRAM: 因为IRO ...

  6. ARM芯片外围电路介绍

    任何一款处理器都有它的外围电路,其中包括电源电路,复位电路,晶振电路,外部存储器电路等等.通过阅读相关书籍以及实际的使用经验,这里简单介绍一下ARM芯片外围电路,类似电源电路.复位电路.晶振电路等大家 ...

  7. ARM芯片上电启动流程

    下图是大多数开发板所有的一个存储单元框架,接下来以此图为基础描述ARM芯片的上电启动流程. 我们首先来了解几个关键词: IROM (Internal ROM):芯片内部固化存储代码的存储器 IRAM ...

  8. ARM芯片、内核、架构、指令集的联系与区别

    问题1:单片机和CPU的区别 在嵌入式领域ARM芯片和CPU有什么区别呢?其实随着嵌入式科技的不断发展,单片机(像ARM芯片)和CPU的界限越来越模糊,我们暂且可以认为ARM芯片就是一个CPU,或者暂 ...

  9. 嵌入式系统(二):ARM芯片及体系架构(上)

    文章结构 一. ARM芯片主要类别 二.ARM Cortex-M3简介 1.Cortex-M3功能说明 2.Cortex M3的总线接口 3.寄存器组说明 (1)低组寄存器,高组寄存器 (2)堆栈指针 ...

最新文章

  1. CKeditor 配置使用
  2. Django中Mysql数据库的使用
  3. python关联规则挖掘_Python3:文本关联规则挖掘实现案例分析
  4. SQLite数据库简介
  5. jzoj6824-[2020.10.17提高组模拟]英雄联盟【期望】
  6. centos6.7x86_64php7安装笔记 new
  7. OpenCV之图像梯度(笔记11)
  8. Exchange Server 2016 独立部署/共存部署 (七)—— DAG功能测试
  9. opc 多点位一次性读_如何使用Excel通过OPC访问WinCC的实时数据
  10. AngularJS app.run()文档?
  11. Agisoft Metashape Professional for Mac(三维建模软件)
  12. 关注Linux防火墙之介绍iptables与ufw命令
  13. 用户服务协议和隐私政策
  14. 《万国觉醒》之游戏战报FreeMarker模板引擎实现
  15. 屏幕录像专家使用手册
  16. js微信抢红包脚本代码_autojs抖音抢红包脚本!源码分享
  17. 高通开发笔记---yukon worknote
  18. Win10:解决Win10的录音设备只能录制系统内部声音无法录制麦克风声音的问题
  19. OO第二单元电梯作业总结
  20. 网站制作系列教程--前端代码

热门文章

  1. 第21届国际足联世界杯观后感
  2. Error starting userland proxy: listen tcp4 0.0.0.0:8005: bind: address alrea
  3. VB完全控制IE浏览器,操作ie对象,响应ie事件
  4. trueOS能装linux软件,TrueOS 17.12发布下载,一款基于FreeBSD的桌面Linux系统
  5. 吉林大学计算机学院学位预警,长春新区发布2021年学位预警!7所学校学位告急!...
  6. Android关于网络访问app应用开发相关的异常总结
  7. 路路通软件android版,家校路路通app
  8. ios绘图_使用Pencilkit轻松将绘图功能添加到ios应用
  9. 最简单DIY基于ESP32CAM的物联网相机系统⑥(用上位机VS2013 MFC实现WIFI图传)
  10. Mac 共享WiFi给任意设备(Android,Iphone等等)