第5章中断管理_第1页
第5章中断管理_第2页
第5章中断管理_第3页
第5章中断管理_第4页
第5章中断管理_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第5章章 中断管理中断管理l 中断的基本概念l 中断处理过程l 中断评价指标l C/OS-II的中断和中断服务程序所谓中断是指某个事件所谓中断是指某个事件 发生发生时,系统中止现行程序的运时,系统中止现行程序的运行、引出处理事件程序对该行、引出处理事件程序对该事件进行处理,处理完毕后事件进行处理,处理完毕后返回断返回断 点,继续执行。点,继续执行。继续执行继续执行中断进入中断进入中断中断返回返回中断信号中断信号正在执行正在执行的程序的程序中断处中断处理程序理程序中断源,可以来源于中断源,可以来源于CPU的内部,也可以来源于的内部,也可以来源于CPU的外部的外部中断分为三个阶段中断检测中断响应

2、中断处理硬件做硬件做OS做做中断检测:每条指令结束的时候做中断检测:每条指令结束的时候做中断处理程序的中断处理程序的PC中断处理程序的中断处理程序的PS中断向量表中断向量表PCPS PC PS堆栈堆栈堆栈栈堆栈栈顶指针顶指针(4)(1)(2)(3)内存内存CPUCPU第第5章章 中断管理中断管理l 中断的基本概念l 中断处理过程l 中断评价指标l C/OS-II的中断和中断服务程序 保留被中断程序的现场保留被中断程序的现场 进入相应的中断服务例程进入相应的中断服务例程 恢复被中断程序的现场恢复被中断程序的现场中断中断返回返回中断中断进入进入k+0现行程序现行程序k+1由操作系统做由操作系统做除

3、了除了PCPC、PSPS以以外的寄存器外的寄存器中断的处理方式l非抢占的式内核非抢占的式内核l抢占式内核抢占式内核中断是否允许嵌套不允许: 处理中断的时候,将屏蔽所有其他的中断请求。允许: 中断被划分为多个优先级,中断服务程序只屏蔽那些比当前中断优先级低或是与当前中断优先级相同的中断中断嵌套需要解决的问题:需要专门的中断栈?中断嵌套需要解决的问题:需要专门的中断栈?第第5章章 中断管理中断管理l 中断的基本概念l 中断处理过程l 中断评价指标l C/OS-II的中断和中断服务程序 中断延迟 中断响应时间 中断恢复时间 中断处理时间中断服中断服务务程序程序任务任务A AB B时间时间中断请求中断

4、请求(1)(1)任务或内核程序任务或内核程序(2)(2)中断延迟中断延迟中断响应中断响应获取中断向量获取中断向量(3)(3)CPUCPU上下文保存上下文保存(4)(4)内核中断服务程内核中断服务程序入口函数序入口函数(5)(5)用户中断服务子程序代码用户中断服务子程序代码(6)(6)内核中断服务程内核中断服务程序出口函数序出口函数(10)(10)内核中断服务程内核中断服务程序出口函数序出口函数(7)(7)CPUCPU上下文恢复上下文恢复(11)(11)中断返回中断返回(12)(12)CPUCPU上下文恢复上下文恢复(8)(8)中断返回中断返回(9)(9)任务任务任务响应任务响应中断恢复中断恢复

5、中断恢复中断恢复中断服中断服务务程序程序任务任务A AB B时间时间中断请求中断请求(1)(1)任务或内核程序任务或内核程序(2)(2)中断延迟中断延迟中断响应中断响应获取中断向量获取中断向量(3)(3)CPUCPU上下文保存上下文保存(4)(4)内核中断服务程内核中断服务程序入口函数序入口函数(5)(5)用户中断服务子程序代码用户中断服务子程序代码(6)(6)内核中断服务程内核中断服务程序出口函数序出口函数(10)(10)内核中断服务程内核中断服务程序出口函数序出口函数(7)(7)CPUCPU上下文恢复上下文恢复(11)(11)中断返回中断返回(12)(12)CPUCPU上下文恢复上下文恢复

6、(8)(8)中断返回中断返回(9)(9)任务任务任务响应任务响应中断恢复中断恢复中断恢复中断恢复中断接管程序 硬件中断发生后,中断接管程序获得控制权,先由中断接管程序进行处理,然后才将控制权交给相应的用户中断服务程序。 用户中断服务程序执行完成后,又回到中断接管程序。 中断向量号中断向量号0 0物理中断向量表物理中断向量表中断向量号中断向量号1 1中断向量号中断向量号2 2中断向量号中断向量号3 3中断向量号中断向量号n n中断接中断接管程序管程序中断向量号中断向量号0 0虚拟中断向量表虚拟中断向量表中断向量号中断向量号1 1中断向量号中断向量号2 2中断向量号中断向量号3 3中断向量号中断向

7、量号m m用户中断服务程序用户中断服务程序0 0用户中断服务程序用户中断服务程序1 1用户中断服务程序用户中断服务程序2 2用户中断服务程序用户中断服务程序3 3用户中断服务程序用户中断服务程序m m用户中断服务程序用户中断服务程序第第5章章 中断管理中断管理l 中断的基本概念l 中断处理过程l 中断评价指标l C/OS-II的中断和中断服务程序C/OS-IIC/OS-II的中断接管程序OSIntEnter()OSIntExit()void OSIntEnter (void) OS_ENTER_CRITICAL(); OSIntNesting+; OS_EXIT_CRITICAL();全局变量

8、全局变量OSIntNesting有两个用途:有两个用途:是用来记录中断嵌套的层数;是用来记录中断嵌套的层数;1. 第二是作为调度器是否可进行调度的标志,以保证调度器不会在中断服务程第二是作为调度器是否可进行调度的标志,以保证调度器不会在中断服务程序中进行任务调度,也就是当序中进行任务调度,也就是当OSIntNesting大于大于0的时候,将调度器加锁,的时候,将调度器加锁,OSIntNesting等于等于0的时候,调度器解锁。的时候,调度器解锁。OSIntExit (void)void OSIntExit (void)#if OS_CRITICAL_METHOD=3 OS_CPU_SR cpu

9、_sr;#endif OS_ENTER_CRITICAL(); if (-OSIntNesting | OSLockNesting) = 0) OSIntExitY = OSUnMapTblOSRdyGrp; OSPrioHighRdy = (INT8U)(OSIntExitY 3) + OSUnMapTblOSRdyTblOSIntExitY); if (OSPrioHighRdy != OSPrioCur) OSTCBHighRdy = OSTCBPrioTblOSPrioHighRdy; OSCtxSwCtr+; OSIntCtxSw(); OS_EXIT_CRITICAL();要不要切

10、换到其它任务?要不要切换到其它任务?C/OS-IIC/OS-II的中断服务子程序ISRC/OS-II 内核抢占式中断内核抢占式中断 允许嵌套允许嵌套第第5章章 中断管理中断管理l 中断的基本概念l 中断处理过程l 中断评价指标l C/OS-II的中断和中断服务程序l 关于任务切换OSIntExit (void)void OSIntExit (void)#if OS_CRITICAL_METHOD=3 OS_CPU_SR cpu_sr;#endif OS_ENTER_CRITICAL(); if (-OSIntNesting | OSLockNesting) = 0) OSIntExitY = OSUnMapTblOSRdyGrp; OSPrioHighRdy = (INT8U)(OSIntExitY OSTCBStkPtr; /使SP指向带运行任务堆栈用出栈指令把R1,R2弹出CPU的通用寄存器;RETI; /中断返回,使PC指向待运行任务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论