理论教育 1常见异常的具体描述

1常见异常的具体描述

时间:2023-11-03 理论教育 版权反馈
【摘要】:IRQ的优先级低于FIQ,当程序执行进入FIQ异常时,IRQ可能被屏蔽。

1常见异常的具体描述

1.复位

当ARM处理器的复位信号电平有效时,产生复位异常,处理器立刻停止执行当前指令,在禁止中断的管理模式下,强制从地址0x00000000开始执行指令。

2.未定义指令

当ARM处理器遇到不能处理的指令时,产生未定义指令异常。采用这种机制,可以通过软件仿真扩展ARM或Thumb指令集

无论是在ARM状态还是Thumb状态,在仿真未定义指令后,处理器执行以下指令返回:

该指令恢复PC(从R14_und)和CPSR(从SPSR_und)的值,并返回到未定义指令后的下一条指令。

3.软件中断

软件中断指令SWI用于进入管理模式,通常用于请求执行特定的管理功能。无论是在ARM状态还是Thumb状态,软件中断处理程序执行以下指令从SWI模式返回:

该指令恢复PC(从R14_svc)和CPSR(从SPSR_svc)的值,并返回到SWI的下一条指令。

4.指令预取中止

当指令预取访问存储器失败时,存储器系统向ARM处理器发出存储器中止(abort)信号,预取的指令被记为无效。但只有当处理器试图执行无效指令时,才会发生预取中止异常。如果指令未被执行,例如在指令流水线中发生了转移,则不会发生预取指令中止。

无论是在ARM状态还是Thumb状态,确定了中止的原因后,执行以下指令从种植模式返回:

该指令恢复PC(从R14_abt)和CPSR(从SPSR_abt)的值,并重新执行中止的指令。

5.数据中止异常

数据中止发生在数据访问期间。存储器系统发出存储器中止信号,激活中止来响应数据访问(加载或存储),数据被标记为无效。(www.daowen.com)

中止机制使指令分页的虚拟存储器系统能够实现。在这样一个系统中,处理器允许产生仲裁地址。当某一地址的数据无法访问时,存储器管理单元MMU通知产生了中止。中止处理程序必须找出中止的原因,使请求的数据可以被访问并重新执行被中止的指令。应用程序不必知道可用存储器的数量,也不必知道其被中止时所处的状态。

无论是在ARM状态还是Thumb状态,在修复产生数据中止的原因后,执行以下指令从中止模式返回:

该指令恢复PC(从R14_abt)和CPSR(从SPSR_abt)的值,并重新执行中止的指令。

6.中断请求IRQ异常

IRQ异常属于正常的中断请求,可通过对处理器的nIRQ端引脚输入低电平产生。IRQ的优先级低于FIQ,当程序执行进入FIQ异常时,IRQ可能被屏蔽。

若将CPSR的I位置为1,则会禁止IRQ中断;若将CPSR的I位清零,处理器会在指令执行完之前检查IRQ的输入。注意只有在特权模式下才能改变I位的状态。

不管是在ARM状态还是在Thumb状态下进入IRQ模式,执行以下指令从IRQ模式返回:

该指令将寄存器R14_irq的值减去4后,复制到程序计数器PC中,从而实现从异常处理程序返回,同时将SPSR_mode寄存器的内容复制到当前程序状态寄存器CPSR中。

7.快中断请求FIQ异常

FIQ异常是为了支持数据转移或者通道处理而设计的。在ARM状态下,快中断模式有8个专用寄存器,用于对寄存器保存的需求,并减小了系统上下文切换的开销。

若将CPSR的F位置为1,则会禁止FIQ中断,若将CPSR的F位清零,处理器会在指令执行时检查FIQ输入。注意,只有在特权模式下,才能改变F位的状态。

可由外部通过对处理器的nFIQ引脚输入低电平产生FIQ。

不管是在ARM状态还是在Thumb状态下进入FIQ模式,执行以下指令从FIQ模式返回:

该指令将寄存器R14_fiq的值减去4后,复制到程序计数器PC中,从而实现从异常处理程序中的返回,同时将SPSR_mode寄存器的内容复制到当前程序状态寄存器CPSR中。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈