介绍启动过程之前我们先介绍下MSP430的POR(power on reset)和PUC(power up clear)。
POR只能由下面三种情况触发:1、器件上电;2、RST(配置为复位模式)引脚为低电平;3、当PORON为1时, SVS为低。PUC的触发情况(POR一定会触发PUC):1、发生POR;2、看门口在溢出;3、看门狗写密码错误;4、FLASh写密码错误;5、从0-01ffH取指令。
一旦MCU重启,比如掉电重启或者按了复位按键,那么就会发生POR。这个时候PC就会从中断向量表的复位向量处取地址,即MSP430中地址为0xfffe处的地址值。如图一所示中断向量表对应的地址值为0x803E,程序运行会跳转到0x803E处,如图二所示。可以看到这是IDE(IAR)给我们做的的启动代码,可以看到基本上是对memory的操作,包括堆栈的初始化,内存的初始化等,“00805E 12B0 827E call #main”
这句就和容易理解了就是跳转到你的代码开始,即开始执行用户的代码了。
?cstart_begin:
__program_start:
00803E 4031 2100 mov.w #0x2100,SP
?cstart_init_zero:
008042 403C 113E mov.w #0x113E,R12
008046 403D 006F mov.w #0x6F,R13
00804A 12B0 86A6 call #__data16_memzero
?cstart_init_copy:
00804E 403C 1100 mov.w #0x1100,R12
008052 403D 8000 mov.w #0x8000,R13
008056 403E 003D mov.w #0x3D,R14
00805A 12B0 86C0 call #__data16_memcpy
?cstart_call_main:
00805E 12B0 827E call #main
008062 12B0 86B8 call #exit
图二 0x803e处的代码
[
本帖最后由 wstt 于 2011-3-4 14:30 编辑 ]