中断处理与时间管理new.PPTVIP

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中断处理与时间管理new

第4章 中断处理与时间管理 4.1 中断处理 4.2 时钟节拍 4.3 时间管理 习题 4.1 中断处理 图4.1 中断嵌套 中断服务程序ISR 中断延迟    中断延迟:从硬件中断发生到开始执行中断处理程序第一条指令所用的时间 是从中断发生到中断跳转指令执行完毕之间的这段时间,它是实时内核最重要的指标。 由于实时操作系统考虑得更多的是最坏的情况,而不是平均的情况,因此指令执行的时间必须按照最长的指令执行时间来计算。 计算公式 在前后台系统中: 在不可剥夺型和不可剥夺内核中: 中断响应      中断响应:从中断发生起到开始执行中断用户处理程序的第一条指令所用的时间 即从中断发生到刚刚开始处理异步事件之间的这段时间,它包括开始处理这个中断前的全部开销。 在前后台系统和不可剥夺型内核中: 中断响应?=?中断延迟?+?保存CPU内部寄存器的时间 在可剥夺型内核中 中断响应?=?中断延迟?+?保存CPU内部寄存器的时间?+?内核进入中断服务函数的执行时间 中断恢复时间     CPU返回到被中断了的程序代码所需要的时间。 在前后台系统和不可剥夺型内核中 对于可剥夺型内核 前后台系统和不可剥夺型内核的中断延迟、 响应和恢复时间的比较 可剥夺型内核的中断延迟、中断响应和中断恢复时间的比较 图4.3 可剥夺型内核的中断延迟、响应和恢复时间的比较 非屏蔽中断    非屏蔽中断(NMI):指不能用系统指令来关闭的中断 特点:中断优先级高、延迟时间短、响应快、不能被嵌套、不能忍受内核的延迟 一般常应用于紧急事件处理,如掉电保护等。 非屏蔽中断的规则如下:   (1) 在非屏蔽中断处理程序中,不能处理临界区代码、不能使用内核提供的服务。   (2) 在非屏蔽中断处理程序中,参数的传递必须用全程变量,且全程变量的字节长度必须能够一次读完。 用户ISR的框架 标准的μC/OS-Ⅱ中断处理程序流程图 μC/OS-Ⅱ的中断处理过程示意图 μC/OS-Ⅱ的中断处理过程具体如下:    (1) 当一个中断发生时,若中断是开放的,则CPU运行完毕当前指令。 (2) ?CPU自动将当前指令的下一条指令的程序计数器指针保存到堆栈中,然后再将中断矢量入口地址赋给程序计数器,将程序转入中断矢量入口单元。 (3) 中断入口矢量单元中一般有一条长跳转指令,程序将根据长跳转指令的指向跳转到相应的用户程序去,执行中断服务子程序。 从第(1)步到第(3)步执行完毕之间的时间差,就是中断延迟时间。    (4) 程序保存所有需要保存的CPU寄存器。 (5) 调用一个内核系统服务——中断进入函数OSIntEnter(),通知内核,CPU已经进入中断服务子程序,并且计算中断嵌套层次。μC/OS-Ⅱ的最大中断嵌套层次是255层,该数值主要是由中断嵌套层数计数器OSIntNesting的数据类型决定的。 从第(1)步到第(5)步执行完毕之间的时间差,就是中断响应时间。 (6) 中断服务用户子程序。    (7) 中断返回前需要调用一个内核系统服务——中断脱离函数OSIntExit(),通知内核CPU要退出当前中断。 中断脱离函数首先将中断嵌套计数器减1,若此时程序还处于中断嵌套中,则继续执行上一个中断;若程序没有中断嵌套,则中断脱离函数查找是否有更高优先级任务准备就绪。 若有更高优先级任务准备就绪,程序则返回到准备就绪的最高优先级任务运行;若没有或者调度上锁,则程序返回到被中断的任务继续运行。 (8) 在执行完毕OSIntExit()后,无论程序转向何处,都要恢复所有CPU寄存器。 (9) 执行中断返回指令。 (10) 返回。 OSIntEnter() OSIntExit() OSIntCtxSw() 4.2 时钟节拍 时钟节拍的启动 时钟节拍服务的实现 μC/OS-Ⅱ中的时钟节拍服务是通过在中断服务子程序OSTickISR()中调用时钟节拍子程序OSTimeTick()来实现的。 时钟节拍计时的单位是一个时钟节拍。 时钟节拍ISR 4.3 时间管理 OSTimeDLY() OSTimeDLY() OSTimeDlyHMSM() OSTimeDlyResume() 系统时间 习 题   μC/OS-Ⅱ是如何处理中断的? 2. 写出μC/OS-Ⅱ中断服务子程序的示意性代码。 3. 如何正确使用时钟节拍器? 4. 写出时间管理函数的函数原型,并举例说明如何使用。 * 中断:由于某种事件的发生而导致程序流程的改变。产生中断的事件称为中断源。 CPU响应中断的条件: 至少有一个中断源向CPU发出中断信号; 系统允许中断,且对此中断信号未予屏蔽。 中断一旦被识别,CPU会保存部分(或全部)运行上下文(context,即寄存器的值),然后跳转到

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档