中断简介

1.中断简介

中断是计算机中的一个十分重要的概念,在现代计算机中毫无例外地都采用中断机制。在计算机执行程序的过程中,由于出现某个特殊情况(或称为"事件"),使得CPU中止现行程序,而转去执行处理该事件的处理程序(俗称中断处理或中断服务程序),待中断服务程序执行完毕,再返回断点继续执行原来的程序,这个过程称为中断。

2.中断信号线

在数字逻辑层面,外部设备和处理器之间有一条专门的中断信号线,用于连接外设与CPU的中断引脚。当外部设备发生状态改变时,可以通过中断信号线向处理器发出中断请求。

处理器一般只有两根中断线,一根是IRQ线(中断请求线),一根是FIQ线(快速中断请求线)。而管理的外设却有很多,为了解决这个问题,外设的中断信号线并不与处理器直接相连,而是与中断控制器相连接,后者才跟处理器的中断信号线连接。中断控制器一般通过处理器进行编程和配置。

3.中断的实现过程

中断不需要处理器轮询外设的状态,设备在自己发生状态改变时将主动发送一个信号给中断控制器,中断控制器会接收到通知信号(前提是中断控制器不主动屏蔽该信号),并经过中断优先级控制器的处理,最后由中断控制器向处理器发送中断信号,最后处理器接收到该信号(前提是处理器不主动屏蔽该信号)。大体流程如图3- 1所示。

图3- 1 中断实现流程

4.中断处理过程

当CPU收到中断或者异常时,它会暂停执行当前的程序或任务,通过一定的机制跳转到负责处理这个信号的相关处理程序中,在完成对这个信号的处理后再跳转回刚才被打断的程序或任务中继续执行,其具体的处理过程如下。

4.1  中断响应前的准备

系统要想能够应对各种不同的中断信号,总的来看就是需要知道每种信号应该由哪个中断服务程序负责以及这些中断服务程序具体是如何工作的。

一般系统将所有的中断信号统一进行了编号(一共256个:0~255),这个号称为中断向量,具体哪个中断向量表示哪种中断有的是规定好的,也有的是在给定范围内自行设定的。

中断向量和中断服务程序的对应关系主要是由中断向量表负责。操作系统在中断向量表中设置好各种中断向量对应的中断服务函数,留待CPU查询使用。

具体负责处理中断(异常)的代码是由软件,也就是操作系统实现的,这部分代码属于操作系统内核代码。也就是说从CPU检测中断信号到加载中断服务程序以及从中断服务程序中恢复执行被暂停的程序,这个流程基本上是硬件确定下来的,而具体的中断向量和服务程序的对应关系设置和中断服务程序的内容是由操作系统确定的。

4.2  CPU检查是否有中断/异常信号

CPU在执行完当前程序的每一条指令后,都会去确认在执行刚才的指令过程中中断控制器是否发送中断请求,如果有,那么CPU就会在相应的时钟脉冲到来时从总线上读取中断请求对应的中断向量。

4.3  中断处理

当异常中断产生时,系统执行完当前指令后,将跳转到异常向量表的相应地址去执行。该地址处是一句跳转指令,跳转到系统定义的总中断服务函数里面去执行,然后进行任务上下文的保存,读取中断控制器的状态位以得出中断向量号,根据中断向量表中的中断向量号找到对应的中断服务函数执行,执行结束后,恢复被中断任务的上下文,继续执行任务。中断处理流程如图4- 1所示。

图4- 1 中断处理流程

时间: 2024-09-13 09:18:09

中断简介的相关文章

手动计算定时器 中断简介

以下由软件计算得出12M晶振,定时器模式16位在12T下1毫秒的时间 void Timer0Init(void) //1毫秒@12.000MHz { AUXR &= 0x7F; //定时器时钟12T模式 TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x01; //设置定时器模式 TL0 = 0x18; //设置定时初值 TH0 = 0xFC; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 } 验证软件的结果:      

STM32 外部中断简介

文章来源:http://blog.chinaunix.net/uid-24219701-id-4088004.html STM32  IO 口中断的一些基础概念.STM32 的每个 IO 都可以作为外部中断的中断输入口,这点也是 STM32 的强大之处.STM32F103 的中断控制器支持 19 个外部中断/事件请求.每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置.STM32F103 的19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断. 线 16:连接到 PVD 输出

STM32外部中断简介

结构体里的寄存器的具体含义在STM32的技术手册上很详细. 特别注意:SYSTICK不是NVIC来控制.

SylixOS Zynq平台私有中断绑定

1. 概述 本篇主要介绍在Zynq平台编写中断相关的驱动程序时,涉及CPU私有中断的相关绑定办法. 2. 私有中断简介 私有中断是多核CPU上特有的中断,私有中断只能被其所有者核心获取和响应,不会被其他核发现.常见的私有中断有全局定时器,私有看门狗定时器,私有定时器等,Zynq平台上还有来自PL的FIQ\IRQ. 3. 私有中断的绑定方法 3.1      常规共享中断绑定 Zynq平台使用的是GIC通用中断框架,常规的共享中断绑定和普通的中断绑定没有区别,在SylixOS上直接调用API_In

51单片机中断机制(定时器/计数器)

单片机中断简介 52单片机一共有6个中断源,它们的符号,名称以及各产生的条件分别如下: INT0 - 外部中断0,由P3.2端口线引入,低电平或下降沿引起 INT1 - 外部中断1,由P3.3端口线引入,低电平或下降沿引起 T0    - 定时器/计数器0中断, 由T0计数器计满回零引起 T1    - 定时器/计数器1中断, 由T1计数器计满回零引起 T2    - 定时器/计数器2中断, 由T2计数器计满回零引起 TI/RI - 串行口中断,串行端口完成一帧字符发送/接收后引起 其中T2是5

嵌入式(Embedded System)笔记 —— Cortex-M3 Introduction and Basics(下)

随着课内的学习,我想把每节课所学记录下来,以作查阅.以饲读者.由于我所上的是英文班课程,因此我将把关键术语的英文给出,甚至有些内容直接使用英文. 本次所介绍内容仍是关于Cortex-M3的基础内容,相对上一篇来说,介绍的内容更加具体和细致了. --------------------------------------------------------------------------------------------------------------------------------

SylixOS中GIC通用中断控制器(一)——GIC简介

1. GIC简介 操作系统中,中断是很重要的组成部分.有了中断系统才可以不用一直轮询(polling)是否有事件发生,系统效率才得以提高.一般在系统中,中断控制分为三个部分:模块.中断控制器和处理器.其中模块通常由寄存器控制是否使能中断和中断触发条件等:中断控制器可以管理中断的优先级等,而处理器则由寄存器设置用来响应中断. 1.1 GIC结构 作为 ARM 系统中通用中断控制器的是 GIC(Generic Interrupt Controller),目前有四个版本,V1-V4(V2最多支持8个A

linux的中断子系统简介(汇编和hard irq部分)_ARM平台(S5PV210)

2011年9月份时候做的笔记, 当时阅读中断子系统的代码后做的一个PPT, 内核版本不记得了, 硬件平台是samsung 的S5PV210. 这部分主要是针对汇编和hard irq的部分, 在hard irq处理后的softirq的处理, 以及下半部的处理(tasklet/workqueue)都没有涉及. Agenda ?Interrupts in ARM ?Important structs ?External interrupt resources in S5PV210 ?Code flow

Java多线程的中断原理和 interrupt() 几个方法简介

上节讲到,线程被 wait() 通知后进入等待池,可以由本线程的 interrupt() 方法解救,使本线程可以去重新竞争锁等等.是如何实现的呢? 实际上,中断仅仅是在线程对象做一个标记而已,称为中断标志.中断标志默认为false,在线程 t 调用自己的 t.interrupt() 方法后,中断标志就变成true.但是,中断标志为true实际上不会对正常运行的线程产生影响,因为正常运行的线程不会自己去检查自己的中断标志. 只有那些被阻塞的线程才会不停的检查自己的中断标志,这个阻塞包括因 wait