异常及中断处理汇总.doc

异常及中断处理汇总.doc

ID:55109360

大小:473.00 KB

页数:19页

时间:2020-04-27

异常及中断处理汇总.doc_第1页
异常及中断处理汇总.doc_第2页
异常及中断处理汇总.doc_第3页
异常及中断处理汇总.doc_第4页
异常及中断处理汇总.doc_第5页
资源描述:

《异常及中断处理汇总.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一.ARM异常中断处理概述1、中断的概念中断是一个过程,是CPU在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程。因硬件原因引起的中断过程的出现是不可预测的,即随机的,而软中断是事先安排的。2、中断源的概念我们把可以引起中断的信号源称之为中断源。3、中断优先级的概念ARM处理器中有7种类型的异常,按优先级从高到低的排列如下:复位异常(Reset)、数据异常(DataAbort)、快速中断异常(FIQ)、外部中断异常(IRQ)、预取异常(PrefetchAbort)、软件中断(SWI)和未定义指令异常(Undefinedinstru

2、ction)二.ARM体系异常种类下面是ARM的7种异常当异常发生时,处理器会把PC设置为一个特定的存储器地址。这一地址放在被称为向量表(vectortable)的特定地址范围内。向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。当异常产生时,ARMcore:拷贝CPSR到SPSR_设置适当的CPSR位:改变处理器状态进入ARM状态改变处理器模式进入相应的异常模式设置中断禁止位禁止相应中断(如果需要)保存返回地址到LR_设置PC为相应的异常向量返回时,异常处理需要:从SPSR_恢复CPSR从LR_

3、恢复PCNote:这些操作只能在ARM态执行.当异常发生时,分组寄存器r14和SPSR用于保存处理器状态,操作伪指令如下。R14_=returnlinkSPSR_=CPSRCPSR[4∶0]=exceptionmodenumberCPSR[5]=0/*进入ARM状态*/If==resetorFIQthenCPSR[6]=1/*屏蔽快速中断FIQ*/CPSR[7]=1/*屏蔽外部中断IRQ*/PC=exceptionvectoraddress异

4、常返回时,SPSR内容恢复到CPSR,连接寄存器r14的内容恢复到程序计数器PC。注:cortex-A8系统中支持通过设置CP15的c12寄存器将异常向量表的首地址设置在任意地址。例如:mcrp15,0,r0,c12,c0,01.复位异常当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常中断通常用在下面两种情况下。系统上电。系统复位。当复位异常时,系统执行下列伪操作:R14_svc=UNPREDICTABLEvalueSPSR_svc=UNPREDICTABLEvalueCPSR[4∶0]=0b10011

5、/*进入特权模式*/CPSR[5]=0/*处理器进入ARM状态*/CPSR[6]=1/*禁止快速中断*/CPSR[7]=1/*禁止外设中断*/IfhighvectorsconfiguredthenPC=0xffff0000ElsePC=0x复位异常中断处理程序的主要功能:·设置异常中断向量表。·初始化数据栈和寄存器。·初始化存储系统,如系统中的MMU等。·初始化关键的I/O设备。·使能中断。·处理器切换到合适的模式。·初始化C变量,跳转到应用程序执行。2.未定义指令异常当ARM处理器执行协处理器指令时,它必须等待一个外部协处理器应答后,才能真正执行

6、这条指令。若协处理器没有相应,则发生未定义指令异常当未定义异常发生时,系统执行下列的伪操作:r14_und=addressofnextinstructionaftertheundefinedinstructionSPSR_und=CPSRCPSR[4∶0]=0b11011/*进入未定义指令模式*/CPSR[5]=0/*处理器进入ARM状态*//*CPSR[6]保持不变*/CPSR[7]=1/*禁止外设中断*/IfhighvectorsconfiguredthenPC=0xffff0004ElsePC=0x3.软中断SWI软中断异常发生时,处理器进入

7、特权模式,执行一些特权模式下的操作系统功能。软中断异常发生时,处理器执行下列伪操作。r14_svc=addressofnextinstructionaftertheSWIinstructionSPSR_und=CPSRCPSR[4∶0]=0b10011/*进入特权模式*/CPSR[5]=0/*处理器进入ARM状态*//*CPSR[6]保持不变*/CPSR[7]=1/*禁止外设中断*/IfhighvectorsconfiguredthenPC=0xffff0008ElsePC=0x4.预取指令异常预取指令异常是由系统存储器报告的。当处理器试图去取一条

8、被标记为预取无效的指令时,发生预取异常。如果系统中不包含MMU时,指令预取异常中断处理程序只是简单地报告错误并退出。若包含

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。