ARM处理器的工作模式
ARM处理器的工作模式
ARM系列有7种基本工作模式,Cortex-A系列有8种工作模式
CPU在运行时必须具备的功能
- 程序正常运行
- 运行中处理中断异常
- 权限管理
ARM 之所以设计这么多模式,是为了应对CPU运行时的各种突发事件
要支持正常的应用程序的运行,在运行的任何一个时间点又可能发生很多异常事件
比如:关机、收到网卡信息、除数)、访问非法内存、解析到了非法指令等等,不光要能处理这些异常还要能够从异常中再返回到原来的程序执行
八种基本工作模式 1
简记: USA UFI SM
- USer(用户模式)2
非特权模式,大部分任务执行在这种模式
Linux下的用户空间,用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限操作其他硬件资源,只能执行处理自己的数据,也不能切换到其他模式,想要访问硬件资源或切换到其他模式下只能通过软中断或产生异常
- System(系统模式)
一种特殊的用户模式,允许访问所以的寄存器,操作系统内核运行在此模式下
系统模式是特殊模式,不受用户模式的限制,用户模式和系统模式共用一套寄存器,操作系统在该模式下可以方便的访问用户模式用户模式的寄存器,而操作系统的一些特权任务可以使用这个模式访问一些受控的资源
- ABT(Abort数据访问中止模式)
在数据或指令预取异常发生时被使用
中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址、没有访问权限的内存地址时,会进入该模式,Linux下编程时经常遇到segme fault(段错误)通常都是该模式下抛出返回的
- UND(Undef未定义指令中止模式)
当执行未定义指令时会进入这种模式
未定义模式用于支持硬件协处理器软件仿真,CPU在指令的译码阶段不能识别该指令操作时,会进入未定义模式
- IRQ(一般中断模式)
当一个低优先级(normal)中断产生时将会进入这种模式
一般中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统硬件资源
- FIQ(快速中断模式)
当一个高优先级(fast)中断产生时将会进入这种模式
快速中断模式时相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中
- SVC(Supervisor管理/特权模式)
当复位或软中断指令执行时会进入这种模式
管理模式时CUP上电后的默认模式,因此在该模式下主要用来做系统的初始化,软中断处理也在该模式下,当用户模式下的用户程序请求使用硬件资源时,通过软件中断进入该模式
- MON(monitor安全/监控模式)
也被称为监视模式,是Cortex-A特有模式
是为了安全而扩展出的用于执行安全监控代码的模式,也是一种特权模式