1.初始化代码的区域定义和进入点(AT91R40008)
2.设置中断向量控制器(AT91R40008)
3.复制中断向量表至RAM存储器 (AT91R40008)
4.存储器初始化和REMAP
5.初始化各模式指针
6.初始化处理器模式和使能中断
7.初始化C程序变量
8.转到C入口地址
**初始化代码之FLASH中断向量表
B InitReset /* reset */
undefvec:
B undefvec /* Undefined Instruction */
swivec:
B swivec /* Software Interrupt */
pabtvec:
B pabtvec /* Prefetch Abort */
dabtvec:
B dabtvec /* Data Abort */
rsvdvec:
B rsvdvec /* reserved */
irqvec:
B irqvec /* reserved */
fiqvec:
B fiqvec /* reserved */
***
启动代码之RAM中断向量表
VectorTable:
ldr pc, [pc, #+0x18] /* SoftReset */
ldr pc, [pc, #+0x18] /* UndefHandler */
ldr pc, [pc, #+0x18] /* SWIHandler */
ldr pc, [pc, #+0x18] /* PrefetchAbortHandler */
ldr pc, [pc, #+0x18] /* DataAbortHandler */
nop /* Reserved */
ldr pc, [pc,#-0xF20] /* IRQ : read the AIC */
ldr pc, [pc,#-0xF20] /* FIQ : read the AIC */
#- There are only 5 offsets as the vectoring is used.
.long SoftReset
.long UndefHandler
.long SWIHandler
.long PrefetchAbortHandler
.long DataAbortHandler
#- Vectoring Execution function run at absolut addresss
SoftReset:
b SoftReset
UndefHandler:
b UndefHandler
SWIHandler:
b SWIHandler
PrefetchAbortHandler:
b PrefetchAbortHandler
DataAbortHandler:
b DataAbortHandler