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

下载本文档

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

文档简介

第5章中断管理

中断的基本概念中断处理过程中断评价指标μC/OS-II的中断和中断服务程序1.中断概念所谓中断是指某个事件发生时,系统中止现行程序的运行、引出处理事件程序对该事件进行处理,处理完毕后返回断点,继续执行。继续执行中断进入中断返回中断信号正在执行的程序中断处理程序中断源,可以来源于CPU的内部,也可以来源于CPU的外部中断分为三个阶段中断检测中断响应中断处理硬件做OS做中断检测:每条指令结束的时候做PC:程序计数器PS:程序状态寄存器中断处理程序的PC中断处理程序的PS中断向量表PCPSPCPS堆栈堆栈栈顶指针(4)(1)(2)(3)中断响应的实质:--将被中断程序的PC和PS存起来!--将中断处理程序的PC和PS放入CPU

内存CPU中断响应做什么第5章中断管理

中断的基本概念中断处理过程中断评价指标μC/OS-II的中断和中断服务程序中断处理程序的工作

保留被中断程序的现场

进入相应的中断服务例程

恢复被中断程序的现场中断返回中断进入k+0现行程序k+1由操作系统做除了PC、PS以外的寄存器中断的处理方式非抢占的式内核抢占式内核中断是否允许嵌套不允许:处理中断的时候,将屏蔽所有其他的中断请求。允许:中断被划分为多个优先级,中断服务程序只屏蔽那些比当前中断优先级低或是与当前中断优先级相同的中断中断嵌套需要解决的问题:需要专门的中断栈?第5章中断管理

中断的基本概念中断处理过程中断评价指标μC/OS-II的中断和中断服务程序中断延迟中断响应时间中断恢复时间中断处理时间抢占式调度内核的中断时序图中断服务程序任务AB时间中断请求(1)任务或内核程序(2)中断延迟中断响应获取中断向量(3)CPU上下文保存(4)内核中断服务程序入口函数(5)用户中断服务子程序代码(6)内核中断服务程序出口函数(10)内核中断服务程序出口函数(7)CPU上下文恢复(11)中断返回(12)CPU上下文恢复(8)中断返回(9)任务任务响应中断恢复中断恢复抢占式调度内核的中断时序图中断服务程序任务AB时间中断请求(1)任务或内核程序(2)中断延迟中断响应获取中断向量(3)CPU上下文保存(4)内核中断服务程序入口函数(5)用户中断服务子程序代码(6)内核中断服务程序出口函数(10)内核中断服务程序出口函数(7)CPU上下文恢复(11)中断返回(12)CPU上下文恢复(8)中断返回(9)任务任务响应中断恢复中断恢复中断接管程序硬件中断发生后,中断接管程序获得控制权,先由中断接管程序进行处理,然后才将控制权交给相应的用户中断服务程序。用户中断服务程序执行完成后,又回到中断接管程序。

中断向量号0物理中断向量表中断向量号1中断向量号2中断向量号3……中断向量号n中断接管程序中断向量号0虚拟中断向量表中断向量号1中断向量号2中断向量号3……中断向量号m用户中断服务程序0用户中断服务程序1用户中断服务程序2用户中断服务程序3用户中断服务程序m用户中断服务程序第5章中断管理

中断的基本概念中断处理过程中断评价指标μC/OS-II的中断和中断服务程序μC/OS-II中断时序图μC/OS-II的中断接管程序OSIntEnter()OSIntExit()voidOSIntEnter(void){OS_ENTER_CRITICAL();OSIntNesting++;OS_EXIT_CRITICAL();}全局变量OSIntNesting有两个用途:是用来记录中断嵌套的层数;第二是作为调度器是否可进行调度的标志,以保证调度器不会在中断服务程序中进行任务调度,也就是当OSIntNesting大于0的时候,将调度器加锁,OSIntNesting等于0的时候,调度器解锁。OSIntExit(void)voidOSIntExit(void){#ifOS_CRITICAL_METHOD==3OS_CPU_SRcpu_sr;#endifOS_ENTER_CRITICAL(); if((--OSIntNesting|OSLockNesting)==0){ OSIntExitY=OSUnMapTbl[OSRdyGrp]; OSPrioHighRdy=(INT8U)((OSIntExitY<<3)+OSUnMapTbl[OSRdyTbl[OSIntExitY]]);if(OSPrioHighRdy!=OSPrioCur){OSTCBHighRdy=OSTCBPrioTbl[OSPrioHighRdy];OSCtxSwCtr++;OSIntCtxSw(); }}OS_EXIT_CRITICAL();}要不要切换到其它任务?μC/OS-II中断时序图μC/OS-II的中断服务子程序ISRμC/OS-II中断特点内核抢占式中断允许嵌套第5章中断管理

中断的基本概念中断处理过程中断评价指标μC/OS-II的中断和中断服务程序关于任务切换OSIntExit(void)voidOSIntExit(void){#ifOS_CRITICAL_METHOD==3OS_CPU_SRcpu_sr;#endifOS_ENTER_CRITICAL(); if((--OSIntNesting|OSLockNesting)==0){ OSIntExitY=OSUnMapTbl[OSRdyGrp]; OSPrioHighRdy=(INT8U)((OSIntExitY<<3)+OSUnMapTbl[OSRdyTbl[OSIntExitY]]);if(OSPrioHighRdy!=OSPrioCur){OSTCBHighRdy=OSTCBPrioTbl[OSPrioHighRdy];

OSCtxSwCtr++;OSIntCtxSw();

}}OS_EXIT_CRITICAL();}要不要切换到其它任务?中断级任务切换中断级的任务切换函数OSIntCtxSwt()OSIntCtxSw(){OSTCBCur=OSTCBHighRdy;//任务控制块TCB的切换OSPrioCur=OSPrioHighRdy;SP=OSTCBHighRdy->OSTCBStkPtr;//使SP指向带运行任务堆栈用出栈指令把R1,R2…弹出CPU的通用寄存器;RETI;//中断返回,使PC指向待运行任务}μC/OS-II允许中断

温馨提示

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

评论

0/150

提交评论