欢迎来到天天文库
浏览记录
ID:9886116
大小:1.08 MB
页数:29页
时间:2018-05-12
《ucos-ii的时钟和中断》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式操作系统原理第三章:uC/OS-II的中断和时钟目标:本章旨在向学员介绍uc/osII实时操作系统的中断概念及时间管理,通过本章的学习,学员应该掌握如下知识:1)uC/OSII的中断管理和中断服务程序的结构2)uC/OSII的系统时钟及实现方法3)时间管理服务:延时、取消延时时间:2.0学时教学方法:讲授PPT+练习3.1uC/OS-II的中断中断:任务在运行过程中,应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程叫做中断。中断服务程序:应中断请求而运行的程序叫中断服务子程序(ISR)。中断向量:中断服务子程序的入口地址叫中断向量。CPU响应中断的条
2、件:至少有一个中断源向CPU发出中断信号系统允许中断,且对此中断信号未予屏蔽3.1.1uC/OS-II的中断过程uC/OS-II中断的响应过程:中断请求关闭中断转到中断向量保存CPU寄存器通知内核进入ISR通知内核退出ISR恢复CPU寄存器中断返回无新高级任务则返回原任务有新高级任务则运行高级任务ISR给任务发信号通知内核退出ISR恢复CPU寄存器中断返回图3-1中断的响应过程中断响应中断恢复任务响应时间中断恢复任务响应时间注意:对于可剥夺型内核,中断服务子程序结束后,系统进行一次任务调度去运行优先级最高的就绪任务,而不是一定要接续运行被中断的任务。voidOSIntEnter(v
3、oid){if(OSRunning==True){if(OSIntNesting<255){OSIntNesting++;}}}3.1.2中断的开始、离开voidOSIntExit(Void){OS_ENTER_CRITICAL();if(OSRunning==TRUE){if(OSIntNesting>0){OSIntNesting--;}if((OSLockNesting==0)&&(OSIntNesting==0)){OSIntExity=OSUnMapTbl[OSRdyGrp];OSPrioHighRdy=(INT8U)((y<<3)+OSUnMapTbl[OSRdyTbl
4、[y]]);if(OSPrioHighRdy!=OSPrioCur){OSTCBHighRdy=OSTCBPrioTbl[OSPrioHighRdy];OSCtxSwCtr++;OSIntCtxSw();//中断级任务切换}}}OS_EXIT_CRITICAL();}进入中断嵌套层数=0?获得任务TCB的指针YESNONO返回中断服务程序未锁定调度器?NO获得最高级别就绪任务的prio任务是被中断的任务?YESYES执行中断级任务切换图3-2函数OSIntExit()的流程图为记录中断嵌套的层数,定义了一个全局变量OSIntNesting。函数作用就是把全局变量OSIntNesti
5、ng加1,从而用它来记录中断嵌套的层数这个函数在中断嵌套层数计数器为0、调度器未被锁定且从任务就绪表中查找到的最高级就绪任务又不是被中断的任务的条件下将要进行任务切换,否则就返回被中断的服务程序voidOSIntEnter(void){if(OSRunning==True){if(OSIntNesting<255){OSIntNesting++;}}}3.1.2中断的开始、离开voidOSIntExit(Void){OS_ENTER_CRITICAL();if(OSRunning==TRUE){if(OSIntNesting>0){OSIntNesting--;}if((OSLoc
6、kNesting==0)&&(OSIntNesting==0)){OSIntExity=OSUnMapTbl[OSRdyGrp];OSPrioHighRdy=(INT8U)((y<<3)+OSUnMapTbl[OSRdyTbl[y]]);if(OSPrioHighRdy!=OSPrioCur){OSTCBHighRdy=OSTCBPrioTbl[OSPrioHighRdy];OSCtxSwCtr++;OSIntCtxSw();//中断级任务切换}}}OS_EXIT_CRITICAL();}进入中断嵌套层数=0?获得任务TCB的指针YESNONO返回中断服务程序未锁定调度器?NO获得
7、最高级别就绪任务的prio任务是被中断的任务?YESYES执行中断级任务切换图3-2函数OSIntExit()的流程图为记录中断嵌套的层数,定义了一个全局变量OSIntNesting。函数作用就是把全局变量OSIntNesting加1,从而用它来记录中断嵌套的层数这个函数在中断嵌套层数计数器为0、调度器未被锁定且从任务就绪表中查找到的最高级就绪任务又不是被中断的任务的条件下将要进行任务切换,否则就返回被中断的服务程序3.1.3中断服务子程序的流程中断服务子程序入口OS
此文档下载收益归作者所有