1、之所以设立处理器多种模式主要是安全考虑,用户程序运行在user态运行,操作系统运行在特权态(比如我们usoc运行在svc状态下)
2、模式切换
主动切换,在异常态下,我们可以设置cpsr某些位,来转换处理状态,在user下不能访问cpsr,不能主动发起切换
被动切换,产生异常时,自动切掉异常模式,比如从user态来中断后直接切换到fiq态
3、在异常模式下,通常有些自己的寄存器,比如r8-r12,spsr,
r8-r12通常是用来加速操作的,比如我在产生中断的时候,可以直接用我自己的r8-r12,不用先保存user状态下的r8-r12再用
spsr用于保存cprs的,用于主动切换模式,比如在中断处理后将spsr->cpsr,完成从FIQ态到USER态的转换
我们就可以理解,为什么在异常产生时要主动切换处理器模式到svc,因为ucos要跑到svc模式下。
阅读(2925) | 评论(0) | 转发(0) |