IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 计算机中断系统小结(cpu响应中断) -> 正文阅读

[嵌入式]计算机中断系统小结(cpu响应中断)

【README】

本文转自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐;


【1】中断介绍

1)作用:用中断系统实现了外设数据的输入输出; 还可以用于程序调试,计算机系统的异常事件,都可以用中断系统来处理;

2)中断因素

  1. 人为设置的中断;
  2. 程序性事故,如java异常;
  3. 硬件故障,如硬盘坏道;
  4. Io设备,如数据输入输出;
  5. 外部事件,如键盘中断按钮,调试程序;

【2】 cpu中断问题

【2.1】问题1:各中断源如何向cpu提出请求?

给每一个中断源设置一个触发器,用触发器来标记这个中断源是否提出了中断请求;
一个中断源对应一个中断请求触发器INTR,多个触发器组成了中断请求标记寄存器 INTR


【2.2】 问题2:各中断源同时提出请求,怎么办?

对中断源进行分级;响应优先级最高的中断源(对中断源的级别进行排队);

中断优先级分为:响应优先级和处理优先级;

响应优先级,由硬件决定(中断源)决定,无法修改;

处理优先级可以修改,通过设置中断屏蔽字到中断屏蔽寄存器来屏蔽其他中断


?【2.3】问题3:Cpu在什么条件,什么时间,以什么方式响应中断?

【2.3.1】cpu在什么条件下响应中断请求 ?

  • 为了表示cpu是否响应中断请求,有一个允许中断触发器EINT,值=1表示允许cpu 响应中断源发出的中断请求;

【2.3.2】 cpu在什么时间响应中断请求 ?

  • 通常情况下,cpu只有在指令的执行阶段结束以后,才能够响应中断请求;但cpu的某些指令的执行阶段比较长,这种情况就允许cpu在指令执行过程中,响应中断请求;

【2.3.3】 cpu响应中断过程:

  • 在指令执行以后,cpu发送查询信号到中断源的中断请求触发器;查询信号把中断请求触发器的输出端设置为1,把中断请求信号发送到排队电路;

补充:中断隐指令作为响应中断的一部分,有3个操作(保护程序断点,寻找入口地址,硬件关中断):如下:

中断响应步骤如下:

步骤

描述

1

Cpu完成指令执行阶段后,通过硬件向量法查找中断源;各个中断源的信号送入排队器;

2

排队器把中断源信号(只有一根线为1)送给中断标记触发器,从而把INT设置为1,而EINT设置为0;

3

此外,排队器还要把中断信号送给向量地址形成部件,这个向量地址送给PC,为执行中断服务程序做准备;(向量地址保存了中断服务程序的入口地址)

?【小结】中断响应过程中要解决的3个问题

问题1)保护程序断点 断点就是中断服务程序执行完成后,返回执行的指令;

?????? 方法1 断点存到特定地址(0号地址)内;

??????? 方法2 断点进栈;

问题2)寻找中断服务程序入口地址;

????????方法1 采用硬件向量法:把中断向量地址发送到PC寄存器;PC中保存了向量地址,这个向量地址保存了中断服务程序的入口地址,或跳转指令,该指令会跳转到中断服务程序;

????????方法2 软件查询法:中断识别程序的入口地址发送到PC寄存器;计算机执行中断识别程序来查找中断服务程序的入口地址;

问题3)硬件关中断(把中断允许触发器的值设置为0

关中断的目的: 避免在单重中断的机器中,在执行中断服务程序的过程中,有新的中断源会打断当前的中断服务程序的执行;

另外,即使在多重中断的cpu中,采用关中断的方式,也是为了保存程序断点,保存程序现场的一个过程;


【2.4】问题4:如何保护现场 ?

【2.5】问题5:如何恢复现场?

1 保护现场
1.1?? ?保存断点:由中断隐指令(硬件)来做,包括3个步骤(保存断点,形成中断服务程序的入口地址,硬件关中断) ;
1.2?? ?保存寄存器内容(由中断服务程序来做,软件):cpu当中的一些寄存器在执行中断服务程序的时候需要用到;这些寄存器的内容也要进行保存 ;因为这些内容将来中断返回的时候,主程序还要用到;

2 恢复现场
2.1 由中断服务程序完成;
因为中断服务程序在保存现场的时候,可以吧寄存器内容压入到堆栈中;
在中断服务程序恢复现场时,可以出栈;

3 中断服务程序的工作内容包括:
1)?? ?保护现场;push指令;
2)?? ?其他服务程序(中断服务程序剩余部分);
3)?? ?恢复现场;pop指令;
4)?? ?中断返回;IRET指令;


【2.6】问题6:如何寻找中断服务程序的入口地址?

通过硬件向量法,或程序查询法寻找;

【2.6.1】硬件向量法

排队器输出:只有1根线是高电平1,其他全部为低电平0;
向量地址形成部件:根据排队器输出,确定需要响应的中断源,从而确定执行哪一个中断服务程序(通过中断向量地址确定);

用硬件查找中断服务程序入口地址有两种方法:
方法1: 在中断向量地址的存储单元中存放一条跳转指令 如 jmp 200,则200就是中断服务程序的入口地址;
方法2: 在中断向量地址的存储单元中存放的就是中断服务程序的入口地址,如中断向量地址12H,其保存的入口地址200;

【2.6.2】程序查询法

中断识别程序查询步骤

步骤

指令

说明

1

SKP DZ 1#

SKP表示跳过下一条指令;

指令功能:查询第1号中断源的完成触发器D;看触发器是等于0还是等于1;

    1. 若等于1,说明中断源已经准备好了,提出了中断请求,cpu就要去执行响应的中断服务程序(步骤2);
    2. 若等于0,说明1号中断源没有准备好,则跳过指令2,进入2号中断源的查询(步骤3)

2

JMP 1#SR

执行中断服务程序

3

SKP DZ 2

……

4

JMP 2SR

……


【2.7】问题7:处理中断的过程中又出现新的中断 怎么办?

?处理过程如下:

  • 处理中断1时,发生了中断2,且中断2优先级大于中断1,则停止中断1的服务程序,转而执行中断2的服务程序;
  • 处理中断2时,发生了中断3,且中断3优先级大于中断2,则停止中断2的服务程序,转而执行中断3的服务程序;

上图中: 产生了3次中断,和3个断点,分别是 k+1, l+1, m+1 ;

【例】利用中断屏蔽字修改中断处理优先级(响应多个中断),参见

https://blog.csdn.net/PacosonSWJTU/article/details/123595867


?【3】cpu中断全过程小结

cpu全过程有5个步骤:

  1. 中断请求;
  2. 中断判优;
  3. 中断响应;
  4. 中断处理;
  5. 中断返回;

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:07:25  更:2022-03-21 21:08:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:25:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码