查缺补漏----I/O中断处理过程

news/2024/10/4 15:21:31 标签: 单片机, 嵌入式硬件, 计算机组成原理

中断优先级包括响应优先级和处理优先级,响应优先级由硬件线路或查询程序的查询顺序决定,不可动态改变。处理优先级可利用中断屏蔽技术动态调整,以实现多重中断。下面来看他们如何运用在中断处理过程中:

中断控制器位于CPU和外设之间,用于处理I/O中断请求。以下是一个简化的中断控制器:

现在有A,B,C三个中断源。中断响应优先级:A>B>C,中断处理优先级:C>B>A

根据图来看,CPU响应中断应该具备3个条件:

① 在 CPU 内部设置的中断屏蔽寄存器(触发器)必须是开放的。

② 外设有中断请求时,中断请求寄存器(触发器)必须处于“1”状态,保持中断请求信号。

③ 外设(接口)中断允许触发器必须为“1”,这样才能把外设中断请求送至 CPU。

具备上述三个条件时,CPU 在现行指令结束的最后一个状态周期响应中断。

假设CPU正在处理A中断源的中断请求,此时B,C同时发出了中断请求,CPU执行完当前指令后,会检查INTR(中断请求信号寄存器)是否有效(INTR高电平有效)。

怎么看INTR是否有效,那就要看屏蔽寄存器是否会将信号屏蔽,由于中断处理优先级C>B>A,所以屏蔽寄存器不会屏蔽中断信号,INTR会接收到中断请求,变为有效。

CPU是否能检测到中断请求信号有效,是由中断处理优先级决定的,而不是中断响应优先级。

由于现在B,C的处理优先级都大于A,所以都要被送到判优电路当有多个中断源的中断请求到达判优电路时,就由中断响应优先级来决定CPU应该响应哪一个。响应优先级B>C,所以向量地址形成线路会形成中断源B的中断类型号(也就是下图的送中断向量的过程)。

CPU响应B中断源的中断请求,执行B的中断服务程序,程序会设置新的中断屏蔽字(每个中断源对应一个屏蔽字,其中1越多,优先级越高),并且保存现场,并且开中断。

由于C的中断请求还没有被处理,并且处理优先级C>B,所以B的中断服务程序又会响应C中断源发来的中断请求。当C的中断服务程序执行完后,返回到B,B的服务程序再返回到A。所以,完成顺序C>B>A,响应顺序B>C。

总结(非常重要):

中断优先级包括响应优先级和处理优先级,中断屏蔽标志改变的是处理优先级。中断响应优先级是由中断查询程序或中断判优电路决定的,它反映的是多个中断同时请求时哪个先被响应即中断服务程序开始执行的顺序。在多重中断系统中,中断处理优先级决定了本中断是否能打断正在执行的中断服务程序,决定了多个中断服务程序执行完的次序

注:

中断类型号是通过数据线传给CPU的,一定要记得地址线是单向的(地址只能从 CPU 传向外部存储器或 I/O 端口)。中断类型号用于指出中断向量的地址,CPU响应某个外部中断后,就从数据总线上获取该中断源的中断类型号,然后据此计算对应中断向量的地址,再根据该地址从中断向量表中取出中断服务程序入口地址,即中断向量。

② 只有每条指令执行的最后一个操作控制信号CPU才会检测INTR是否有中断请求信号CPU采样到INT信号有效,则进入中断响应周期。

③ CPU检测到信号有效,进入中断响应周期,隔一段固定的时间就会发出中断查询信号,也就是在中断响应过程中,发出中断查询信号(中断回答信号)。由这个信号,所有未被屏蔽的信号就会进入判优电路,由判优线路决定是否响应。

到这里就可以更清楚地理解中断响应的条件:

① CPU处于开中断状态        ② 一条指令执行完        ③ 至少要有一个未被屏蔽的中断请求

中断响应的时间点和异常处理的时间点是不一样的,中断一定是在一条指令执行结束后开始查询有无中断请求,有的话立即响应,所以一定是在指令执行完时响应中断,而异常发生在指令执行过程中,异常的处理是在指令执行中进行的。

中断处理的过程:

中断响应:

中断响应是硬件完成的,也就是从总线上取中断地址,CPU会做三件事:

① 关中断;② 保护断点和程序状态;③ 识别中断源:取得中断服务程序的首地址和初始PSW送PC和PSWR

执行中断服务:

(1)准备阶段:

① 保护现场(比如一些通用寄存器的内容)及旧屏蔽字(比如B打断A的中断服务程序后,要保存A的中断屏蔽字,以便中断返回时恢复旧的屏蔽字)

② 查明原因(软件识别中断时才会用到)

③ 设置新屏蔽字 ④ 开中断

注:对于保存屏蔽字,设置新的屏蔽字以及开中断,都是针对多级中断的,因为可能会有多个中断请求,所以需要设置屏蔽字和开中断。

(2)进行具体的中断处理

(3)恢复阶段:
① 关中断 ② 恢复现场及旧屏蔽字 ③ 清除中断标志(清除该中断源的中断请求,否则CPU又检测到中断,又会反复进入中断)④ 开中断 ⑤ 中断返回

注:这里为什么又要开中断了呢?这个开中断是对应中断响应的关中断的,如果这里不开中断就没有办法响应新的中断请求了。

所以:

对于单级中断:

中断响应:

① 关中断        ② 保存断点和程序状态        ③ 寻找中断程序入口地址

中断服务:

① 保存现场        ② 处理中断事件       ③ 恢复现场        ④ 开中断        ⑤ 中断返回

对于多级中断:

中断响应:

① 关中断        ② 保存断点和程序状态        ③ 寻找中断程序入口地址

中断服务:

① 保存现场和屏蔽字        ②开中断        ③ 处理中断事件       ④ 关中断        ③ 恢复现场和屏蔽字        ④ 开中断        ⑤ 中断返回

(1)1号中断源:11111 2号:01100 3号:00100 4号:01111 5号: 01101

① 先响应2的中断请求,即保存现场,保存中断屏蔽字,设置新的中断屏蔽字,开中断。一旦开中断,就会立马响应4,因为4的中断处理优先级大于2。

② 处理完4的中断服务程序后,会回到2继续执行其中断服务程序。

③ 中断处理优先级1>5>2>3,所以当1,3,5同时发出中断请求,2能屏蔽3。

④ 中断响应优先级1>5,所以先执行1,并且1的中断处理优先级也是最高的,所以1不会被5打断。(如果这里1的中断处理优先级小于5,则1中断服务程序执行过程中会响应5的中断请求)

⑤ 1处理完后,返回2,由于5的中断处理优先级大于2,所以5会被响应。

⑥ 由于2的处理优先级大于3,所以3号中断源被2号屏蔽,只有当2号执行完后,并且返回用户程序(因为2号的中断屏蔽字决定了2号是检测不到3号的中断请求的),再执行3号中断请求

例题:


http://www.niftyadmin.cn/n/5690077.html

相关文章

27 基于51单片机的方向盘模拟系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机,采用两个MPX4115压力传感器作为两路压力到位开关电路, 采用滑动变阻器连接数模转换器模拟重力加速度传感器电路; 一个按键控制LED灯的点亮与…

取反与while错误,while卡死,非成功不结束思想总结

一般我们写函数配置硬件,都需要返回它的成功与否。我们以成功为一,不成功为零,借助这两个变量,我们就可以设计一个死循环,让它不成功不结束的思想 while(1){if( open(&a…

ARM嵌入式学习--第一天

-ARM核介绍 -CPU核 CPU又叫中央处理器,其主要功能是进行算数运算和逻辑运算,内部结构大概可以分为控制单元,算术逻辑单元和储存单元等几个部分 -ARM核 工作模式: user mode:用户模式是用户程序的工作模式,他运行在操作…

防范.[support2022@cock.li].colony96勒索病毒:数据保护、恢复与安全意识提升

导言 在数字世界的暗流涌动中,.[support2022cock.li].colony96勒索病毒以其独特的智能监控技术和狡猾的传播策略,悄然成为网络安全领域的一颗“定时炸弹”。本文旨在深入剖析这一新型勒索病毒的运作机制,探索创新的数据恢复方法,…

数据仓库!企业决策的智慧引擎

数据仓库!企业决策的智慧引擎 前言数据仓库 前言 今数字化浪潮汹涌澎湃的时代,数据已然成为企业航行于市场海洋的罗盘,而数据仓库则是那承载罗盘的坚固船只。当我们深入探究数据仓库的世界,就仿佛打开了一扇通往企业智慧核心的大…

关于Fake Location定位,运动世界校园问题

不好意思,之前那个文章其实是很早之前的,不知道为什么审核了很久一直没有通过,然后前几周莫名其妙点了一下重新发布,竟然发布成功了,这个方法已经失效了,要可以稳定,我建议是买一台root的手机&a…

使用Pytorch构建自定义层并在模型中使用

使用Pytorch构建自定义层并在模型中使用 继承自nn.Module类,自定义名称为NoisyLinear的线性层,并在新模型定义过程中使用该自定义层。完整代码可以在jupyter nbviewer中在线访问。 import torch import torch.nn as nn from torch.utils.data import T…

植物病虫害检测数据集 7800张 病虫害 带标注 voc yolo 7类

植物病虫害检测数据集 7800张 病虫害 带标注 voc yolo label| pic_ num| box_ num 越橘: . (932,980) 粘虫: (1104, 1104) 稻苞虫: (1389, 2269) 蝗虫: (1198, 1563) 蝽象若虫: (1594, 2576) . 绿蝽象: (1166&#xf…