第4章 中断处理与时间管理

第4章 中断处理与时间管理

ID:19906210

大小:606.00 KB

页数:47页

时间:2018-10-07

第4章   中断处理与时间管理_第1页
第4章   中断处理与时间管理_第2页
第4章   中断处理与时间管理_第3页
第4章   中断处理与时间管理_第4页
第4章   中断处理与时间管理_第5页
资源描述:

《第4章 中断处理与时间管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第4章中断处理与时间管理本章主要内容:本章描述μC/OS-II的中断处理与时间管理,主要学习与中断相关的概念μC/OS-II中断处理的方法中断级的任务切换时钟节拍器的原理与正确应用方法以及4个时间管理函数。4.1中断处理的基本概念4.1.1中断中断定义为CPU对系统内、外发生的异步事件的响应。异步事件是指没有一定时序关系的、随机发生的事件。当中断产生时,由硬件向CPU发送一个异步事件请求,CPU接收到请求后,中止当前工作,保存当前运行环境,转去处理相应的异步事件任务,这个过程称为中断。事件处理完毕后,程序回到:在前后台系统中,程序回到后台程序;

2、在不可剥夺型内核中,程序回到被中断了的任务;在可剥夺型内核中,让进入就绪态的优先级最高的任务开始运行,若没有高优先级任务准备就绪,则回到被中断了的任务。4.1.1中断使用中断机制的优点在于:CPU无需连续不断地查询是否有新的事件发生,只需在有事件发生时才作出响应。CPU可以通过两条特殊指令:关中断(DisableInterrupt)和开中断(EnableInterrupt)来响应和不响应中断。关中断会影响中断延迟时间,时间太长可能会引起中断丢失。所以在实时环境中,关中断的时间应尽量短。在中断服务期间,CPU一般允许中断嵌套,如图4.1所示,允许

3、新的中断打入,识别中断优先级别更高的事件。图4.1中断嵌套4.1.2中断延迟中断延迟定义为从硬件中断发生到开始执行中断处理程序第一条指令所用的时间,也就是说,中断延迟是从中断发生到中断跳转指令执行完毕之间的这段时间它是实时内核最重要的指标。由于实时操作系统考虑得更多的是最坏的情况,而不是平均的情况,因此指令执行的时间必须按照最长的指令执行时间来计算。所以中断延迟时间,通常是由关中断的最长时间来决定的。关中断的时间越长,中断延迟就越长。4.1.2中断延迟中断延迟由下式给出:在不可剥夺型和不可剥夺内核中:在前后台系统中:4.1.3中断响应中断响应定

4、义为从中断发生起到开始执行中断用户处理程序的第一条指令所用的时间,换句话说,中断响应是从中断发生到刚刚开始处理异步事件之间的这段时间,它包括开始处理这个中断前的全部开销。一般地,执行用户代码之前要保护现场,将CPU的各个寄存器推入堆栈。这段时间将被称为中断响应时间。4.1.3中断响应在可剥夺型内核中,则要先调用一个特定的函数,通知内核即将进行中断服务,使得内核可以跟踪中断的嵌套。对于μC/OS-Ⅱ说来,这个函数是OSIntEnter(),可剥夺型内核的中断响应时间由下式给出:在前后台系统和不可剥夺型内核中,保存寄存器以后立即执行用户代码,中断响

5、应时间由下式给出:中断响应考虑的是系统在最坏情况下的响应中断时间,而不是平均时间。如某系统100次中有99次在100μs之内响应中断,只有一次响应中断的时间是250μs,只能认为中断响应时间是250μs。4.1.4中断恢复时间中断恢复时间(InterruptRecovery)定义为CPU返回到被中断了的程序代码所需要的时间。在前后台系统和不可剥夺型内核中,中断恢复时间只包括恢复CPU内部寄存器值的时间和执行中断返回指令的时间。中断恢复时间由下式给出:4.1.4中断恢复时间对于可剥夺型内核,中断的恢复要复杂一些。一般地,可剥夺型内核在中断服务子程

6、序的末尾,都要调用一个由实时内核提供的中断脱离函数。在μC/OS-Ⅱ中,这个函数叫做OSIntExit(),它首先判断是否脱离了所有的中断嵌套,然后再判断是否有更高优先级的任务准备就绪。若还处于中断嵌套中,那么程序返回到前一级中断服务子程序继续执行;若已经脱离了所有的中断嵌套,则检查当前是否有优先级更高的任务准备就绪,若有则返回到这个优先级更高的任务,被中断了的任务只有重新成为优先级最高的就绪态任务时才能恢复运行;如果没有更高优先级任务准备就绪,则返回到被中断的任务继续执行。在这种情况下,可剥夺型内核的中断恢复时间由下式给出:4.1.5中断延迟

7、、响应和恢复比较4.1.6非屏蔽中断非屏蔽中断(NMI)是指不能用系统指令来关闭的中断,其特点是中断优先级高、延迟时间短、响应快、不能被嵌套,不能忍受内核的延迟,一般常应用于紧急事件处理,如掉电保护等。作为一种规则:在非屏蔽中断服务子程序中,不能在非屏蔽中断处理内处理临界区代码、不能使用内核提供的服务。在非屏蔽中断处理程序中参数的传递必须用全程变量,且全程变量的字节长度必须能够一次读完。若一定要在非屏蔽中断产生时使用内核服务,则可以通过用非屏蔽中断产生普通可屏蔽中断的方法来实现。4.2μC/OS-Ⅱ的中断处理4.2.1中断处理程序在μC/OS-

8、Ⅱ中,中断处理程序可用汇编语言编写,也可以用C语言编写。一个标准的μC/OS-Ⅱ中断服务子程序应该按图4.4所示流程图进行编写。图4.4标准中断处理程

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。