嵌入式系统基础 第7章--中断和异常_第1页
嵌入式系统基础 第7章--中断和异常_第2页
嵌入式系统基础 第7章--中断和异常_第3页
嵌入式系统基础 第7章--中断和异常_第4页
嵌入式系统基础 第7章--中断和异常_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第7 7章章 中断和异常中断和异常本章重要内容本章重要内容1 1、中断和异常的基本概念、中断和异常的基本概念2 2、中断(异常)服务程序的年结构、中断(异常)服务程序的年结构3 3、处理器响应与处理中断(异常)的过、处理器响应与处理中断(异常)的过程程4 4、ARMARM的中断系统的中断系统7.1 7.1 中断和异常的基本概念中断和异常的基本概念 中断是主机与外设进行数据通信的重中断是主机与外设进行数据通信的重要机制,它负责处理处理器外部的异常事要机制,它负责处理处理器外部的异常事件;异常实质上也是一种中断,只不过它件;异常实质上也是一种中断,只不过它主要负责处理处理器内部事件。主要负责处理

2、处理器内部事件。7.1.1 7.1.1 中断和异常中断和异常1 1、什么叫中断、什么叫中断 当处理器遇有外部设备发生当处理器遇有外部设备发生“紧急事紧急事件件”需要它来处理时,它就必须停下需要它来处理时,它就必须停下“手手头上的工作头上的工作”先去处理这个先去处理这个“紧急事件紧急事件”。处理器的这种工作过程,或者这种工作状处理器的这种工作过程,或者这种工作状态就叫做中断。态就叫做中断。2 2、什么叫中断请求、什么叫中断请求 当外部设备有紧急事件需要处理器进当外部设备有紧急事件需要处理器进行处理时,外部设备必须向处理器发送一行处理时,外部设备必须向处理器发送一个电信号(脉冲或电平)来表示有事件

3、需个电信号(脉冲或电平)来表示有事件需要处理器来处理。这个信号叫做中断请求要处理器来处理。这个信号叫做中断请求信号,或称中断请求。信号,或称中断请求。3 3、什么叫中断源、什么叫中断源 发出中断请求信号的外部设备或事件发出中断请求信号的外部设备或事件就叫做中断源。就叫做中断源。4 4、什么叫异常、什么叫异常 除了外部设备可以发出可以发出中断除了外部设备可以发出可以发出中断请求之后,处理器内部也会有一些事件可请求之后,处理器内部也会有一些事件可以发出中断请求,例如读取指令出错或在以发出中断请求,例如读取指令出错或在进行除法运算时除数为零等。为了与外部进行除法运算时除数为零等。为了与外部事件引起的

4、中断相区别,人们把这种由内事件引起的中断相区别,人们把这种由内部事件引起的中断叫做异常。部事件引起的中断叫做异常。7.1.2 7.1.2 中断请求信号的屏蔽中断请求信号的屏蔽 处理器中用来屏蔽中断的积存器和开处理器中用来屏蔽中断的积存器和开关如下:关如下:1 1、可屏蔽中断、可屏蔽中断 人们把带有开关,能阻止中断请求的人们把带有开关,能阻止中断请求的中断输入端叫做可屏蔽中断信号输入端。中断输入端叫做可屏蔽中断信号输入端。这类中断叫可屏蔽中断。这类中断叫可屏蔽中断。2 2、非屏蔽中断、非屏蔽中断 人们把不带开关,不能阻止中断请求人们把不带开关,不能阻止中断请求的中断输入端叫做非屏蔽中断信号输入端

5、。的中断输入端叫做非屏蔽中断信号输入端。这类中断叫屏蔽中断。这类中断叫屏蔽中断。 为了对处理器可以接收中断源的数目为了对处理器可以接收中断源的数目进行扩充及对中断进行必要的管理,在中进行扩充及对中断进行必要的管理,在中断源和处理器之间还配有如下图所示的中断源和处理器之间还配有如下图所示的中断控制器。断控制器。7.1.3 7.1.3 中断优先级及中断嵌套中断优先级及中断嵌套1 1、中断优先级、中断优先级 处理器通常只有一个可屏蔽中断请求处理器通常只有一个可屏蔽中断请求输入端。对于具有多个中断源的系统来说,输入端。对于具有多个中断源的系统来说,当有两个或两个以上中断源同时发生中断当有两个或两个以上

6、中断源同时发生中断请求时就会出现所谓的竞争。请求时就会出现所谓的竞争。 具体实现方法有两种:硬件实现方法具体实现方法有两种:硬件实现方法和软件实现方法。和软件实现方法。(1 1)硬件实现方法)硬件实现方法 就是为计算机系统配备一套能按优先就是为计算机系统配备一套能按优先等级对中断源进行排队的硬件电路,以保等级对中断源进行排队的硬件电路,以保证级别高的中断能先于级别低的中断被处证级别高的中断能先于级别低的中断被处理器响应。理器响应。 一般情况下,这个优先排队机构可能一般情况下,这个优先排队机构可能在处理器中有一套,在中断控制器中也有在处理器中有一套,在中断控制器中也有一套,甚至在借口电路中也会有

7、一套。一套,甚至在借口电路中也会有一套。(2 2)软件实现方法)软件实现方法 就是把所有中断源的中断请求信号分就是把所有中断源的中断请求信号分成两路,其中一路经成两路,其中一路经“或或”逻辑送到处理逻辑送到处理器的中断请求输入端,而另一路则送入中器的中断请求输入端,而另一路则送入中断接口电路经数据总线送入处理器。断接口电路经数据总线送入处理器。 中断源的软件查询法电路的接线如下中断源的软件查询法电路的接线如下图所示:图所示:软件查询法的中断服务程序的流程如下:软件查询法的中断服务程序的流程如下:2 2、中断嵌套、中断嵌套7.1.4 7.1.4 中断服务程序中断服务程序 用来处理中断事件的程序叫

8、做中断服用来处理中断事件的程序叫做中断服务程序。务程序。 中断服务程序的一般结构如下所示:中断服务程序的一般结构如下所示: 中断服务程序与普通子程序的重要差中断服务程序与普通子程序的重要差别在于:别在于: 中断服务程序要对中断嵌套进行必要中断服务程序要对中断嵌套进行必要的管理。既中断服务程序要根据需要,对的管理。既中断服务程序要根据需要,对程序状态寄存器中的中断允许标志进行相程序状态寄存器中的中断允许标志进行相应的设置。应的设置。7.1.5 7.1.5 中断向量和中断向量表中断向量和中断向量表 为了与普通子程序的首地址进行区分,为了与普通子程序的首地址进行区分,中断服务程序的首地址中断服务程序

9、的首地址 通常被叫做中断向通常被叫做中断向量,或中断矢量。量,或中断矢量。 以后还会看到,凡是能直接或间接指以后还会看到,凡是能直接或间接指向中断服务程序的都叫中断向量。向中断服务程序的都叫中断向量。 各种处理器如何来调用中断服务子程各种处理器如何来调用中断服务子程序的方法不尽相同,通常有两种方法。序的方法不尽相同,通常有两种方法。 调用方法和转移方法。调用方法和转移方法。1 1、调用方法、调用方法 是在处理器收到中断中断请求之后,是在处理器收到中断中断请求之后,由中断系统硬件执行一条子程序调用指令由中断系统硬件执行一条子程序调用指令来调用中断服务程序。来调用中断服务程序。2 2、转移方法、转

10、移方法 是由中断系统硬件执行一条转移指令是由中断系统硬件执行一条转移指令来转向中断服务程序。来转向中断服务程序。 但是,不管哪种方法,有一点是共同但是,不管哪种方法,有一点是共同的,即它们最终都需要获得中断服务程序的,即它们最终都需要获得中断服务程序首地址首地址中断向量。中断向量。 所有的中断向量都必须存放在一个固所有的中断向量都必须存放在一个固定的存储区域,这个集中存放了中断向量定的存储区域,这个集中存放了中断向量或与中断向量相关信息的存储区域就叫做或与中断向量相关信息的存储区域就叫做中断向量表。中断向量表。 一种中断处理硬件系统示意图如下:一种中断处理硬件系统示意图如下: 处理器在响应中断

11、源处理器在响应中断源2 2的中断时,其程的中断时,其程序流程如下:序流程如下:7.1.6 7.1.6 中断的处理过程中断的处理过程1 1、处理器响应中断的条件、处理器响应中断的条件 处理器响应中断的条件主要有以下几处理器响应中断的条件主要有以下几个:个:(1 1)处理器程序状态寄存器的中断屏蔽)处理器程序状态寄存器的中断屏蔽标志处于非屏蔽状态。标志处于非屏蔽状态。(2 2)没有更高级的中断中断请求正在响)没有更高级的中断中断请求正在响应或正在发出、挂起。应或正在发出、挂起。(3 3)处理器在现行指令执行结束后。)处理器在现行指令执行结束后。2 2、中断的处理器过程、中断的处理器过程 当有中断请

12、求发生且满足上述条件时,当有中断请求发生且满足上述条件时,计算机系统就会响应中断请求,并自动将计算机系统就会响应中断请求,并自动将被中断程序的下一条指令地址(断点地址)被中断程序的下一条指令地址(断点地址)保存到堆栈和关闭中断;接下来便将自中保存到堆栈和关闭中断;接下来便将自中断向量表查询得的与该中断源对应的中断断向量表查询得的与该中断源对应的中断向量送入向量送入PCPC,并转去执行中断服务程序。,并转去执行中断服务程序。 当执行到中断服务程序末尾时,执行当执行到中断服务程序末尾时,执行中断返回指令或跳转指令,把保存的断点中断返回指令或跳转指令,把保存的断点地址送回地址送回PCPC,以在断点处

13、接续执行被中断,以在断点处接续执行被中断的程序。的程序。7.2 ARM7.2 ARM的中断(异常)的中断(异常) ARM ARM处理器可以响应的中断(异常)处理器可以响应的中断(异常)有:中断、快中断、复位中断、软中断异有:中断、快中断、复位中断、软中断异常、预取指令中止异常、数据中止异常和常、预取指令中止异常、数据中止异常和未定义指令异常未定义指令异常7 7种。种。7.2.1 ARM7.2.1 ARM的中断(异常)向量表的中断(异常)向量表1 1、低端和高端向量表、低端和高端向量表 ARM ARM有低端和高端两种向量表,用户可有低端和高端两种向量表,用户可以根据需要选用其中一种,如下所示:以

14、根据需要选用其中一种,如下所示: ARM ARM中断(异常)的各个向量在向量表中断(异常)的各个向量在向量表中的分配如下:中的分配如下:中断(异常)中断(异常)向量在低端向量表的地址向量在低端向量表的地址向量在高端向量表的地址向量在高端向量表的地址复位(复位(RESETRESET)0 x000000000 x000000000 xFFFF00000 xFFFF0000未定义指令(未定义指令(UNDEFUNDEF)0 x000000040 x000000040 xFFFF00040 xFFFF0004软中断(软中断(SWISWI)0 x000000080 x000000080 xFFFF0008

15、0 xFFFF0008预取指令中止(预取指令中止(PABTPABT)0 x0000000C0 x0000000C0 xFFFF000C0 xFFFF000C数据中止(数据中止(DABTDABT)0 x000000100 x000000100 xFFFF00100 xFFFF0010保留保留0 x000000140 x000000140 xFFFF00140 xFFFF0014中断(中断(IRQIRQ)0 x000000180 x000000180 xFFFF00180 xFFFF0018快中断(快中断(FIQFIQ)0 x0000001C0 x0000001C0 xFFFF001C0 xFFF

16、F001C 处理器在响应中断(异常后),可以处理器在响应中断(异常后),可以通过两次跳转转移到中断(异常)服务程通过两次跳转转移到中断(异常)服务程序。两次跳转的示意图如下:序。两次跳转的示意图如下:2 2、中断(异常)向量表的保留项、中断(异常)向量表的保留项 在实际应用系统中,常常会需要多个在实际应用系统中,常常会需要多个中断(异常)向量表,这时就需要利用这中断(异常)向量表,这时就需要利用这个保留项中数据来对这多个向量表进行区个保留项中数据来对这多个向量表进行区别。别。7.2.2 ARM7.2.2 ARM中断(异常)的管理中断(异常)的管理 ARM ARM按事件的紧急程度为每个中断按事件

17、的紧急程度为每个中断(异常)都定义了一个固定的优先级别。(异常)都定义了一个固定的优先级别。I I位值位值 F F位值位值禁止的异常禁止的异常/ /中断中断中断优先级中断优先级1 11 1复位(复位(RESETRESET)中断)中断1 11 1- -未定义指令(未定义指令(UNDEFUNDEF)异常)异常6 61 1- -软中断(软中断(SWISWI)6 61 1- -预取指令中止(预取指令中止(PABTPABT)异常)异常5 51 1- -数据中止(数据中止(DABTDABT)异常)异常2 21 1- -中断(中断(IRQIRQ)4 41 11 1快中断(快中断(FIQFIQ)1 1 I=1

18、I=1表示禁止表示禁止IRQIRQ中断;中断;F=1F=1表示禁止表示禁止FIQFIQ中断。中断。1 1、普通中断(、普通中断(IRQIRQ)和快中断()和快中断(FIQFIQ) 外部设备的中断请求可以通过两个中外部设备的中断请求可以通过两个中断请求输入端进入处理器,其中一个是叫断请求输入端进入处理器,其中一个是叫做做IEQIEQ的普通中断,另一个是叫做的普通中断,另一个是叫做FIQFIQ的快的快中断。所谓普通中断就是前面讲过的中断,中断。所谓普通中断就是前面讲过的中断,而快中断就是能比普通中断响应快的中断。而快中断就是能比普通中断响应快的中断。 用下面的指令实现现场数据的压栈:用下面的指令实

19、现现场数据的压栈: STMFD R13!,R0,R4-R12,LR ;STMFD R13!,R0,R4-R12,LR ;压入堆栈压入堆栈 用下面的指令将现场数据弹出:用下面的指令将现场数据弹出: LDMFD R13!,R0,R4-R12,PC ;LDMFD R13!,R0,R4-R12,PC ;压入堆栈压入堆栈 这种压栈和出栈操作都比较费时,它这种压栈和出栈操作都比较费时,它们增加了中断处理的延迟时间。另外,由们增加了中断处理的延迟时间。另外,由于处理器在响应一个于处理器在响应一个IRQIRQ中断后要经历两中断后要经历两次跳转才能转到中断服务程序,因此也增次跳转才能转到中断服务程序,因此也增加

20、了一些延时。加了一些延时。 为了减少中断延迟,为了减少中断延迟,ARMARM在普通中断在普通中断IRQIRQ的基础上又增加了一个快中断的基础上又增加了一个快中断FIQFIQ,以,以处理有快速要求的外设的中断。处理有快速要求的外设的中断。 为减少延时,为减少延时,ARMARM在快中断中采取了在快中断中采取了两个措施:两个措施:(1 1)专门为快中断)专门为快中断FIQFIQ设置了一个设置了一个FIQFIQ模式,模式,并为这个模式配置了较多的私有寄存器,并为这个模式配置了较多的私有寄存器,从而可使中断服务程序有足够的寄存从而可使中断服务程序有足够的寄存器来使用,而不必与被中断服务程序使用器来使用,

21、而不必与被中断服务程序使用同一组寄存器,这样就免去了因寄存器冲同一组寄存器,这样就免去了因寄存器冲突而必需的保护及恢复现场工作。突而必需的保护及恢复现场工作。(2 2)ARMARM把把FIQFIQ的中断向量放在了中断的中断向量放在了中断(异常)向量表末尾(异常)向量表末尾0X0000001C0X0000001C处,因此处,因此它后面没有其它中断向量,允许用户将中它后面没有其它中断向量,允许用户将中断服务车工许程序直接放在这里。断服务车工许程序直接放在这里。2 2、复位中断、复位中断 复位通常在两种情况下发生复位通常在两种情况下发生:(:(1 1)系统初始运行时的正常上电;(系统初始运行时的正常

22、上电;(2 2)由程)由程序引起的复位。序引起的复位。 复位中断的优先级别最高,当系统响复位中断的优先级别最高,当系统响应复位中断时,系统会进入应复位中断时,系统会进入ARMARM的管理模的管理模式(式(SVCSVC模式)。模式)。3 3、软中断异常、软中断异常 SWI SWI是程序中使用的指令,从程序设是程序中使用的指令,从程序设计的角度来看,可以把它看承是一种目标计的角度来看,可以把它看承是一种目标地址固定为地址固定为0X000000080X00000008的特殊转移指令。的特殊转移指令。 该指令除了目标地址为硬件提供的该指令除了目标地址为硬件提供的固定地址外,它还会在转移的同时使处固定地

23、址外,它还会在转移的同时使处理器自动进入管理模式(理器自动进入管理模式(SVCSVC模式),在模式),在该模式下可以访问系统中的所有资源。该模式下可以访问系统中的所有资源。 由于它是由用户在程序使用指令而产由于它是由用户在程序使用指令而产生的中断,所以叫做软中断。它也是所有生的中断,所以叫做软中断。它也是所有中断(异常)中唯一的一个同步事件。中断(异常)中唯一的一个同步事件。4 4、预取指令中止异常和数据中止异常、预取指令中止异常和数据中止异常 这是给操作系统存储管理模块准备的这是给操作系统存储管理模块准备的异常。异常。5 5、未定义指令异常、未定义指令异常 由于由于ARMARM是是3232位

24、指令系统,理论上位指令系统,理论上ARMARM可以拥有可以拥有2 23232个指令,但实际上它远远没有个指令,但实际上它远远没有这么多指令。这么多指令。 在实践中,用户通常利用这个异常中在实践中,用户通常利用这个异常中断服务程序来模拟某种硬件的功能,或断服务程序来模拟某种硬件的功能,或自定义一些指令来完成一些特殊功能。自定义一些指令来完成一些特殊功能。7.2.3 ARM7.2.3 ARM中断(异常)运行模式中断(异常)运行模式 处理器响应中断(异常)后所进入的处理器响应中断(异常)后所进入的模式如下表所示:模式如下表所示:中断(异常)中断(异常)进入的模式进入的模式复位(复位(RESETRES

25、ET)管理模式(管理模式(SVCSVC)未定义指令(未定义指令(UNDEFUNDEF)未定义指令中止模式(未定义指令中止模式(UNDUND)软中断(软中断(SWISWI)管理模式(管理模式(SVCSVC)预取指令中止(预取指令中止(PABTPABT)中止模式(中止模式(ABTABT)中断(异常)中断(异常)进入的模式进入的模式数据中止(数据中止(DABTDABT)中止模式(中止模式(ABTABT)快中断(快中断(FIQFIQ)快中断模式(快中断模式(FIQFIQ)中断(中断(IRQIRQ)中断模式(中断模式(IRQIRQ)续表续表7.2.4 7.2.4 中断(异常)的响应过程及返回中断(异常)

26、的响应过程及返回1 1、中断(异常)的响应过程、中断(异常)的响应过程 当处理器响应中断(异常)请求后,当处理器响应中断(异常)请求后,系统的硬件电路一般需要先做四项准备工系统的硬件电路一般需要先做四项准备工作:作:(1 1)把程序计数器()把程序计数器(PCPC)中的当前地址)中的当前地址值保存到连接寄存器值保存到连接寄存器LRLR中。中。(2 2)把当前程序状态寄存器()把当前程序状态寄存器(CPSRCPSR)中)中的内容保护到模式私有寄存器的内容保护到模式私有寄存器SPSRSPSR中。中。(3 3)将寄存器)将寄存器CPSRCPSR中的中的MODEMODE域设置为中域设置为中断(异常)应

27、进入的运行模式。断(异常)应进入的运行模式。(4 4)对)对CPSRCPSR的的I I位和位和F F位进行相应的设置,位进行相应的设置,以防止再次响应同一个中断请求。以防止再次响应同一个中断请求。 接下来便到中断向量表中获取中断向接下来便到中断向量表中获取中断向量,转向用户所需编写的中断(异常)服量,转向用户所需编写的中断(异常)服务程序。务程序。 下图为复位的工作过程。下图为复位的工作过程。 未定义指令响应过程:未定义指令响应过程: 软中断响应过程:软中断响应过程: 预取指令中止响应过程:预取指令中止响应过程: 数据访问中止异常响应过程:数据访问中止异常响应过程: IRQIRQ响应过程:响应过程: FIQ FIQ的响应过程:的响应过程:2 2、中断(异常)处理的返回、中断(异常)处理的返回 当一个中断(异常)发生时,处理器当一个中断(异常)发生时,处理器会自动在会自动在LRLR中保存一个与当前中保存一个与当前PCPC值相关的值相关的信息,中断服务程序可以利用这个信息来信息,中断服务程序可以利用这个信息来推算返回地址。具体如下表:推算返回地址。具体如下表:异常异常/ /中断中断地址地址说明说明复位(复位(RESETRESET)- - -未

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论