这几天从官网下载了lpc2378基于arm7的ucos代码,发现如下疑问:
1.代码中并没有发现_swi关键字触发软中断,,,那么软中断是在哪里触发的呢?是不是手动更改工作模式为SVC模式就触发软中断了呢?
2,从软中断向量出取出软中断执行函数会跳转到如下代码段:
OS_CPU_ARM_ExceptHndlr
MRS R1, SPSR ; Save CPSR (i.e. exception's SPSR).
; DETERMINE IF WE INTERRUPTED A TASK OR ANOTHER LOWER PRIORITY EXCEPTION:
; SPSR.Mode = SVC : task,
; SPSR.Mode = FIQ, IRQ, ABT, UND : other exceptions,
; SPSR.Mode = USR : *unsupported state*.
AND R2, R1, #OS_CPU_ARM_MODE_MASK
CMP R2, #OS_CPU_ARM_MODE_SVC
BNE OS_CPU_ARM_ExceptHndlr_BreakExcept
这里是模式不等于SVC模式才跳转至OS_CPU_ARM_ExceptHndlr_BreakExcept,,,那等于SVC模式时到底执行什么了呢???
求各位不吝赐教。 |