首页 理论教育 ARM异常处理过程-ARM体系结构与嵌入式C语言编程技术

ARM异常处理过程-ARM体系结构与嵌入式C语言编程技术

时间:2023-10-19 理论教育 版权反馈
【摘要】:ARM处理器对异常的响应过程是,当异常产生时,ARM内核将自动完成以下工作:保存ARM处理器当前状态、中断屏蔽位以及各条件标志位。这是通过将CPSR的内容保存到将要执行的异常对应的SPSR中实现的。各异常有自己的物理SPSR。上述ARM处理器对异常的响应过程可以用如下伪代码描述:下面按异常的类型分情况讨论。伪代码描述如下:3.响应软件中断异常当ARM处理器发生软件中断异常时,系统将下一条指令地址存入R14_svc。

ARM异常处理过程-ARM体系结构与嵌入式C语言编程技术

ARM处理器对异常的响应过程是,当异常产生时,ARM内核将自动完成以下工作:

(1)保存ARM处理器当前状态、中断屏蔽位以及各条件标志位。这是通过将CPSR的内容保存到将要执行的异常对应的SPSR中实现的。各异常有自己的物理SPSR。

(2)设置CPSR中相应的位,使处理进入相应的执行模式;设置CPSR中相应的位,禁止外部中断请求异常,当进入快速中断模式时,禁止快速中断请求异常;

(3)将寄存器LR_mode设置成异常返回地址

(4)将PC设置成该异常的异常向量地址,从而跳转到相应的异常处理程序处执行。

上述ARM处理器对异常的响应过程可以用如下伪代码描述:

下面按异常的类型分情况讨论。

1.响应复位异常

当ARM处理器发生复位异常时,系统进入管理模式,切换到ARM状态,同时禁止快速中断请求异常和外部中断请求异常,然后设置PC使其从复位地址0x00000000(或者0xFFFF0000)取下一条指令执行,伪代码描述如下:

2.响应未定义指令异常

当处理器发生未定义指令异常时,系统将下一条指令的地址存入R14_und,同时将CPSR的值复制到SPSR_und中;然后强制设置CPSR的值,使系统进入未定义指令工作模式,同时切换到ARM状态;设置CPSR的I位为1,用来禁止外部中断请求异常;最后设置PC,使其从未定义指令异常向量地址0x00000004(或者0xFFFF0004)取下一条指令执行。伪代码描述如下:(www.xing528.com)

3.响应软件中断异常

当ARM处理器发生软件中断异常时,系统将下一条指令地址存入R14_svc。同时将CPSR的值复制到SPSR_svc中,然后强制设置CPSR的值,使系统进入管理模式,同时切换到ARM状态;设置CPSR的位I为1,用来禁止快速中断请求异常,最后设置PC,使其从软件中断异常向量地址0x00000008(或者0xFFFF0008)取下一条指令执行。伪代码描述如下:

4.响应指令预取中止异常

当ARM处理器发生指令预取中止异常时,系统将下一条指令的地址存入R14_abt,同时将CPSR的值复制到SPSR_abt中,然后强制设置CPSR的值,使系统进入数据访问中止模式,同时切换到ARM状态;设置CPSR的I位为1,用来禁止外部中断请求异常,最后设置PC,使其从指令预取中止异常向量地址0x0000000C(或者0xFFFF000C)取下一条指令执行。伪代码描述如下:

5.响应数据访问中止异常

当ARM处理器发生数据访问中止异常时,系统将下一条指令的地址存入R14_abt,同时将CPSR的值复制到SPSR_abt中,然后强制设置CPSR的值,使系统进入数据访问中止模式,同时切换到ARM状态;设置CPSR的I位为1,用来禁止外部中断请求异常,最后设置PC,使其从数据中止异常向量地址0x00000010(0xFFFF0010)取下一条指令执行。伪代码描述如下:

6.响应外部中断请求异常

当ARM处理器发生异常时,系统将下一条指令的地址存入R14_irq,同时将CPSR的值复制到SPSR_irq中,然后强制设置CPSR的值,使系统进入外部中断模式,同时切换到ARM状态;设置CPSR的I位为1,用来禁止外部中断请求异常,最后设置PC,使其从IRQ向量地址0x00000018(0xFFFF0018)取下一条指令执行。伪代码描述如下:

7.响应快速中断请求异常

当处理器发生快速中断请求异常异常时,系统将下一条指令的地址存入R14_fiq,同时将CPSR的值复制到SPSR_fiq中,然后强制设置CPSR的值,使系统进入快速中断模式,同时切换到ARM状态;设置CPSR的I位和F位都为1,用来禁止外部中断请求异常和快速中断请求异常,最后设置PC,使其从快速中断请求异常向量地址0x0000001C(0xFFFF001C)取下一条指令执行。伪代码描述如下:

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

我要反馈