ARMv4以上版本的CPU任何时刻必定处于如下7种执行模式之一:
(1) User Mode:用户模式。操作系统的Task一般以这种模式执行。User Mode是ARM唯一的非特权模式,这表示如果CPU处于这种模式下,很多指令将不能够执行,因此操作系统的资源得以保护。
(2) System Mode:这是V4及其以上版本所引入的特权模式。、
(3) IRQ Mode:中断模式。中断(不包括软中断)处理函数在这种模式下执行。
(4) FIQ Mode:快速中断模式。除了多了几个寄存器外,其他同IRQ一样。
(5) Supervisor Mode:监视模式。软中断(SWI)处理函数在这种模式下执行。
(6) Abort Mode:所有同内存保护相关的异常均在这种模式下执行。
(7) Undefined Mode:处理无效指令的异常处理函数在这种模式下执行。
程序可以通过读取CPSR的MODE域来判断CPU当前的执行模式。
如何看待ARM的各种模式?要回答这个问题,我们要看不同模式下,有哪些东西不同。归纳来说,有如下两个方面的不同:
(1) 物理寄存器不同
(2) 权限不同
如果将User Mode作为参考模式,那么:
(1) System Mode:寄存器一样,仅仅是权限不同
(2) 其他Exception Mode:寄存器不一样,权限也不一样
从权限的角度看,System Mode和其他Exception Mode(FIQ,IRQ,Supervisor,Abort,Undefined)是一样的,他们之间的区别仅仅是寄存器方面有一些差别。
从寄存器角度看,我们可以将CPSR中的MODE域看作一个类似于片选的东西,当其值不一样,所选中的寄存器也不一样。虽然指令中的寄存器是一样的,但是经过MODE域的片选后,实际就指向不同的物理寄存器了。
必须要特别注意,SYSTEM模式和USER模式除了权限不一样外,其他都一样,这样可以让操作系统自由访问16个寄存器(包括状态寄存器)。
那么,模式切换是如何进行的呢?
(1) 执行SWI或Reset指令。如果在User模式下执行SWI指令,CPU就进入Supervisor模式。当然,在其它模式下执行SWI指令,也会进入Supervisor模式,补过一般操作系统不会这么做。因为除了User模式是非特权模式下,其他模式都属于特权模式(这说明ARM只有两种执行态,不想Dummy的X86,定义了4种执行态)。执行SWI一般是为了访问系统资源,在特权模式下可以访问所有的系统资源。SWI指令一般用来用来为操作系统提供API接口。
(2) 有外部中断发生。如果发生了外部中断,CPU就会进入IRQ或FIQ模式,具体是哪种模式,得看外部的中断源是接到CPU的那个Pin。
(3) CPU执行过程中产生异常。最典型的异常是由于MMU保护所引起的内存访问异常,此时CPU会切换到Abort模式。如果是无效指令,则会进入Undefined模式。
从上面我们发现,有一种模式是CPU无法自动进入的,这种模式就是System模式。要进入System模式必须由程序员自己编写指令来实现。其实很简单,在任何特权模式下改变CPSR的MODE域为System模式所对应得数字即可。进入System模式一般是为了利用“System 模式”和“User 模式”下的寄存器是一样的。因此一般操作系统在通过SWI进入Supervisor模式后,做一些简单处理后,就进入System模式。
另外,在任何特权模式下,都可以通过修改CPSR的MODE域而进入其他模式。不过需要注意的是,由于修改的CPSR是该模式下的影子CPSR,因此并不是实际的CPSR,所以一般的做法是修改影子CPSR,然后执行一个MOVS指令来恢复执行到某个断点并切换到新模式。
我们还可以将执行模式按照如下类型划分:
(1) 用户模式:User Mode
(2) 系统模式:System Mode
(3) 异常模式:所有其它5种模式
为什么这样划分呢?这是由于异常模式同用户模式和系统模式有一个不一样的地方,那就是,当CPU产生中断或异常而自动切换到相应异常模式后,CPU会根据产生中断或异常的原因执行相应得中断或异常向量。这些向量的位置是CPU事先定义好的,目前有两种选择:
(1) 处于内存低地址0x00000000~0x0000001c,这种情况被称之为Low vector
(2) 处于内存高低之0Xffff0000~0xffff001c,这种情况被称之为High vector。
一般的操作系统会在这些异常向量地址处放置一条跳转指令。至于到底是使用Low vector,还是使用High vector,由CPU自己决定,ARM规范不做任何限制。
分享到:
相关推荐
### ARM处理器7种工作模式详解 #### 一、概述 ARM(Advanced RISC Machines)处理器是一种基于精简指令集计算(RISC)架构的微处理器。由于其低功耗、高性能的特点,在移动设备、嵌入式系统乃至服务器领域都有着...
其次,ARM处理器有7种工作模式,用于处理不同类型的程序执行和中断处理。这些模式包括: 1. 用户模式(Usr):这是正常的程序执行模式,大多数程序都在这个模式下运行。用户模式下不能直接进入其他工作模式。 2. ...
ARM架构处理器支持多种工作模式,这些模式为不同类型的操作提供适当的执行环境和权限级别。在ARMv4和ARMv5指令集架构中,明确了以下七种工作模式,每种模式都有其特定的应用场景和特点: 1. 用户模式(User Mode) ...
ARM处理器提供了七种不同的工作模式,分别对应于不同的运行环境和权限级别,它们是User模式、FIQ模式、IRQ模式、Supervisor模式、Abort模式、Undef模式和System模式。每种模式下,处理器都能访问不同的寄存器集合,...
ARM7内核有7种不同的工作模式,每种模式对应不同的处理器权限和用途: - **用户模式(User)**:应用程序运行的常规模式。 - **快速中断模式(FIQ)**:处理高速数据传输或同步中断。 - **普通中断模式(IRQ)**:处理...
ARM7是ARM公司设计的一种广泛应用于嵌入式系统的精简指令集计算机(RISC)处理器架构。本资料《深入浅出ARM7》是专为学习和理解ARM7处理器的内部结构与工作原理而编写的,适合初学者和有一定经验的工程师。通过这份...
其中,T位指示正在执行的指令集是ARM还是Thumb,而模式位则确定CPU的运行模式,如用户模式、系统模式等,每种模式对应不同的寄存器组和权限级别。 #### 三、指令集与操作模式 ARM7支持两种指令集:32位的ARM指令集...
3. **为ARM每种运行模式设置堆栈** 4. **初始化ARM的MPLL时钟** 5. **初始化MMU** 6. **初始化存储器控制器** 7. **关闭看门狗、关闭中断** 8. **判断IRQ中断的中断入口** 9. **将RW段的内容从flash拷贝到SDRAM,...
本文档将详细介绍ARM11处理器的四种电源管理模式:运行模式、待机模式、关机模式和休眠模式。 #### 二、运行模式 运行模式是ARM11处理器最常用的工作模式。在此模式下,处理器能够充分利用其所有功能。对于采用了I...
ARM处理器的状态分为两种:用户模式(User Mode)和特权模式(Privileged Mode),后者包括系统模式(System Mode)、中断服务模式(Interrupt Service Mode)、快中断模式(Fast Interrupt Request Mode)等。这些模式提供了...
在工作模式方面,ARM7内核提供了7种不同的工作模式:用户模式(User)、快速中断模式(FIQ)、普通中断模式(IRQ)、管理模式(Supervisor)、系统模式(System)、未定义指令异常模式(Undefined)和终止模式...
Thumb指令集是为了在有限的代码空间中实现高效的代码执行而设计的,它提供了与ARM指令集兼容的子集。ARM指令集通常用于性能敏感的代码段,而Thumb指令集用于节省存储空间。 2. **处理器模式**:ARM7有多种处理器...
ARM7TDMI有多种处理器模式,包括用户模式(User)、快速中断模式(Fast Interrupt)、系统模式(System)等,每种模式都有不同的权限级别,用于处理不同级别的任务和异常。 5. **寄存器组织** ARM7TDMI有16个通用...
ARM处理器工作模式实验主要涉及了ARM处理器的七种工作模式,包括用户模式、五种异常模式(FIQ、IRQ、管理、中止、未定义)和系统模式,以及如何通过MSR/MRS指令进行模式切换,并利用实验环境进行实践操作。...
ARM处理器架构设计中包含了七种不同的运行模式,这些模式各自有着特定的用途和权限,以适应不同场景的需求。以下是对这七种模式的详细说明: 1. 用户模式(User Mode,USR):这是最常见的模式,应用程序通常在此...
这些模式用于处理不同类型的程序执行和异常情况,例如,FIQ模式用于高速中断,如DMA传输,而IRQ模式处理常规中断。 寄存器组在ARM和Thumb状态下有所不同,但它们有物理上的重叠,这使得状态之间可以平滑转换。程序...
线程模式用于正常的应用程序执行,而Handler模式用于中断服务。这种分离确保了中断处理的快速响应,避免了中断处理中的上下文切换开销。 4. **中断与异常处理** 在v7-M架构中,中断和异常处理是高度集成的。中断...
7. **三级流水线设计**:取指、译码、执行,提高处理器并发处理能力。 RISC与CISC(复杂指令集计算机)相比,RISC强调指令的规整性和效率。它通常具有以下特性: - 指令数量少,规整对称,易于实现。 - 单周期指令...
1. **ARM架构**:ARM(Advanced RISC Machines)是一种广泛应用的精简指令集计算机(RISC)架构,以其低功耗、高性能和可扩展性著称。ARM7是ARM公司早期开发的一代处理器,广泛应用于嵌入式系统。 2. **ARM7处理器...
这些模式用于处理不同级别的程序执行和异常情况。 3. **中断和异常**:ARM7处理器支持多种中断和异常处理机制,使得系统能对外部事件(如硬件中断)和内部错误(如数据地址错误)进行响应。中断和异常处理涉及中断...