STM32启动过程浅析

119 阅读1分钟

1.MAP文件浅析

1.1 MDK编译过程文件(11种)

.map 连接器生成的列表文件,对分析程序存储占用情况非常有用

1.2 MAP文件概念和作用

  1. MAP文件是MDK编译代码后,产生的集程序、数据及IO空间的一种映射列表文件
  2. 包括:各种.c文件、函数、符合等的地址、大小引用关系等信息
  3. 分析各.c文件占用 FLASH 和 RAM 的大小,方便优化代码

1.3 MAP文件组成

image.png

2.STM32启动过程

2.1 STM32启动模式(自举模式)

M3/M4/M7等内核复位后,首先:

  1. 从地址0x0000 0000处取出堆栈指针MSP的初始值,该值就是栈顶地址
  2. 从地址0x0000 0004处取出程序计数器指针PC的初始值,该值是复位中断服务函数地址

image.png 在系统复位后,SYSLK的第4个上升沿,BOOT引脚的值将被锁存

2.2 STM32启动过程(内部FLASH启动为例)

image.png

2.3.1 启动文件

  1. 初始化MSP 从 0X0800 0000获取
  2. 初始化PC 从 0x0800 0004获取
  3. 设置堆栈大小
  4. 初始化中断向量表 _Vectors定义
  5. 调用初始化函数 (可选)
  6. 调用_main

2.3.2 Reset_Handler函数

image.png