版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理本章描述本章描述C/OS-IIC/OS-II的中断处理与时间管理,包括:的中断处理与时间管理,包括:与中断相关的概念与中断相关的概念C/OS-IIC/OS-II中断处理的方法中断处理的方法中断级的任务切换中断级的任务切换时钟节拍器的原理与正确应用方法以及时钟节拍器的原理与正确应用方法以及 5 5个时间管理函数。个时间管理函数。本章主要内容本章主要内容嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理 中断定义为CPU对系统内、外发
2、生的异步事件的响应。异步事件是指没有一定时序关系的、随机发生的事件。当中断产生时,由硬件向CPU 发送一个异步事件请求,CPU接收到请求后,中止当前工作,保存当前运行环境,转去处理相应的异步事件任务,这个过程称为中断。事件处理完毕后,程序回到: 在前后台系统中,程序回到后台程序; 在不可剥夺型内核中,程序回到被中断了的任务; 在可剥夺型内核中,让进入就绪态的优先级最高的任务开始运行,若没有高优先级任务准备就绪,则回到被中断了的任务。 嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理 使用中断机制的优点在于:CPU无需连续不断地查询是否
3、有新的事件发生,只需在有事件发生时才作出响应。 关中断会影响中断延迟时间,时间太长可能会引起中断丢失。所以在实时环境中,关中断的时间应尽量短。 CPU可以通过两条特殊指令:关中断(Disable Interrupt)和开中断(Enable Interrupt)来响应和不响应中断。 在中断服务期间,CPU一般允许中断嵌套,如图4.1所示,允许新的中断打入,识别中断优先级别更高的事件。嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理
4、 中断延迟定义为:从硬件中断发生到开始执行中断处理程序第一条指令所用的时间。也就是说,中断延迟是从中断发生到中断跳转指令执行完毕之间的这段时间。 由于实时操作系统考虑得更多的是最坏的情况,而不是平均的情况,因此指令执行的时间必须按照最长的指令执行时间来计算。所以中断延迟时间,通常是由关中断的最长时间来决定的。关中断的时间越长,中断延迟就越长。中断延迟是实时内核最重要的指标。1、在前后台系统中、在前后台系统中中断延迟中断延迟 MAXMAX(最长指令,关中断的最长)时间(最长指令,关中断的最长)时间 中断向量跳转时间中断向量跳转时间2、在不可剥夺型和不可剥夺内核中、在不可剥夺型和不可剥夺内核中中断
5、延迟中断延迟MAXMAX(最长指令,用户关中断,内核关中断)时间(最长指令,用户关中断,内核关中断)时间+ +中断向量跳转时间中断向量跳转时间 嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理 中断响应定义为从中断发生起到开始执行中断用户处理程序的第一条指令所用的时间,换句话说,中断响应是从中断发生到刚刚开始处理异步事件之间的这段时间,它包括开始处理这个中断前的全部开销。 一般地,执行用户代码之前要保护现场,将CPU的各个寄存器推入堆栈。这段时间将被称为中断响应时间。 嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程
6、第四章第四章 中断与时间管理中断与时间管理在可剥夺型内核中,则要先调用一个特定的函数,通知内核即将进行中断服务,使得内核可以跟踪中断的嵌套。对于C/OS-说来,这个函数是OSIntEnter(),可剥夺型内核的中断响应时间由下式给出: 在前后台系统和不可剥夺型内核中,保存寄存器以后立即执行用户代码,中断响应时间由下式给出:l中断响应考虑的是系统在最坏情况下的响应中断时间,而不是平均时间。 例如某系统100次中有99次在100s之内响应中断,只有一次响应中断的时间是250s,只能认为中断响应时间是250s。 嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时
7、间管理中断与时间管理 中断恢复时间定义为:CPU返回到被中断了的程序代码所需要的时间。在前后台系统和不可剥夺型内核前后台系统和不可剥夺型内核中,中断恢复时间只包括恢复CPU内部寄存器值的时间和执行中断返回指令的时间。中断恢复时间由下式给出:嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理对于可剥夺型内核可剥夺型内核,中断的恢复要复杂一些。一般地,可剥夺型内核在中断服务子程序的末尾,都要调用一个由实时内核提供的中断脱离函数。在C/OS-中,这个函数叫做OSIntExit(),它首先判断是否脱离了所有的中断嵌套,然后再判断是否有更高优先级
8、的任务准备就绪。若还处于中断嵌套中,那么程序返回到前一级中断服务子程序继续执行;若已经脱离了所有的中断嵌套,则检查当前是否有优先级更高的任务准备就绪,若有则返回到这个优先级更高的任务,被中断了的任务只有重新成为优先级最高的就绪态任务时才能恢复运行;如果没有更高优先级任务准备就绪,则返回到被中断的任务继续执行。在这种情况下,可剥夺型内核的中断恢复时间由下式给出:嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理在非屏蔽中断服务子程序
9、中,不能在非屏蔽中断处理内处理临界区代码、不能使用内核提供的服务。在非屏蔽中断处理程序中参数的传递必须用全程变量,且全程变量的字节长度必须能够一次读完。若一定要在非屏蔽中断产生时使用内核服务,则可以通过用非屏蔽中断产生普通可屏蔽中断的方法来实现。 非屏蔽中断(NMI)是指不能用系统指令来关闭的中断。 非屏蔽中断的特点是:中断优先级高、延迟时间短、响应快、不能被嵌套,不能忍受内核的延迟,一般常应用于紧急事件处理,如掉电保护等。嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理4.2.1 4.2.1 中断处理程序中断处理程序图4.4 标准中
10、断处理程序流程图 二、中断进入函数的实现代码二、中断进入函数的实现代码 在C/OS-中,中断处理程序可用汇编语言编写,也可以用C语言编写。一、一、 标准的标准的C/OS-C/OS-中断服务子程序中断服务子程序 一个标准的C/OS-中断服务子程序应该按图4.4所示流程图进行编写。程序清单程序清单4.1 4.1 OSIntEnter()OSIntEnter()void OSIntEnter (void) reentrant if (OSRunning = = TRUE) / 多任务启动后,方可通知 / 内核。否则,直接退出。 if (OSIntNesting 0) OSIntNesting-; (
11、 1 ) if (OSIntNesting | OSLockNesting) = 0) ( 2 ) OSIntExitY = OSUnMapTblOSRdyGrp; OSPrioHighRdy = (INT8U)(OSIntExitY 0) / 若参数为0,则表示不想对/ 任务延时,函数立即返回 OS_ENTER_CRITICAL(); / 关中断 y = OSTCBCur-OSTCBY; OSRdyTbly &= OSTCBCur-OSTCBBitX; /从就绪表中移出当前任务 if (OSRdyTbly &= OSTCBCur-OSTCBBitX) = 0) OSRdyGrp &= OST
12、CBCur-OSTCBBitY; OSTCBCur-OSTCBDly = ticks;/ 保存节拍数,每隔一个/时钟节拍,这个变量数减1 OS_EXIT_CRITICAL(); / 关中断 OS_Sched();/ 当前任务已经挂起,执行/下一个优先级最高就绪任务 嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理在调用OSTimeDly()函数时必须注意以下事项:时间的长短是用时钟节拍的数目来确定的;可提供的时钟节拍数范围是:165,535;参数为0,表明不进行延时操作,而立即返回调用者;为了确保设定的延时时间,建议设定的时钟节拍数加
13、1;1.只能在任务中调用,无配置常量。 嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理INT8U OSTimeDlyHMSM( INT8U hour,INT8U minutes,INT8U seconds,INT16U milli) reentrant 4.4.2.1 4.4.2.1 函数原型函数原型 功能功能:这是一个十分有用的函数,它是以时、分、秒、毫秒为单位进行延时。调用者调用者:只能是任务。调用后,如果延时时间不为0,系统将立即挂起当前任务,并进行任务调度。最长延时最长延时:长达256个小时(接近11天)。函数参数函数参数:
14、hours 延时小时数, 取值范围0255;mintues 延时分钟数, 取值范围059;seconds 延时秒数, 取值范围059;milli 延时毫秒数, 取值范围0999嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理OS_ON_ERR调用成功;OS_TIME_INVALID_MINUTES 参数错误,分钟数大于59;OS_TIME_INVALID_SECONDS参数错误,秒数大于59;OS_TIME_INVALID_MILLI参数错误,毫秒数大于999;OS_TIME_ZERO_DLY 4个参数全为0,不操作而直接返回OSTi
15、meDlyHMSM()函数的返回值有如下几种:嵌入式实时操作系统嵌入式实时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理程序清单程序清单4.84.8 OSTimeDlyHMSM() OSTimeDlyHMSM()#if OS_TIME_DLY_HMSM_EN 0INT8U OSTimeDlyHMSM (INT8U hours,INT8U minutes,INT8U seconds,NT16U milli) reentrant INT32U ticks; INT16U loops; if (hours 0 | minutes 0 | seconds 0 | mi
16、lli 0) / 条件检查,全为0,则返回return (OS_TIME_ZERO_DLY); if (minutes 59) return (OS_TIME_INVALID_MINUTES); if (seconds 59) return (OS_TIME_INVALID_SECONDS); if (milli 999)return (OS_TIME_INVALID_MILLI); ticks = (INT32U)hours * 3600L * OS_TICKS_PER_SEC + (INT32U)minutes * 60L * OS_TICKS_PER_SEC + (INT32U)seco
17、nds * OS_TICKS_PER_SEC+ OS_TICKS_PER_SEC * (INT32U)milli+ 500L/OS_TICKS_PER_SEC) / 1000L;/ 换算为时钟节拍,精度0.5个节拍 loops = ticks / 65536L; ticks = ticks % 65536L; OSTimeDly(ticks); while (loops 0) OSTimeDly(32768); OSTimeDly(32768); loops-; return (OS_NO_ERR); #endif4.4.2.3 4.4.2.3 原理与实现原理与实现 嵌入式实时操作系统嵌入式实
18、时操作系统C/OS-C/OS-教程教程 第四章第四章 中断与时间管理中断与时间管理要使用该函数,首先要用OS_CPU.H文件中定义的全局常数OS_TICKS_PER_SEC将时间转换为时钟节拍数,这个全局常数表示的是每秒钟时钟节拍器产生的节拍数量,称为时钟节拍频率,取值一般设置在10100Hz之间;4个参数全为0,表示不进行任何操作,直接返回;当时钟周期1ms时,计时最小单位是一个时钟节拍,精度是0.5个节拍。例如:例如:若将时钟节拍频率(OS_TICKS_PER_SEC)设置成100Hz(10ms),4ms的延时不会产生任何延时!而5ms的延时就等于延时10ms;当时钟周期 0void OSTimeSet (INT32U ticks) reentrant #if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年份矿泉水行业数据分析与市场预测合同
- 二零二五年度电商运营团队项目管理合同
- 二零二五年度环保产业股权分配及合作合同范本
- 2025年度五星级酒店高端会议室租赁服务合同
- 二零二五年度建筑玻璃幕墙安装安全分包服务合同
- 二零二五版物流金融合同风险控制
- 二零二五年度人工智能技术知识产权许可合同
- 荒山荒地二零二五年度生态农业综合承包合同样本3篇
- 二零二五版养老产业综合服务合同汇编4篇
- 2025年度淘宝店铺品牌授权合作合同
- 【高空抛物侵权责任规定存在的问题及优化建议7100字(论文)】
- 二年级数学上册100道口算题大全 (每日一套共26套)
- 物流无人机垂直起降场选址与建设规范
- 肺炎临床路径
- 外科手术铺巾顺序
- 创新者的窘境读书课件
- 如何克服高中生的社交恐惧症
- 聚焦任务的学习设计作业改革新视角
- 移动商务内容运营(吴洪贵)任务三 APP的品牌建立与价值提供
- 电子竞技范文10篇
- 食堂服务质量控制方案与保障措施
评论
0/150
提交评论