STM32L011中map文件中内存分析

0 Preface/Foreword

1 内存类型

STM32L011包括的内存类型为:RAMROMFlash)。

2 内存对应的代码场景

项目编译之后,从map文件中可以看到有++三种类型++的内存:

  • readonly code memory (Flash/ROM)
  • readonly data memory(Flash/ROM)
  • readwrite data memory(RAM)

|----------------|----------|------------|----------|
| 分类 | 对应硬件 | 掉电是否丢失 | 备注 |
| readonly code | Flash | 否 | 程序逻辑 |
| readonly data | Flash | 否 | const变量 |
| readwrite data | RAM | 是 | 变量、栈、缓冲区 |

2.1 readonly code memory(只读代码内存)

  • 含义:指程序的可执行指令(Machine Code)
  • 存储位置:Flash(ROM)
  • 包含内容:
    • 编写的所有函数代码(C语言逻辑转换成的汇编指令)
    • 中断向量表(.intvec)
    • 启动代码(startup code)
  • 对资源的影响:占用16KB Flash的空间,不占用RAM。

2.2 readonly data memory(只读数据内存)

  • 含义:程序中定义的常量和字面量
  • 存储位置:Flash (ROM)
  • 包含内容:
    • 使用const修饰的变量
    • 字符串字面量(printf("Hello\n");中的Hello)
    • 由于他们在运行时不会改变所以直接放在Flash中,节省宝贵的RAM
  • 对资源影响:占用16KB Flash的空间,不占用RAM。

2.3 readwrite data memory(读写数据内存)

  • 含义:程序运行期间值会发生变化的变量
  • 存储位置:RAM
  • 包含内容:
    • .data(已初始化数据):有初始值的全局/静态变量(如int x = 10;)。其初始值存放在flash,启动时拷贝到RAM;
    • .bss(零初始化数据):没有初始值或初始值为0的全局/静态变量(如int y;)。启动时由代码自动清零。
    • CSTACK(栈):局部变量、函数调用信息、中断现场保护。
    • HEAP(堆):动态内存分配(如果禁用了HEAP,这部分为0)
  • 对资源的影响:这个是最需要关注的数字,该值必须小于STM32L011的2048字节(2KB)
相关推荐
XiHongShi20162 小时前
STM32H7 FLASH和SRAM标准例程
stm32·单片机·嵌入式硬件
单片机杂货铺3 小时前
【单片机毕业设计选题】基于单片机的智能牛奶保鲜箱设计
人工智能·stm32·单片机·物联网·毕业设计·课程设计
捷瑞电子工坊14 小时前
FreeRTOS任务管理:从入门到实践(标准库版)
stm32·嵌入式·freertos·实时操作系统·任务管理·标准外设库·任务挂起与恢复
ye1501277745521 小时前
12V转3V-5V2A电位器无极调光调速WT7027
stm32·单片机·嵌入式硬件
无损检测小白白1 天前
STM32F407 串口3 DMA收发-标准库
stm32·单片机·嵌入式硬件
嵌入式阿蔡1 天前
传感器_02:MPU6050 六轴 IMU 姿态入门——从一串看不懂的数,到一个不漂的角度
网络·stm32·单片机·嵌入式硬件·嵌入式实时数据库
江屿风1 天前
【STM32基础篇】【嵌入式生态问题及历史追溯】流食般投喂
大数据·开发语言·人工智能·笔记·stm32·嵌入式硬件
意法半导体STM321 天前
【官方原创】STM32CubeMX 6.18.0新版本发布
stm32·单片机·嵌入式硬件·stm32cubemx·cube开发工具
恒锐丰小瑞1 天前
率能SS8833T 15V/1A/双通道H桥驱动芯片,低静态电流与过温报警输出(FAULT),用于POS打印机/机器人/电池玩具
stm32·单片机·机器人
振南的单片机世界1 天前
IDLE中断:串口收完一帧数据,硬件自动“吹哨”
arm开发·stm32·单片机·嵌入式硬件