总:STM32——学习总纲
参考文件:
STM32 MAP文件浅析-V1.1
STM32 启动文件浅析_V1.2
Cortex-M3权威指南(中文)、ARM Cotrex-M3权威指南(英文).zip
一、Map文件解析
1.1 MDK编译过程文件
在编译中,会生成11种编译过程文件,可以设置输出到一个文件夹,如output文件夹。
1.2 Map文件概念与作用
作用:
1.3 Map文件组成*
1.4 Map分析 Flash/RAM 大小
1.4.1 MDK output文件夹输出配置
1.4.2 输出map文件查看方式:
a.
b.
1.4.3 分析map文件结构
1.4.3.1 函数的调用关系(Section Cross References)
i.main, i表示符号的入口
1.4.3.2 删除的冗余程序段(Removing Unused input sections from the image.)
1.4.3.3 映像符号表(Image Symbol Table)
包含局部符号,全局符号。
i.delay_us,表是函数入口地址
函数一般不带static都是全局符号
1.4.3.4 映像内存分布(Memory Map of the image)
1.4.3.5 映像组件大小(Image component sizes)
1.4.3.5.1 SRAM/FLASH 大小计算:
FLASH = Code + RO+RW
SRAM = RW + ZI
库的文件不开源(Library),无法优化;一般优化用户代码(Object)
1.4.3.6 map文件 SRAM/FLASH 总结
1.4.3.7 启动文件堆、栈分配(startup_stm32f103xe.s)
二、STM32启动过程
2.1 STM32 启动模式(F1/F4/F7/H7)/自举模式
2.1.1 前置
堆栈指针MSP指向栈顶地址(0x0000 0000 的值)
程序计数器指针PC指向复位向量(0x0000 0004 的值) → Reset_Hdlr(中断向量表复位向量)
启动模式的设置,也就是指定MSP和PC的定位。
2.1.2 启动模式(F1)
也就是更改启动模式,复位下载重启
2.1.3 启动模式(F4)
2.1.4 启动模式(F7)
2.1.5 启动模式(H7)
2.2 STM32 启动过程
2.2.1 启动文件 startup_stm32xxx.s
2.2.2 Reset_Handler函数
2.2.3 堆栈简介
---》(1.4.3.7 启动文件堆、栈分配(startup_stm32f103xe.s))
2.2.4 __Vectors 中断向量表
存放的是函数首地址,函数指针。
2.2.4 启动过程图解
2.2.4.1 map文件查询地址
具体启动的实际地址可查询map文件