非淡泊无以明志,非宁静无以致远
全部博文(408)
分类: 嵌入式
2011-04-27 17:49:22
1. 中断的定义
中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。
2. 计算机为什么要采用中断
为了说明这个问题,再举一例子。假设你有一个朋友来拜访你,但是由于不知道何时到达,你只能在大门等待,于是什么事情也干不了。如果在门口装一个门铃,你就不必在门口等待而去干其它的工作,朋友来了按门铃通知你,你这时才中断你的工作去开门,这样就避免等待和浪费时间。计算机也是一样,例如打印输出,CPU传送数据的速度高,而打印机打印的速度低,如果不采用中断技术,CPU将经常处于等待状态,效率极低。而采用了中断方式,CPU可以进行其它的工作,只在打印机缓冲区中的当前内容打印完毕发出中断请求之后,才予以响应,暂时中断当前工作转去执行向缓冲区传送数据,传送完成后又返回执行原来的程序。这样就大大地提高了计算机系统的效率。
3.中断的处理过程
分为:关中断(在此中断处理完成前,不处理其它中断)、保护现场、执行中断服务程序、恢复现场、开中断。
4. 中断的类型
按引起中断的原因划分:输入、输出中断;计算机故障中断;实时时钟中断;软件中断;数据通道中断。按中断处理类型划分:不可屏蔽中断、可屏蔽中断。
5. 中断优先级
指各种中断源根据其重要性不同所划分的优先级别,高级别的中断源提出的中断请求可以使低级别的中断服务程序中断,转而执行出级别的中断服务。
如果在响应一个中断,执行中断处理的过程中,又有新的中断事件发生而发出了中断请求,应该如何处理也取决于中断事件的优先级。当新发生的中断事件的优先级高于正在处理的中断事件时,又将中止当前的中断处理程序,转去处理新发生的中断事件,处理完毕才返回原来的中断处理。在上面的例子中,我们假设“开门”比“接电话”的优先级高。在你写信时,电话铃响了,你去接电话,在通话的过程中,门铃又响了。因为“开门”的优先级高,你只能让通话的对方稍等,放下电话去开门。开门之后再回头继续接电话,通话完毕再回去继续写信。而如果“开门”比“接电话”的优先级低,那么在通话的过程中门铃响了也可以不予理睬,通话结束再去开门。当然,在日常生活中,谁也不会为“开门”和“接电话”规定一个优先级别的高低。但是在计算机中,各种中断事件很多,其优先级都有规定,否则就会乱套。在计算机中,中断事件的优先级是根据事件的实时性、重要性和软件处理的方便性来安排的。
6. 中断的屏蔽
中断屏蔽也是一个十分重要的功能,所谓中断屏幕蔽是指通过设置相应的中断屏蔽位,禁止响应某个中断。这样作的目的,是保证在执行一些重要的程序中不响应中断,以免造成迟缓而引起错误。例如,在系统启动执行初始化程序时,就屏蔽键盘中断,使初始化程序能够顺利进行。这时,敲任何键,都不会响应。当然对于一些重要的中断是不能屏蔽的,例如重新启动、电源故障、内存出错、总线出错等影响整个系统工作的中断是不能屏蔽的。因此,从中断是否可以被屏蔽来看,可分为可屏蔽中断和不可屏蔽中断两类。
7.中断源
凡是能够引起中断原因或提出中断请求的设备和异常故障均称被称为“中断源”。
通常中断源有以下几种:
(1)外部设备请求中断。一般的外部设备(如键盘、打印机和A / D转换器等)在完成自身的操作后,向CPU发出中断请求,要求CPU为他服务。 由计算机硬件异常或故障引起的中断,也称为内部异常中断。
(2)故障强迫中断。计算机在一些关键部位都设有故障自动检测装置。如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等,这些装置的报警信号都能使CPU中断,进行相应的中断处理。
(3)实时时钟请求中断。在控制中遇到定时检测和控制,为此常采用一个外部时钟电路(可编程)控制其时间间隔。需要定时时,CPU发出命令使时钟电路开始工作,一旦到达规定时间,时钟电路发出中断请求,由CPU转去完成检测和控制工作。
(4)数据通道中断。数据通道中断也称直接存储器存取(DMA)操作中断,如磁盘、磁带机或CRT等直接与存储器交换数据所要求的中断。
(5)程序自愿中断。CPU执行了特殊指令(自陷指令)或由硬件电路引起的中断是程序自愿中断,是指当用户调试程序时,程序自愿中断检查中间结果或寻找错误所在而采用的检查手段,如断点中断和单步中断等。
8. 中断分类
(1)按中断处理方式,可分为简单中断和程序中断。简单中断采用周期窃用的方法来执行中断服务,有时也称数据通道或DMA;程序中断不是窃用中央处理机的周期来进行中断处理,而是中止现行程序的执行转去执行中断服务程序。 (2)按中断产生的方式,中断可分为自愿中断和强迫中断。自愿中断即通过自陷指令引起中断,或称软件中断,例如程序自愿中断;强迫中断是一种随机发生的实时中断,如外部设备请求中断、故障强迫中断、实时时钟请求中断和数据通道中断等。
(3)按引起中断事件所处的地点,中断可分为内部中断和外部中断。外部中断也称为外部硬件实时中断,他由来自CPU某一引脚上的信号引起;内部中断也称软件指令中断,他是为了处理程序运行过程中发生的一些意外情况或调试程序而提供的中断。
(4)根据微处理器内部受理中断请求的情况,中断可分为可屏蔽中断和不可屏蔽中断。凡是微处理器内部的中断触发器(或许中断允许触发器)能够拒绝响应的中断,称为可屏蔽中断;凡是微处理器内部的中断触发器(或许中断允许触发器)不能够拒绝响应的中断,称为不可屏蔽中断。
9. 中断系统的功能
中断系统应具有的功能可归结为中断处理和中断控制。
(1)中断处理。中断处理包括发现中断请求、响应中断请求、中断处理和中断返回。
(2)中断控制。中断控制主要是实现中断优先级的排队和中断嵌套。
10.中断向量
中断向量: 中断向量即中断源的识别标志,可用来存放中断服务程序的入口地址或跳转到中断服务程序的入口地址。
(1)存放中断服务程序的入口地址
在PC/AT机中,中断向量是指中断服务程序的入口地址,每个中断向量分配4个连续的字节单元,两个高字节单元存放入口的段地址CS,两个低字节单元存放入口的段内偏移量IP。在PC/AT中,规定内存储器的最低1 KB用来存放中断向量(共256个),称这一片内存区为中断向量表,地址范围是0~3FFH.
在PC/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类型号还有其他的产生方法,如指令中直接给出、CPU自动形成等),即在中断响应期间8259A产生的是当前请求中断的最高优先级的中断源的中断类型号。中断类型号和中断向量之间有下面的关系: 中断类型号×4=存放中断子程序的首地址=中断向量, 有了存放中断向量的首地址,从该地址开始的4个存储单元中取出的就是中断服务程序的入口。
(2)跳转到中断服务程序的入口地址
在AVR或ARM微处理器中,中断向量的大小也是4个字节,但其中存放的不是中断程服务程序的入口地址,而是可执行的代码。当响应中断时,硬件自动执行相应中断向量处的跳转代码,然后跳转到具体的中断服务程序的入口地址。 中断向量地址和中断向量
中断向量:中断服务程序的入口地址
中断向量地址:内存中存放中断服务程序入口地址的地址
11. 中断处理程序的应用:
(1) BIOS和操作系统(如DOS、Windows)的常用功能程序,一般设计为中断处理程序的形式,用"INT n"指令调用。例如,DOS功能设计为21H号中断处理程序,用"INT 21H"指令调用。
(2) 硬件中断处理。当外部设备希望CPU处理某事件时,它向中断控制器8259发出一个INTR中断请求,8259再向CPU发出中断请求。 当CPU响应中断时(发出中断响应信号 ),8259向CPU提供中断类型码,CPU就转入对应的中断处理程序,处理该事件。
(3) 程序员编写程序时,也可以把常用的功能程序,设计为中断处理程序的形式,用"INT n"指令调用。