您的位置:首页 > 其它

2013-05-02 Arm中的异常中断

2014-05-02 22:09 288 查看
Arm体系中通常有一下3种方式控制程序的执行流程:

(1)正常程序执行过程中,每执行一条ARM命令,PC加4个字节,Thumb命令时,PC加2个字节;

(2)跳转指令执行时,跳到指定的地址标号处执行,会到相应的子程序执行;B直接跳转,BL还要保存子程序的返回地址,BL还可根据目标地址的最低位将程序状态切换到Thumb状态,BLX是上述三者之和;

(3)当异常中断发生时,系统执行完当前指令后,将跳到相应的异常中断处理程序处执行;在跳入之前,需要保护被中断程序的执行现场,从异常中断处理程序退出时,还需恢复现场。

Arm体系的异常中断如下:

(1)0优先级,RESST,处理器复位引脚有效时,产生复位异常中断;

(2)5优先级,UND,处理器或协处理器认为当前指令未定义时,产生未定义的指令异常;

(3)6优先级,Software Interrupt,用户定义的中断指令,使用户模式的程序调用的特权操作;

(4)4优先级,指令预取中止,当预取对的指令地址不存在时;

(5)1优先级,DATA Abort,数据访问的指令目标地址不存在或不允许当前指令访问时;

(6)3优先级,IRQ,当处理器的外部中断请求引脚有效时,CPSR位的I控制位被清除,产生IRQ中断;

(7)2优先级,FIQ,当处理器的快速中断请求引脚有效时,CPSR位的F控制位被清除,产生FIQ中断;

Arm对异常中断的响应过程:

(1)保存处理器的当前状态,中断屏蔽位以及条件标志位,这些通过CPSR到SPSR来实现的;

(2)设置当前CPSR的相应位,包括进入的执行模式,IRQ,FIQ的位;

(3)将LR设置成返回的地址;

(4)将PC设置成异常中断的中断向量地址,从而调到相应的异常中断处理程序去执行;

Arm从异常中断处理程序的返回:

(1)将SPSR恢复到CPSR;

(2)返回到异常中断的指令下一条指令执行,即将LR装入到PC中;

(3)清除CPSR相应的位,如I/F位;

其中,RESET异常,不需要返回,因为在该异常中断处理程序开始整个用户程序的执行,故不需要返回;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: