版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中断和时钟王华斌Wanghuabin-v中断是计算机系统处理异常事件的重要机制!vuC/OS-II的时钟是通过硬件定时器产生定时中断实现的。v任务在运行过程中,应内部或外部异常事件的请求中止当前任务,而去处理异常事件所要求的任务的过程叫做中断中断。应中断请求而运行的程序叫做中断服务子程序(中断服务子程序(ISRISR);中断服务子程序的入口地址入口地址叫做中断向量。中断向量。1、中断vC/OS中,中断服务子程序要用汇编语言来写中断服务子程序要用汇编语言来写。然而,如果用户使用的C语言编译器支持在线汇编语言的话,用户可以直接将中断服务子程序代码放在C语言的程序文件中。系统接收到中断请求后,如果这
2、时CPU处于中断允许状态,系统就会中止正在运行的任务,而按照中断向量的指向转而去运行中断服务子程序;而中断服务子程序的运行结束后,系统将会根据情况返回到被中止的任务继续执行,或者转向运行另一个具有更高优先级别的就绪任务。(任务的调度)总结v中断是一种硬件机制,用于通知CPU有个异常事件发生了。中断一旦被识别,CPU保存部分(或全部)现场(Context)即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后,程序回到:处理完成后,程序回到:(1)在前后台系统中,程序回到后台程序(2)对不可剥夺型内核而言,程序回到被中断了的任务(3)对可剥
3、夺型内核而言,让进入就绪态的优先级最高的任务开始运行中断嵌套vUC/OS-II系统运行中断嵌套,即:高优先级别的中断源的中断请求可以中断可以中断低优先级别的中断服务程序的运行。v为了记录中断嵌套的层数为了记录中断嵌套的层数,定义了一个全局变量OSIntNesting。(1)进入中断函数:)进入中断函数:void OSIntEnter (void) if(OSRunning=TRUE)if(OSIntNesting255) OSIntNesting+; /中断嵌套层数计数器加1调用情况:调用情况:此函数在中断服务程序保护断点数据后,运行用户中断服务代码之前来调用,所以通常把它叫做进入中断服务函数
4、。(2)退出中断服务函数)退出中断服务函数中断嵌套层数=0?调度器未被锁任务是被中断的任务入口获得最高优先级别就绪任务的prio获得任务TCB的指针执行中断级任务切换返回中断服务程序NoNoNoYesYesYesv说明:这个函数在中断嵌套层数计数器为0、调度器未被锁定、从任务就绪表中查找到的最高级就绪任务不是被中断的任务的条件下将要进行任务切换,否则就返回被中断的服务子程序v源代码见下页vvoid OSIntExit (void)vv OS_ENTER_CRITICAL();v if (-OSIntNesting & OSLockNesting) = = 0) v OSIntExitY
5、 = OSUnMapTblOSRdyGrp;v OSPrioHighRdy = (INT8U)(OSIntExitY OSTCBStkPtr = SP/V2.04以上新增4、清中断源5、重新开中断6、执行用户代码做中断服务; 7、调用OSIntExit();8、恢复所有CPU寄存器;9、执行中断返回指令;中断级任务切换函数中断级任务切换函数vuC/OS-II在运行完中断服务程序之后,并不一定返回到被中断的任务上去,而是要进行一次任务调度来决定是返回被中断的任务还是运行一个具有更高优先级别的任务,因此系统需要一个中断级任务调度器中断级任务调度器。v由函数OSIntExit()的源代码可以知道,通
6、过调用函数OSIntCtxSw()来进行中断级的任务切换。在中断服务程序中调用的负责任务切换的函数OSIntCtxSw()叫做中断级任务切换叫做中断级任务切换函数函数。2、时钟v时钟:时钟:任何操作系统都要提供一个周期性的信号源,以供系统处理与时间相关的事件,这个周期性的信号源叫做时钟。v时钟节拍:时钟节拍:UC/OS-II用硬件定时器产生一个周期为毫秒级的周期性中断来实现系统时钟。最小的时钟就是两次中断之间间隔的时间,这个最小时钟单位叫做时钟节拍。vOSTickISR() :硬件定时器以时钟节拍为周期定时地产生中断,该中断的中断服务程序就是它。中断中断服务程序服务程序通过调用函数通过调用函数
7、来完成系统在每个时钟节拍时需要做的工作来完成系统在每个时钟节拍时需要做的工作。(1)时钟节拍的中断服务程序)时钟节拍的中断服务程序OSTickISR() 用汇编语言用汇编语言来编写:来编写:Void OSTickISR(void)保存保存CPU寄存器;寄存器;调用调用OSIntEnter(); /记录中断嵌套层数记录中断嵌套层数if(OSIntNesting = 1) OSTCBCur-OSTCBStkPtr=SP; /在任务在任务TCB中保存中保存SP调用调用OSTimeTick(); /时钟节拍服务函数时钟节拍服务函数清除中断;清除中断;开中断;开中断;调用调用OSIntExit(); /
8、中断嵌套层数减中断嵌套层数减1恢复恢复CPU寄存器;寄存器;中断返回;中断返回; (2)OSTimeTick()用用C编写编写在时钟中断服务程序中调用在时钟中断服务程序中调用OSTimeTick() UC/OS-II在每次响应定时中断时调用OSTimeTick()做了两件事情:一一是给计数器OSTime加1;二二是遍历任务控制块链表中的所有任务控制块,把各个任务控制块中用来存放任务延时时限的OSTCBDly变量减1,并使该项为0,同时又不使被挂起的任务进入就绪状态。简单地说,函数OSTimeTick的任务就是在每个时钟节拍了解每个任务的延时状态,使其中已经到了延时时限的非挂起任务进入就绪状态。
9、Hook()函数vOSTimeTick()是系统调用的函数,为了方便应用程序设计人员能在系统调用的函数中插入一些自己的工作,OS提供了时钟节拍服务函数的钩子函数OSTimeTickHook()。v此外,OS还提供了OSStkInitHook()、OSInitHookBegin()、OSInitHookEnd()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskSwHook()、OSTaskStatHook()、OSTCBInitHook()、OSTaskIdleHook()等与OSTimeTickHook()一起共10个钩子函数,以供用户在系统调用函数中书写自
10、己的代码。 3、时间管理v任务的延时:由于嵌入式系统的任务是一个无限循环,并且UC/OS-II还是一个抢占式内核,所以为了使高优先级别的任务不至于独占CPU,可以给其他优先级别较低的任务获得CPU使用权的机会。UC/OS-II规定:规定:除了空闲任务之外的所有任务必须在任务中合适的位置调用系统提供的函数OSTimeDly(),使当前任务的运行暂停一段时间并进行一次任务调度,以让出CPU的使用权。vOSTimeDly()原型: void OSTimeDly(INT16U ticks)函数的参数ticks是以时钟节拍数时钟节拍数为单位的延时时间的。vOSTimeDlyHMSM()时、分、秒为参数时
11、、分、秒为参数INT8U OSTimeDlyHMSM (INT8U hours, / 时INT8U minutes, / 分INT8U seconds, / 秒INT16U milli / 毫秒)v调用了以上这两个函数的任务,当规定的延时时间期满时,或者有其他任务通过调用函数OSTimeDlyResume()取消了延时时,它会立即进入就绪状态。v取消任务的延时OSTimeDlyResume()延时的任务可以通过在其他任务中调用函数OSTimeDlyResume()取消延时并进入就绪状态,如果任务比正在运行的任务优先级别高,则立即引发一次任务调度。v原型:INT8U OSTimeDlyResume(INT8U prio)v获取和设置系统时间获取和设置系统时间系统定义了一个INT32U类型的全局变量OSTime来记录系统发生的时钟节拍数来记录系统发生的时钟节拍数。 OSTime在应用程序调用OSStart()时被初始化为0,以后每发生一个时钟节拍, OSTime的值就被加1。在应用程序中调用函数调用函数OSTimeGet()可获可获得得OSTime的值的值。原型:INT32U OSTimeGet( void );函数的返回值即为O
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人搬家服务2024年度合同3篇
- 二零二五版KTV消防安全检查与整改服务合同2篇
- 二零二五年方管产品绿色包装设计与实施合同3篇
- 2024年高端定制家具制造合同
- 2024无人机航拍与监测服务合同
- 二零二五版历史文化名城保护项目技术咨询合同3篇
- 二零二五版废铁回收处理与环保服务合同3篇
- 2024年薪资隐私协议3篇
- 二零二五年白酒质量检测与认证服务合同2篇
- 武汉华夏理工学院《世界音乐文化》2023-2024学年第一学期期末试卷
- 《如何存款最合算》课件
- 2023年全国统一高考数学甲卷【文科+理科】试题及答案解析
- 社区团支部工作计划
- 废品处置招标书
- GA/T 1280-2024银行自助设备安全性规范
- 数据标注基地项目实施方案
- 教培行业研究系列(七):出国考培的再研究供需变化的新趋势
- 静脉治疗专科护士竞聘
- 2024年第一季度医疗安全(不良)事件分析报告
- 中医课件英语教学课件
- 《哪吒闹海》电影赏析
评论
0/150
提交评论