0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你对中断究竟有多了解?

Dp1040 来源:技术让梦想更伟大 2023-06-16 16:41 次阅读

如果要你讲一下中断,你会怎么去描述一个中断的触发流程呢?

最基础的可能就是:保护现场 - 中断处理 - 恢复现场...

那保护现场做了什么事情?中断处理需要注意什么事情?恢复现场又做了什么事情?

相对应的,关于中断,还有很多这样的问题:

触发中断的因素有哪些?

各中断源如何向CPU提出中断请求?

CPU如何区分是哪个中断触发的请求?

当多个中断源同时提出中断请求时,中断系统如何确定优先响应哪个中断请求?

CPU在什么条件、什么时候、以什么方式来响应中断?

CPU响应中断后,如何保护现场?

CPU响应中断后,如何停止源程序的执行而转入中断服务程序的入口地址?

CPU响应中断结束后,如何恢复现场?如何返回到源程序的间断处?

在中断处理的过程中又出现了新的中断请求,CPU该如何处理?

设计中断系统时,需要考虑哪些主要问题?

本文希望就以上的问题,对中断触发和响应流程进行一个详细的描述。力求可以通过一篇文章将中断讲明白!

首先,我先简单的描述一个中断的触发流程:

我们通过某些操作(例如按下按键),产生了电信号(电平触发 / 边沿触发);

这些电平信号,通过硬件上的中断引脚,被传递到了中断控制器

如果该中断没有被关闭/屏蔽,中断控制器会向CPU发送中断请求;

CPU收到中断请求后,判断是否响应该中断;

(保护现场)如果一切条件满足,响应中断,将当前正在运行的程序上下文保存到寄存器/堆栈中;

(中断处理)CPU寻找中断服务程序的入口地址,跳转到中断服务程序运行;

(恢复现场)中断处理结束后,CPU会将之前保存在堆栈中的断点和寄存器重新恢复;

CPU继续运行之前被打断的程序。

在上述例子中,相关的问题如下:

产生中断的方式有哪些?

答:主动触发、软件触发、硬件触发。

主动触发(程序中通过函数接口,通知CPU进行中断处理)

内部中断(数据溢出、非法地址访问、未识别的操作码...)

外部中断(输入/输出设备、硬件设备故障...)

CPU如何区分是哪个中断源触发的请求?

答:中断引脚+中断号。

每一个能够发出中断请求的硬件设备控制器都有一条名为“IRQ”的输出线。

所有的IRQ输出线都与一个名为可编程中断控制器的硬件电路输入引脚相连。

中断控制器会监视IRQ线上的信号。

如果IRQ线上出现信号,中断控制器会将其转化成对应的中断号,通知CPU处理。

CPU根据中断号,在中断向量表中找到对应的中断处理程序

外部设备进行I/O操作时,会随机产生中断请求信号。这个信号中会有特定的标志,使计算机能够判断是哪个设备提出中断请求,这个信号就叫做中断号。

中断号一般是由中断控制器提供的,中断控制器支持一系列的中断源,并提供对应的中断号。中断引脚也是由中断控制器上引出来的。

即中断控制器将中断引脚和中断号关联起来,CPU又将中断号和中断处理程序关联起来,

最终实现了通过中断引脚上的信号,触发CPU去执行中断处理程序。

当多个中断源同时提出中断请求时,中断系统(中断控制器)如何确定优先响应哪个中断请求?

答:中断优先级+中断屏蔽

为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。

在实际系统中,常常遇到多个中断源同时请求中断的情况,这时CPU必须确定首先为哪一个中断源服务,以及服务的次序。

解决的方法是中断优先排队,即根据中断源请求的轻重缓急,排好中断处理的优先次序即优先级( Priority ),又称优先权,先响应优先级最高的中断请求。

另外,当CPU正在处理某一中断时,要能响应另一个优先级更高的中断请求,而屏蔽掉同级或较低级的中断请求,形成中断嵌套。

CPU在什么时候、什么条件、以什么方式来响应中断?

答:可以从产生中断、接收中断、执行中断角度去描述。

中断控制器对应的中断引脚上收到信号(产生中断),中断未被屏蔽、中断优先级最高(接收中断),CPU当前处于可以切换上下文的状态(执行中断)。

CPU响应中断条件:

有中断源发出的中断请求;

中断总允许位EA=1,即CPU开中断;

申请中断的中断源的中断允许位为1,即中断没有被屏蔽;

无同级或更高级中断正在被服务;

当前的指令周期已经结束。

(保护现场)CPU响应中断后,在开始执行中断服务程序之前,需要做哪些操作?如何保护现场?如何保存原程序断点?

答:简单来说就是,寄存器、堆栈、压栈。

保护现场就是当出现中断时,把CPU的状态,也就是当前程序地址保存在寄存器中,随后转向执行其他任务,当任务完成,从寄存器中取出地址继续执行。保护现场其实就是保存中断前一时刻的状态不被破坏。

CPU保护现场做如下动作:

将标志寄存器内容压入堆栈,以保护中断时的状态;

将IF和TF标志清0,目的是防止在中断响应的同时又来别的中断,而将TF清0是为了防止CPU以单步方式执行中断处理子程序。这时要特别提醒,因为CPU在中断响应时自动关闭了IF标志,因此用户如要进行中断嵌套时,必须在自己的中断处理子程序中用开中断指令来重新设置IF;

保护断点,断点指的是在响应中断时,主程序当前指令下面的一条指令的地址。因此保护断点的动作就是将当前的IP和CS的内容入栈,保护断点是为了以后正确地返回主程序;

Ps:保护现场应该包括保护程序断点和保护CPU内部各寄存器内容的现场俩个方面

Ps:主程序和中断服务子程序都要使用CPU内部寄存器等资源,为使中断处理程序不破坏主程序中寄存器的内容,应先将断点处各寄存器的内容压入堆栈保护起来,再进入的中断。

(执行中断)CPU响应中断后,如何转入中断服务程序运行?

答:中断向量表。

CPU响应中断做如下动作:

根据中断号(由中断控制器传递),在中断向量表中找出相应的中断服务程序的入口地址,跳转至中断服务子程序执行。

Ps:驱动在申请注册中断时,会将中断服务程序和中断号进行绑定。

Ps:中断号是由中断控制器提供的,中断控制器将对应的中断号和中断引脚进行绑定。

(恢复现象)CPU响应中断结束后,在开始执行中断服务程序之后,需要做哪些操作?如何恢复现场?如何返回到原程序的断点处?

答:简单来说就是,寄存器、堆栈、出栈。

恢复现场就是指将各寄存器和指针恢复到中断前的状态。

当中断处理完毕后,CPU将原程序保存在堆栈中的各个寄存器的内容弹出,即恢复原程序断点处寄存器的原值。

CPU保护现场做如下动作:

恢复断点,断点指的是在响应中断时,原程序当前指令下面的一条指令的地址。因此恢复断点的动作就是将先前的指针和寄存器的内容出栈,即恢复原程序断点处寄存器的原值;

将IF和TF标志置1,允许接收新的中断;

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10854

    浏览量

    211587
  • 中断
    +关注

    关注

    5

    文章

    898

    浏览量

    41471
  • 中断系统
    +关注

    关注

    1

    文章

    96

    浏览量

    61015
  • 程序
    +关注

    关注

    117

    文章

    3785

    浏览量

    81004

原文标题:你对中断究竟有多了解?试着把中断的触发流程整理了一遍...

文章出处:【微信号:玩点嵌入式,微信公众号:玩点嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    都说IC设计高薪行业,薪水究竟有多高?大家来晒晒

    IC设计高薪行业,薪水究竟有多?大家来晒晒
    发表于 12-19 16:16

    分布式RAM和Block RAM之间究竟有什么区别?

    您好!分布式RAM和Block RAM之间究竟有什么区别?两者都只是芯片内存,对吧?但我不知道两者之间的区别。和..下一个问题.. isaboutMUX ..根据7系列概述,7系列FPGA支持全范围
    发表于 07-19 06:37

    物联网生物识别技术究竟有何意义?

    说到物联网生物识别技术大家感觉脱离我们的日常生活,本文带大家近距离了解物联网生物识别技术究竟有何意义?各位工程师读完此文心里就清楚多了
    发表于 10-21 09:57

    液晶PC与液晶电视究竟有什么区别?

    为什么要选择液晶?液晶PC与液晶电视究竟有什么区别?如何选择液晶PC与液晶电视?
    发表于 06-07 06:13

    请问一下RFID与NFC究竟有什么关系?

    RFID与NFC究竟有什么关系?
    发表于 06-15 07:06

    面向列的HBase存储结构究竟有什么样的不同之处呢?

    HBase是什么?HBase的存储结构究竟是怎样的呢?面向列的HBase存储结构究竟有什么样的不同之处呢?
    发表于 06-16 06:52

    请问一下芯片制造究竟有多难?

    请问一下芯片制造究竟有多难?
    发表于 06-18 06:53

    PCI-E4.0究竟有什么优势?

    PCI-E4.0究竟有什么优势?PCI-E究竟指的是什么呢?
    发表于 06-18 06:54

    LPDDR5和LPDDR4X两者究竟有多大区别?

    有人说嵌入式闪存芯片LPDDR5和LPDDR4X差不多?真的如此吗?两者究竟有多大区别?
    发表于 06-18 06:15

    内存时序究竟有多重要呢?究竟该如何去选择内存条呢?

    内存时序究竟有多重要呢?究竟该如何去选择内存条呢?DDR内存时序是高一些好还是低一些好?
    发表于 06-18 08:20

    OpenPLC开源工业控制器究竟有何用处

    OpenPLC开源工业控制器有哪些优点?OpenPLC开源工业控制器有哪些功能?OpenPLC开源工业控制器究竟有何用处?
    发表于 09-02 07:42

    计算机硬件计量单位究竟有什么含义

    在我们购买和日常使用计算机的过程中,不可避免地会遇到一些硬件计量单位,也许这些单位都可以朗朗上口,可是,它们究竟有什么含义?相关联的单位之间的换算关系是怎样的?对硬件的性能有什么影响?恐怕了解
    发表于 09-08 07:31

    户外电源究竟有什么功能与细节呢

    电源的详细功能以及具体细节,这会让的户外移动电源使用增添许多麻烦。那么户外电源究竟有什么功能与细节呢?相信看完以下内容会让户外爱好者对户外电源的便利之处理解更上一层楼。一、多种输出、输入方式户外移动电源一般都会存在多种输出、输入方式。在输出方面,一般会提供DC、AC、U
    发表于 12-30 07:52

    嵌入式与单片机它们之间究竟有什么区别

    什么是嵌入式?什么是单片机?嵌入式与单片机它们之间究竟有什么区别?
    发表于 01-19 06:27

    共模电感选型依据究竟有哪些

    电子发烧友网站提供《共模电感选型依据究竟有哪些.docx》资料免费下载
    发表于 05-06 10:26 1次下载