s3c44B0的启动代码44b0init.S的中断分析

问题一:什么是向量式中断处理和非向量式中断处理

解答:向量式中断处理是有硬件判断优先级,这个硬件逻辑提供矢量表的一条跳转指令放到0x1C或0x18,这个地址提供了相应服务程序的跳转指令。

;中断向量表
VECTOR_BRANCH
    ldr pc,=HandlerEINT0    ;mGA    0x20
    ldr pc,=HandlerEINT1    ;    
    ldr pc,=HandlerEINT2    ;
    ldr pc,=HandlerEINT3    ;
    ldr pc,=HandlerEINT4567    ;
    ldr pc,=HandlerTICK        ;mGA    0x34
    b .
    b .
    ldr pc,=HandlerZDMA0    ;mGB    0x40
    ldr pc,=HandlerZDMA1    ;
    ldr pc,=HandlerBDMA0    ;
    ldr pc,=HandlerBDMA1    ;
    ldr pc,=HandlerWDT        ;
    ldr pc,=HandlerUERR01    ;mGB    0x54
    b .
    b .
    ldr pc,=HandlerTIMER0    ;mGC    0x60
    ldr pc,=HandlerTIMER1    ;
    ldr pc,=HandlerTIMER2    ;
    ldr pc,=HandlerTIMER3    ;
    ldr pc,=HandlerTIMER4    ;
    ldr pc,=HandlerTIMER5    ;mGC    0x74
    b .
    b .
    ldr pc,=HandlerURXD0    ;mGD    0x80
    ldr pc,=HandlerURXD1    ;
    ldr pc,=HandlerIIC        ;
    ldr pc,=HandlerSIO        ;
    ldr pc,=HandlerUTXD0    ;
    ldr pc,=HandlerUTXD1    ;mGD    0x94
    b .
    b .
    ldr pc,=HandlerRTC        ;mGKA    0xa0
    b .
    b .
    b .
    b .
    b .                        ;mGKA
    b .
    b .
    ldr pc,=HandlerADC        ;mGKB    0xc0
    b .                        ;
    b .                        ;
    b .                        ;
    b .                        ;
    b .                        ;mGKB
    b .
    b .
    ldr pc,=EnterPWDN        ;0xe0=EnterPWDN

—————————————————————————————————————————————————————————————————————————————

HANDLER是个宏

 MACRO
$HandlerLabel HANDLER $HandleLabel

$HandlerLabel
    sub        sp,sp,#4            ;decrement sp(to store jump address)
    stmfd   sp!,{r0}            ;PUSH the work register to stack(lr does't push because it return to original address)
    ldr        r0,=$HandleLabel    ;load the address of HandleXXX to r0
    ldr        r0,[r0]                ;load the contents(service routine start address) of HandleXXX
    str        r0,[sp,#4]            ;store the contents(ISR) of HandleXXX to stack
    ldmfd   sp!,{r0,pc}            ;POP the work register and pc(jump to ISR)
    MEND

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


对于HandlerADC       展开就是(;HandlerADC    HANDLE HandleADC 解为):

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a307775f8ce4a63827b43770b5298b97.html