异常处理
总共有七中的异常情况:
1:reset
2:undefined instruct(不支持命令异常)
3:软件中断
4:指令预取失败异常
5:数据读取失败异常
6:中断
7:快速中断(比一般的中断处理速度快一些)
中断向量:
当中断发生时,处理器就会跳转到一个固定的地址去处理指令
.globl _start
_start: b reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq
_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word fiq
undefined_instruction:
nop
software_interrupt:
nop
prefetch_abort:
nop
data_abort:
nop
not_used:
nop
irq:
nop
fip:
nop
注:
.word expression就是在当前位置放一个word型的值,这个值就是expression.这里为什么不用指令(ldr pc,=inddefined_instruction ),是因为使用这条指令会增加指令执行周期,从而比较耗时,但是对于bootloader 来时说时间是很重要的资源