当前位置: 首页 > news >正文

STM32启动流程 和 map文件的作用

一,启动流程

        1. 复位/上电

        2. 根据 BOOT0/BOOT1 确定程序从哪个存储位置执行

                

        3. 初始化 SP 及 PC 指针

                将 0X08000000 位置的栈顶地址存放在 SP 指针中

                将 0x08000004 位置存放的向量地址装入 PC 程序计数器

        4. 初始化系统时钟

        5. 初始化用户堆栈

        6. 进入main函数

二,map文件

        map 文件是 MDK 编译代码后,产生的集程序、数据及IO空间的一种映射列表文件。简单来说就是包括了:各种 .c 文件、函数、符号等的地址、大小、引用关系等信息。
 

        作用: 用于分析各 .c 文件占用 FLASH 和 RAM 的大小,方便优化代码。

map 文件大致可以分为五大部分,每部分的作用如下:

1. 模块、段(入口)交叉引用(Section Cross References):描述了各文件之间函数的调用关系,有助于理解各个源文件如何相互关联。

2. 移除未使用的模块(Removing Unused input sections from the image):描述了工程中未用到

而被删除的冗余程序段,有助于优化代码,降低内存负担。

3. 映射符号表(Image Symbol Table):描述了各符号(程序段、数据)在存储器中的地址、类型、大小等信息,对于理解程序的内存布局以及定位特定代码或数据段非常有用。

4. 内存(映射)分布(Memory Map of the image):描述了各程序段(函数)在存储器中的地址及占用大小,有助于分析程序的内存占用情况。

5. 映射组件大小(Image component sizes):给出了整个映像代码(.o)占用空间的汇总信息,包括代码、只读数据、已初始化读写数据、未初始化读写数据等的大小,有助于了解程序的总体内存使用情况。

MAP文件的这五部分提供了对程序内存布局、函数调用关系、以及各模块占用情况的全面分析,是STM32开发中重要的优化和调试工具。

map 文件相关的一些基本概念

段(section):描述映像文件的代码和数据块

RO:Read-Only的缩写,包括RO-data(只读数据)和RO-code(代码)

RW:Read-Write的缩写,主要是RW-data,RW-data由程序初始化初始值

ZI:Zero-initialized的缩写,主要是ZI-data,由编译器初始化为0。

.text:与RO-code同义

.constdata:与RO-data同义

.bss:与ZI-data同义

.data:与RW-data同义

http://www.lryc.cn/news/387424.html

相关文章:

  • 深度解析华为仓颉语言
  • Android简介-历史、API等级与体系结构
  • SpringBoot:使用Spring Batch实现批处理任务
  • 用JQueryUI库在.net MVC中配置datepicker(时间日期控件)
  • 算法:链表
  • Redis基础教程(一):redis配置
  • 短视频矩阵系统:打造品牌影响力的新方式
  • 品牌推广的三个阶段与核心内容,一篇文章全掌握!
  • 队列与循环队列
  • python基础问题记录
  • Qt之饼图(Pie Graph)
  • Java项目Git提交规范
  • flink-触发器Trigger和移除器Evictor
  • 【力扣 28】找出字符串中第一个匹配项的下标 C++题解(字符串匹配)
  • 软件构造 | Design Patterns for Reuse and Maintainability
  • Python数据分析-股票分析和可视化(深证指数)
  • Linux如何安装openjdk1.8
  • 【LLVM】LTO学习
  • 事务的特性-原子性(Atomicity)、一致性(Consistency)、隔离性(Asolation)、持久性(Durability)
  • redis哨兵模式(Redis Sentinel)
  • 【牛客】牛客小白月赛97 题解 A - E
  • Spring Boot中泛型参数的灵活运用:最佳实践与性能优化
  • MySQL建表时的注意事项
  • Advanced RAG 09:『提示词压缩』技术综述
  • (13)DroneCAN 适配器节点(二)
  • 摸鱼大数据——Spark基础——Spark环境安装——Spark Local[*]搭建
  • 函数内部结构分层浅析(从MVC分层架构联想)
  • 【three.js案例二】时空隧道
  • 动手学深度学习(Pytorch版)代码实践 -计算机视觉-48全连接卷积神经网络(FCN)
  • 【Python游戏】猫和老鼠