嵌入式中断管理课件.pptx

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式实时操作系统 及应用开发 第七章 中断管理 中断: 由于某种事件的发生而导致程序流程 的改变。产生中断的事件称为中断源。 CPU响应中断的条件: n至少有一个中断源向CPU发出中断信号; n系统允许中断,且对此中断信号未予屏蔽。 中断 中断一旦被识别, CPU会保存部分( 或全部)运行上下文(context,即寄存器 的值),然后跳转到专门的子程序去处理 此次事件,称为中断服务子程序(ISR)。 中断服务程序ISR § 中断服务程序的主要内容: – 保存上下文:保存中断服务程序将要使用的所有寄存 器的内容,以便于在退出中断服务程序之前进行恢复; – 如果中断向量被多个设备所共享,为了确定产生该中 断信号的设备,需要轮询这些设备的中断状态寄存器; – 获取中断相关的其他信息; – 对中断进行具体的处理; – 恢复保存的上下文; – 执行中断返回指令,使CPU的控制返回到被中断的程序 继续执行。 中断服务程序ISR 非预料事件是指事件发生的时间无法预知 即中断源何时产生中断不确定,是随机的。 但事件的性质及处理方法则是已知的,确定的 即中断服务程序是事先编写好的,只是何时 执行未知。 中断源产生中断的随机性使中断服务程序的执行也 具有随机性 即何时执行中断服务程序不是在程序中安排好 的。 中断服务程序ISR § 在实际应用中,广义的中断通常被分为中断、自陷和异常 (exception)等类别。 – 中断是由于CPU外部的原因而改变程序执行流程的过程, 属于异步事件,又称为硬件中断。自陷和异常则为同步 事件; – 自陷表示通过处理器所拥有的软件指令、可预期地使处 理器正在执行的程序的执行流程发生变化,以执行特定 的程序。自陷是显式的事件,需要无条件地执行; – 异常为CPU自动产生的自陷,以处理异常事件。 § 异常没有对应的处理器指令,当异常事件发生时, 处理器也需要无条件地挂起当前运行的程序,执行 特定的处理程序。 中断 § 分类方式 – 硬件中断是否可以被屏蔽: § 可屏蔽中断和不可屏蔽中断 – 中断源: § 硬件中断和软件中断 – 中断信号的产生: § 边缘触发中断和电平触发中断 – 中断服务程序的调用方式: § 向量中断、直接中断和间接中断 中断的分类 § 中断硬件设备的硬件中断线(也称为中断请求 IRQ)被中断控制器汇集成中断向量 ( interrupt vector); § 每个中断向量对应一个中断服务程序,用来存 放中断服务程序的入口地址或是中断服务程序 的第一条指令。 § 系统中通常包含多个中断向量,存放这些中断 向量对应中断服务程序入口地址的内存区域被 称为中断向量表。 向量中断 中断和指令周期 检查中断 处理中断 取周期 执行周期 中断周期 执行指令 取指令 中断和指令周期 不允许 中断 允许中断 停止 中断系统的功能 中断判优 中断请求 中断服务 中断返回 中断响应 E 中断响应、服务及返回 流程图 中断服务程序B 中断非嵌套 中断的非嵌套顺序处理 中断服务程序A 程序 中断嵌套 高优先级中断服 务程序B 中断的嵌套处理 中断服务程序A 程序 § 中断服务程序通常包括三个方面的内容: – 中断前导: § 保存中断现场,进入中断处理。 – 用户中断服务程序: § 完成对中断的具体处理。 – 中断后续: § 恢复中断现场,退出中断处理。 实时内核的中断管理 实时内核的中断管理 中断向量号0 中断向量号1 中断向量号2 中断向量号3 …… 中断向量号m 中断向量号0 中断向量号1 中断向量号2 中断向量号3 …… 中断向量号n 中断接管 程序 物理中断向量表 虚拟中断向量表 用户中断服务程序 用户中断服务程序0 用户中断服务程序1 用户中断服务程序3 用户中断服务程序2 用户中断服务程序m 中断栈 用户栈 堆 静态数据 代码 中断向量表 用户栈 堆 静态数据 代码 中断栈 中断向量表 中断栈的分布 内存高端 内存低端 (A) (B) § 实时内核通常提供如下中断管理功能: – 挂接中断服务程序。把一个函数(用户中断服务程序) 同一个虚拟中断向量表中的中断向量联系在一起。当 中断向量对应中断发生的时候,被挂接的用户中断服 务程序就会被调用执行; – 获得中断服务程序入口地址。根据中断向量,获得挂 接在该中断向量上的中断服务程

文档评论(0)

195****6963 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档