ARM的工作模式

ARM的几种工作模式

  • User : 非特权模式,大部分任务执行在这种模式
  • FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式
  • IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式
  • Supervisor(SVC) : 当复位或软中断指令执行时将会进入这种模式
  • Abort : 当指令存取异常时将会进入这种模式
  • Undef : 当执行未定义指令时会进入这种模式
  • System : 使用和User模式相同寄存器集的特权模式

Cortex-A特有模式:

  • Monitor : 是为了安全而扩展出的用于执行安全监控代码的模式

user模式(User Mode)

ARM架构中的用户模式(User Mode)是指处理器运行在一种受限的模式下,用于执行用户级的应用程序。在用户模式下,处理器只能访问用户空间的资源,而无法直接访问操作系统或其他特权级的资源。

用户模式提供了一种安全和隔离的环境,以保护操作系统和其他特权级别的资源免受用户应用程序的非法访问或破坏。用户模式下的应用程序只能访问自己的内存空间和限定的设备资源,不能直接进行特权级操作。

用户模式下的应用程序运行在用户空间,可以执行常见的计算和应用逻辑,但对于一些需要特权级别的操作,如访问硬件设备、进行系统调用、执行特权指令等,需要通过操作系统提供的接口或中断来进行。操作系统会在合适的时机切换处理器到特权模式,执行相应的特权操作,然后再切换回用户模式,将控制权交还给应用程序。

用户模式的优点在于提供了一种受限的执行环境,可以有效保护系统的稳定和安全性。用户模式下的应用程序无法直接影响操作系统和其他应用程序,从而提高了系统的可靠性和安全性。

FIQ模式(Fast Interrupt Request)

FIQ模式是ARM处理器的一种特殊工作模式。在ARM架构中,有两种类型的中断:IRQ(Interrupt Request,普通中断)和FIQ(快速中断)。FIQ模式是为了处理实时要求更高、优先级更高的中断而设计的。

在FIQ模式下,处理器会自动执行一系列的操作,以提高中断的处理速度。FIQ模式具有以下特点:

  1. 单独的FIQ中断向量表:与普通中断的向量表相分离,可以独立管理和处理优先级更高的中断。
  2. 快速中断服务:相比于普通中断,FIQ模式下的中断服务处理速度更快。
  3. 优先级更高:FIQ中断的优先级高于普通中断,可以在处理普通中断时屏蔽FIQ中断,但无法屏蔽普通中断。
  4. 寄存器保护:进入FIQ模式后,处理器会自动保存一些关键的寄存器,以便在中断处理完成后恢复现场。

总之,FIQ模式是ARM处理器针对实时要求更高、优先级更高的中断而提供的一种特殊工作模式,可以加速中断处理速度,并提供更好的中断管理能力。

IRQ模式(Interrupt Request)

IRQ模式是ARM处理器的一种工作模式,用于处理普通的中断请求。在ARM架构中,IRQ模式是默认的工作模式。

在IRQ模式下,处理器会响应外部设备发送的中断请求,并执行相应的中断服务程序。IRQ模式具有以下特点:

  1. 中断优先级:处理器可以配置中断的优先级,优先级高的中断会被优先处理。
  2. 中断嵌套:当处理器正在处理一个中断时,如果更高优先级的中断请求发生,处理器会中断当前的中断处理,转而处理更高优先级的中断。
  3. 中断屏蔽:处理器可以通过设置中断屏蔽位,屏蔽或允许特定的中断请求。
  4. 寄存器保护:进入IRQ模式后,处理器会自动保存一些关键的寄存器,以便在中断处理完成后恢复现场。

总之,IRQ模式是ARM处理器的默认工作模式,用于处理普通的中断请求。它提供了中断优先级管理、中断嵌套和中断屏蔽等功能,以满足不同中断需求的处理。

SVC模式(Supervisor Call)

SVC 模式是 ARM 处理器的一种特权执行模式,也被称为异常模式。

在 SVC 模式下,处理器可以执行特权指令,如访问特权寄存器和执行特权操作。SVC 模式通常用于处理异常和系统调用。当处理器接收到一个异常或系统调用时,它会从当前执行模式切换到 SVC 模式,并根据异常类型或系统调用号执行相应的操作。SVC 模式是 ARM 处理器中最高权限的模式,只有从 SVC 模式才能切换到更高特权模式,如 IRQ (Interrupt Request) 或 FIQ (Fast Interrupt Request) 模式。

Abort模式

在 ARM 架构中,Abort 模式(也称为 Data Abort 模式)是一种异常执行模式。当ARM处理器执行数据访问指令(例如读取或写入内存)时发生数据异常(例如访问无效的内存地址或访问权限错误),处理器会进入 Abort 模式。

在 Abort 模式下,处理器会暂停当前的执行流程,并切换到运行在特权级别更高的模式(通常是 Supervisor 模式)。进入 Abort 模式后,操作系统或异常处理程序可以处理异常情况,通常会执行一些错误处理操作,例如记录错误信息、释放相关资源等。

Abort 模式给系统提供了一种处理数据访问异常的机制,以确保系统能够侦测和处理这些异常,从而避免对系统的稳定性和安全性造成影响。

Undef模式(Undefined)

在 ARM 架构中,Undef 模式是一种异常执行模式。当ARM处理器执行遇到未定义的指令或指令序列时,处理器会进入 Undefined 模式。

在 Undefined 模式下,处理器会暂停当前的执行流程,并切换到运行在特权级别更高的模式(通常是 Supervisor 模式)。进入 Undefined 模式后,操作系统或异常处理程序可以处理这些未定义指令的异常,通常会执行一些特定的处理操作,例如打印错误信息、记录错误日志等。

Undefined 模式允许系统在遇到未定义的指令时采取适当的措施,以保证系统的稳定性和安全性。它还为系统开发人员提供了一种机制,在处理器不支持的指令或指令序列上实现自定义的行为。

System模式

ARM 的 System 模式是一种特权级别更高的处理器执行模式,主要用于操作系统内核的运行。System 模式具有以下功能:

  1. 访问特殊的寄存器:System 模式可以访问特权级别更高的寄存器,如控制寄存器、系统寄存器等。这些寄存器通常用于配置和控制处理器的特权级别、中断处理、内存管理等。

  2. 执行特权指令:System 模式允许执行特权级别更高的指令,这些指令通常用于进行特权级别更高的操作,如切换进程、访问受限资源、进行系统调度等。

  3. 设置异常向量:System 模式允许设置异常向量表,用于处理异常和中断。异常处理程序通常在 System 模式下执行,可以进行特权级别更高的操作,如保存上下文、切换内存映射等。

  4. 进行内核级别的资源管理:作为操作系统内核的运行模式,System 模式可以进行内核级别的资源管理,包括对进程、线程、内存、设备等资源的管理和调度。

  5. 进行中断处理:System 模式可以处理外部中断、异常和硬件错误,对于需要特权级别更高的操作,如改变处理器状态、执行特殊指令等,System 模式是必需的。

总之,System 模式提供了一种特权级别更高的执行环境,使操作系统能够执行特权级别更高的任务和操作,确保系统的安全性和稳定性。

Monitor模式

ARM 的 Monitor 模式是Cortex-A内核的特有模式,是一种特权级别更高的处理器执行模式,通常用于安全扩展和虚拟化。Monitor 模式具有以下功能:

  1. 虚拟化支持:Monitor 模式可以在虚拟化环境中提供硬件辅助支持,例如处理虚拟化扩展指令(Virtualization Extensions Instructions)和虚拟中断控制器。

  2. 安全扩展:Monitor 模式可以通过提供额外的安全功能来增强系统的安全性,例如处理安全相关的事件和访问安全相关的寄存器。

  3. 监控特权级别更低的执行模式:Monitor 模式可以监控其他特权级别(如用户模式或系统模式)下程序的执行,并根据需要进行干预和处理。例如,监控模式可以对用户模式下的操作进行审计、阻止访问受限资源等。

  4. 管理和处理异常和中断:Monitor 模式可以处理特权级别更低的执行模式中发生的异常和中断,例如对异常和中断进行过滤、记录和处理。

总之,Monitor 模式提供了一种特权级别更高的执行环境,可以用于增强系统的安全性和管理特权级别更低的执行模式。它在虚拟化和安全领域扮演着重要的角色。

相关推荐
PegasusYu8 小时前
STM32CUBEIDE FreeRTOS操作教程(九):eventgroup事件标志组
stm32·教程·rtos·stm32cubeide·free-rtos·eventgroup·时间标志组
文弱书生65612 小时前
输出比较简介
stm32
黑客呀15 小时前
[系统安全]Rootkit基础
stm32·单片机·系统安全
小A15915 小时前
STM32完全学习——使用SysTick精确延时(阻塞式)
stm32·嵌入式硬件·学习
楚灵魈15 小时前
[STM32]从零开始的STM32 HAL库环境搭建
stm32·单片机·嵌入式硬件
小A15915 小时前
STM32完全学习——使用标准库点亮LED
stm32·嵌入式硬件·学习
code_snow17 小时前
STM32--JLINK使用、下载问题记录
stm32·单片机·嵌入式硬件
韦德斯18 小时前
嵌入式Linux的RTC读写操作应用
linux·运维·c语言·arm开发·实时音视频
byte轻骑兵18 小时前
嵌入式 ARM Linux 系统构成全解:从硬件到应用层层剖析
linux·arm开发·arm·嵌入式开发
youcans_20 小时前
【动手学电机驱动】STM32-FOC(8)MCSDK Profiler 电机参数辨识
stm32·单片机·嵌入式硬件·电机控制·foc