嵌入式基础知识-中断处理过程

news/2024/11/17 22:45:14/

本篇来介绍中断,这是计算机系统以及嵌入式系统的重要概念。

1 中断基本概念

中断是CPU对系统发生的某个事件作出的一种反应。

中断的一些基本概念:

  • 中断源:引起中断的事件称为中断源
  • 中断请求:中断源向CPU提出处理的请求称为中断请求
  • 中断向量:中断源的识别标志,中断服务程序的入口地址
  • 中断向量表:按照中断类型号从小到大的顺序存储对应的中断向量,总共存储256个中断向量
  • 断点:发生中断时被打断程序的暂停点称为断点
  • 中断响应:CPU暂停现行程序转而为响应中断请求的过程称为中断响应
  • 关中断:在保护现场和恢复现场过程中都要先关闭中断,避免堆栈错误
  • 保存现场:保存程序当前断点执行所需的寄存器和相关数据
  • 中断服务程序:处理中断源的程序称为中断处理程序
  • 中断处理:CPU执行有关的中断服务函数称为中断处理
  • 中断返回:返回断点的过程称为中断返回

2 中断的分类

2.1 硬/软中断

按中断源的不同,可分为:

  • 硬件中断:由CPU外部的硬件,引入的中断,是随机的
  • 软件中断:软件中断其实并不是真正的中断,它们只是可被调用执行的一般程序,是预先设计的

2.2 外/内中断

根据中断源所在的位置,可以分:

  • 外部中断:一般指由计算机外设发出的中断请求,如:键盘中断、打印机中断、定时器中断等
  • 内部中断:是指如运算出错(除数为零、运算溢出、单步中断等)所引起的中断

2.3 可/非屏蔽中断

按是否可屏蔽,可分为:

  • 可屏蔽中断:通过INTR(Interrupt Require)线向CPU请求的中断,此类中断并不会影响系统运行,可随时处理,或不处理。此外,除受本身的屏蔽位控制外,还受一个总的中断允许标志位IF(Interrupt Flag)的控制
  • 非屏蔽中断(不可屏蔽中断):非屏蔽中断是出现在NMI(Non Maskable Interrupt)线上的请求 ,不受中断标志位IF的影响,内部中断是不可屏蔽的中断

3 中断处理具体细节

中断的整个处理过程,由硬件和软件共同完成,具体处理细节如下图:

根据此图,再来分析下各个过程:

  • 关中断:进入不可响应中断请求的中断,由硬件自动完成
  • 保存断点:把当前的程序计数器PC中的内容保存起来,用于中断处理结束后能继续执行主程序
  • 识别中断源:有多个中断源同时请求时,只能响应最高优先级的,因此需进一步判断中断源
  • 保存现场和屏蔽字:进入中断服务程序后,要先保存现场
  • 设置新的屏蔽字:用于改变中断优先级和控制中断的产生
  • 开中断:执行中断程序时,打开中断可实现更高优先级的中断响应,实现中断嵌套
  • 执行中断服务程序:执行中断服务程序中的内容
  • 再次关中断:使得恢复现场和屏蔽字时不会被中断打断
  • 恢复现场和屏蔽字:使现场和屏蔽字恢复到中断之前的状态
  • 再次开中断:中断执行完,现场恢复完后,可以打开中断
  • 中断返回:返回原程序继续执行

处理过程,会经历两次的开/关中断,也可用下图描述

4 总结

本编介绍了中断基本概念,中断的分类,以及 中断处理的具体细节


http://www.ppmy.cn/news/1049956.html

相关文章

C++编写算法实现串的置换操作Replace( S, T, R), 即将串S中所有与串T相等的子串置换为串R。

题目&#xff1a;.编写算法实现串的置换操作Replace( S, T, R), 即将串S中所有与串T相等的子串置换为串R。 实现代码&#xff1a; #include<iostream> #include <stdio.h> using namespace std; #define MaxSize 100 typedef struct { char data[MaxSize];int le…

数据结构 - 线性表的顺序存储

一、顺序存储定义&#xff1a; 把逻辑上相邻的数据元素存储在物理上相邻的存储单元中。简言之&#xff0c;逻辑上相邻&#xff0c;物理上也相邻顺序表中&#xff0c;任一元素可以随机存取&#xff08;优点&#xff09; 二、顺序表中元素存储位置的计算 三、顺序表在算法中的实…

[WMCTF 2023] crypto

似乎退步不了&#xff0c;这个比赛基本不会了&#xff0c;就作了两个简单题。 SIGNIN 第1个是签到题 from Crypto.Util.number import * from random import randrange from secret import flagdef pr(msg):print(msg)pr(br"""........ …

将eNSP Pro部署在华为云是什么体验

eNSP Pro简介 eNSP Pro 是华为公司数据通信产品线新推出的数通设备模拟器&#xff0c;主要应用在数据通信技能培训&#xff0c;为使用者提供华为数据通信产品设备命令行学习环境。 具备的能力 多产品模拟能力&#xff1a;支持数据通信产品线NE路由器、CE交换机、S交换机、AR…

【源码篇】基于ssm+bootstrap+jquery的学生成绩管理系统

系统介绍 基于ssmbootstrapjquery的学生成绩管理系统一共分为六大模块&#xff0c;分别是用户管理、课程管理、班级管理、学籍管理、学费管理、成绩管理 用户管理&#xff1a; 1、用户信息预览&#xff1a;查询并根据姓名搜索系统用户。 2、新增用户信息&#xff1a;添加系…

css的常见伪元素使用

1.first-line 元素首行设置特殊样式。 效果演示&#xff1a; <div class"top"><p>可以使用 "first-line" 伪元素向文本的首行设置特殊样式。<br> 换行内容 </p></div> .top p::first-line {color: red;} 2.first-lette…

免费内网穿透哪个好?

神卓互联是一种内网穿透技术&#xff0c;可以实现在外部网络访问公司内网的服务。通过建立一个加密的通道&#xff0c;神卓互联可以将内网的动态IP绑定技术&#xff0c;实现远程访问。 使用神卓互联进行内网穿透的步骤如下&#xff1a; 在公司内网中&#xff0c;安装并配置神卓…

【全链路追踪】XXL-JOB添加TraceID

文章目录 一、背景调用路径部署环境问题 二、方案三、Demo示例1、MDC2、RequestInterceptor3、HandlerInterceptor4、logback.xml 四、后续改进思路 一、背景 首先这个项目属于小型项目&#xff0c;由于人手以及时间限制&#xff0c;并未引入Skywalking等中间件来做调用链路追…