- 为什么有SWI异常;
CPU在执行普通的代码时,处于USR模式无法进入特权模式,若想进入特权模式解决一些问题时,就必须先触发SWI异常进入Supervisor特权模式,在进入想进入的特权模式处理问题。 - 发生SWI异常时硬件会做哪些工作;
一,将CPSR寄存区的值保存到CPSR_svc;
二,将实现SWI异常打断指令的下一条指令的地址存入LR_svc寄存器中;
三,设置CPSR寄存器的M4-M0,使CPU进入svc模式;
四,跳转到0x00000008地址执行该处的指令 - 如何处理、使用SWI异常;
一,初始化SP_svc使其指向一段有效的内存空间;
二,将R0-R12以及LR_svc的值入栈;
stmdb sp!, {r0-r12, lr}
三,在特权模式下执行相应的指令,完成特定的目的;
四,退出SWI中断,出栈到R0-R12,以及PC恰好使其返回实现SWI异常打断指令的下一条指令。
ldmia sp!, {r0-r12, pc}^
ARM920T的SWI异常
最新推荐文章于 2022-11-01 09:59:40 发布