浅谈ARM处理器的七种运行模式
之前我们谈过处理器的分类,寄存器结构等内容,今天我们谈一谈ARM处理器的运行模式。
ARM处理器运行模式
ARM微处理器支持7种运行模式,由ARM处理器中的CPSR(当前程序状态寄存器)的低5位CPSR[4:0]定义的。
7种运行模式分别为:用户模式User(usr):ARM处理器正常的程序执行模式。系统模式System(sys):运行具有特权的操作系统任务。快速中断模式(fiq):用于高速数据传输或通道处理。管理模式Supervisor(svc):操作系统使用的保护模式,处理软件中断(SWI)。外部中断模式(irq):用于通用的中断处理。数据访问中止模式Abort(abt):用于虚拟存储及存储保护。未定义指令中止模式Undfined(und):当出现未定义指令执行(中止)时进入该模式,可用于支持硬件协处理器的软件仿真。
用户模式(usr)和特权模式
在程序运行过程中,大多数的用户程序运行在用户模式下。在这种模式下面,禁止应用程序访问一些受操作系统保护的系统资源,应用程序也不能对当前处理器模式进行切换。
在用户模式下,当需要对处理器的模式进行切换时,应用程序可以产生异常处理,在异常处理中对处理器模式进行切换。
除用户模式之外,其他6种处理器模式称为特权模式。
特权模式下,允许程序对所有的系统资源进行访问,也可以任意地对处理器进行模式切换。在特权模式中,除系统模式(sys)以外,其他5种模式又称为异常模式。ARM处理器运行模式切换
ARM处理器运行模式可以通过下面两种方式进行切换:通过软件进行切换。通过外部中断或者异常处理过程进行切换。
当应用程序发生异常中断时,处理器进入相应的异常模式。
在每一种异常模式下,都对应有一组寄存器,供相应的异常处理程序使用。这样就可以保证在进入异常模式时,用户模式下的寄存器不被破坏。系统模式(sys)
我们需要特别介绍一下系统模式,系统模式(sys)和用户模式(usr)的寄存器相同,但是却并不是通过异常进入的。上面我们介绍了,系统模式属于特权模式,所有的系统资源都可以被访问,同时也可以直接对处理器模式进行切换。
系统模式(sys)主要供操作系统任务使用。一般情况下,操作系统的任务需要访问所有的系统资源,与此同时,该任务仍然要使用用户模式对应的寄存器组,而不是使用异常模式下相应的寄存器组,这样是为了保证,在异常中断发生时,任务状态不被破坏。
总结
今天我们介绍了ARM处理器的七种运行模式,并介绍了运行模式进行切换的方式,最后重点介绍了,在系统模式下,寄存器的使用情况。