一文了解STM32启动过程
1 概述
说明
每一款(芯片)的启动文件都值得去研究,因为它可是你的程序跑的最初一段路,不可以不知道。通过了解启动文件,我们可以体会到处理器的架构、指令集、中断向量安排等内容,是非常值得玩味的。
(STM32)作为一款高端 Cortex-M3系列(单片机),有必要了解它的启动文件。打好基础,为以后优化程序,写出高质量的代码最准备。
本文以一个实际测试代码--START_(TE)ST为例进行阐述。
整体过程
STM32整个启动过程是指从上电开始,一直到运行到 main函数之间的这段过程,步骤为(以使用微库为例):
①上电后(硬件)设置SP、PC
②设置系统(时钟)
③软件设置SP
④加载.data、.bss,并初始化栈区
⑤跳转到C文件的main函数
代码
启动过程涉及的文件不仅包含 startup_stm32f10x_hd.s,还涉及到了MDK自带的连接库文件 entry.o、entry2.o、entry5.o、entry7.o等(从生成的 map文件可以看出来)。
2 程序在Flash上的存储结构
在真正讲解启动过程之前,先要讲解程序下载到 Flash上的结构和程序运行时(执行到main函数)时的S(RAM)数据结构。程序在用户Flash上的结构如下图所示。下图是通过阅读hex文件和在MDK下调试综合提炼出来的。
上图中:
MSP初始值由编译器生成,是主堆栈的初始值。
初始化数据段是.data
stm32怎么使用printf 未初始化数据段是.bss
.data和.bss是在__main里进行初始化的,对于(ARM) Com(pi)ler,__main主要执行以下函数:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论