核心初始化

异常处理

总共有七中的异常情况:

1reset

2undefined 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 来时说时间是很重要的资源

原文地址:https://www.cnblogs.com/big-devil/p/8589439.html