,
启动文件的作用便是
负责执行微控制器从“复位”到“开始执行
main
函数”中间这段时间
(称为启动过程)所必须进行的工作。最为常见的
51
,
A
VR
或
MSP430
等微控制器当然也
有对应启动文件,
但开发环境往往自动完整地提供了这个启动文件
,不需要开发人员再行
干预启动过程,只需要从
main
函数开始进行应用程序的设计即可。
话题转到
STM32
微控制器,无论是
keiluvision4
还是
IAR EW
ARM
开发环境,
ST
公司
都
提供了现成的直接可用的启动文件
,程序开发人员可以直接引用启动文件后直接进行
C
应用程序的开发。这样能大大减小开发人员从其它微控制器平台跳转至
STM32
平台,也降
低了适应
STM32
微控制器的难度。
相对于
ARM
上一代的主流
ARM7/ARM9
内核架构,新一代
Cortex
内核架构的启动方
式有了比较大的变化。
ARM7/ARM9
内核的控制器在复位后,
CPU
会从存储空间的绝对地
址
0x000000
取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地
址为
0x000000
(
PC = 0x000000
)同时中断向量表的位置并不是固定的。而
Cortex-M3
内核
则正好相反,有
3
种情况
:
1
、
通过
boot
引脚设置可以将中断向量表定位于
SRAM
区,即起始地址为
0x2000000
,同
时
复位后
PC
指针位于
0x2000000
处
;
2
、
通过
boot
引脚设置可以将中断向量表定位于
FLASH
区,即起始地址为
0x8000000
,同
时
复位后
PC
指针位于
0x8000000
处
;
3
、
通过
boot
引脚设置可以将中断向量表定位于内置
Bootloader
区,
本文不对这种情况做论
述;
而
Cortex-M3
内核规定,
起始地址必须存放堆顶指针
,
而第二个地址