为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

UC_OS_II的实时性能分析

2009-07-22 3页 pdf 345KB 31阅读

用户头像

is_290438

暂无简介

举报
UC_OS_II的实时性能分析 12    20051 8 μC /O S II 的实时性能分析 ■武汉理工大学  方安平 肖强  摘 要 简单介绍一种公开源代码的实时操作系统μC/ OS II ,并对它的实时性能进行简单的测试。通过改变测 试条件 ,如改变中断的类型或中断发生时系统的状态等 ,分析μC/ OS II 在中断时的中断响应时间与各 种条件之间的关系 ,从而为分析或改善实时操作系统的中断响应时间提供理论依据。  关键词 RTOS  μC/ OS II  中断响应时间 实时性能 1  嵌入式实时操作系统和μC/ OS II 嵌入式操作系统...
UC_OS_II的实时性能分析
12    20051 8 μC /O S II 的实时性能分析 ■武汉理工大学  方安平 肖强  摘 要 简单介绍一种公开源代码的实时操作系统μC/ OS II ,并对它的实时性能进行简单的测试。通过改变测 试条件 ,如改变中断的类型或中断发生时系统的状态等 ,分析μC/ OS II 在中断时的中断响应时间与各 种条件之间的关系 ,从而为分析或改善实时操作系统的中断响应时间提供理论依据。  关键词 RTOS  μC/ OS II  中断响应时间 实时性能 1  嵌入式实时操作系统和μC/ OS II 嵌入式操作系统 EOS( Embedded Operating System) 主要负责嵌入式系统的全部软、硬件资源的分配、调度、控 制、协调并发活动 ;它必须体现其所在系统的特征 ,能够通 过装卸某些模块来达到系统所要求的功能[1 ] 。 μC/ OS II 是专门为计算机的嵌入式应用而的 实时操作系统 ,是基于静态优先级的占先式 (preemptive) 多任务实时内核。采用μC/ OS II 作为测试的目标 ,一方 面是因为它已经通过了很多严格的测试 ,被确认是一个安 全的、高效的实时操作系统 ;另一个重要的原因 ,是因为它 免费提供了内核的源代码 ,通过修改相关的源代码 ,就可 以比较容易地构造自己所需要的测试环境 ,实现自己需要 的功能。 2  实时操作系统和系统实时性能指标 实时系统对逻辑和时序的要求非常严格 ,如果逻辑和 时序出现偏差将会引起严重后果。实时系统有两种类型 : 软实时系统和硬实时系统。软实时系统仅要求事件响应 是实时的 ,并不要求限定某一任务必须在多长时间内完 成 ;而在硬实时系统中 ,不仅要求任务响应要实时 ,而且要 求在规定的时间内完成事件的处理。通常 ,大多数实时系 统是两者的结合。 事实上 ,没有一个绝对的数字可以说明什么是硬实 时 ,什么是软实时。它们之间的界限是十分模糊的。这与 选择什么样的 CPU ,它的主频、内存等参数有一定的关 系[ 1 ] 。另外 ,因为应用的场合对系统实时性能要求的不同 而有不同的定义。因此 ,在现有的固定的软、硬件平台上 , 如何测试并找出决定系统实时性能的关键参数 ,并给出优 化的措施和试验数据 ,就成为一个具有普遍意义并且值得 深入探讨的课。本文就是基于此目的进行讨论的。 因为采用实时操作系统的意义就在于能够及时处理 各种突发的事件 ,即处理各种中断 ,因而衡量嵌入式实时 操作系统的最主要、最具有代表性的性能指标参数无疑应 该是中断响应时间了。中断响应时间通常被定义为 : 中断响应时间 = 中断延迟时间 + 保存 CPU 状态的时 间 + 该内核的 ISR 进入函数的执行时间[ 2 ] 。 中断延迟时间 = MAX(关中断的最长时间 ,最长指令 时间) + 开始执行 ISR 的第一条指令的时间[2 ] 。 通俗点定义就是 :从中断发生起 ,到执行中断处理程 序的第一条指令所用的时间。由于实时操作系统更多考 虑的是最坏的情况 ,而不是平均的情况 ,因此指令执行的 时间就按照最长的指令执行时间来计算 ,所以中断延迟时 间 ,通常是由关中断的最长时间来决定的。当 FIQ (快速 中断) 使能时 ,最坏情况下 FIQ 的中断延迟时间由以下几 个部分构成 : t同步 ———请求通过同步器的最长时间 ,约 4 个处理器 周期。 t最长指令时间 ———最长指令完成的时间。最长指令是加 载包括 PC 的所有寄存器的 LDM 指令 ,在零等待状态的 系统中 ,约为 20 个周期。 t异常 ———数据异常进入时间 ,为 3 个周期。 tFIQ ———FIQ 进入时间 , 2 个周期。 最大的 FIQ 中断延迟时间约为 29 个时钟周期。在 系统使用 40 M Hz 处理器时钟时 ,约为 0. 7μs。 对于最大的 IRQ 延迟 ,其计算与 FIQ 类似。若必须 允许 FIQ 有更高的优先级 ,那么进入 IRQ 处理程序的延 迟时间是随机的[3 ] 。 20051 8 Microcontrollers & Embedded Systems  13    3  试验原理和测试方法 首先需要启动并开始运行μC/ OS II ,因为试验需要 使用的计时函数是系统函数。进行堆栈和中断向量等系 统初始化后 ,首先要创建一个任务 ,用以产生中断。这样 OS 启动后 ,中断服务程序可以在任务中调用或者切换 ,中 断源可以设置为外部中断或由任务产生。在主程序的临 界段循环查询中断状态 ( VICRawInt r ;中断状态寄存器) , 一旦发现有中断标识 ,则立即启动计数器 ,并使能该中断 , 跳出临界段 (在进入临界段之前要关中断 ( OS_ EN TER_ CRITICAL () ) ,而跳出临界段代码进入中断服务子程序 后 ,保存全部 CPU 寄存器后清除中断源 ,并立即开中断 (OS_ EXIT_CRITICAL ( ) ) ,然后停止计时并执行中断处 理代码) 。由于是在到中断标识后才跳出临界段 ,所 以一跳出临界段就会立即发生中断 ,进行中断处理。保存 了 CPU 寄存器后进入中断服务的第一条指令就是保存计 数器值。由于在跳出临界段时才启动的计数器 ,而在进入 中断服务时立即保存了计数值 ,所以这个计数值就是所需 要的中断响应时间。 如果要试验不同优先级的中断响应时间 ,可以设几个 不同优先级的中断服务程序 ,在高优先级程序的出口计数 器清零 ;而在下一个中断开始时保存计数值 ,从而测试中 断优先级对中断响应时间的影响。 如果要测试不同类型的中断响应时间 ,可以在程序 中 ,分别使用不同类型的中断 (向量中断 ,非向量中断 ,快 速中断) 来测试中断类型对中断响应时间的影响。原则上 快速中断( FIQ) 要求具有最高的优先级 ,而且快速中断的 处理与操作系统基本无关 ,中断服务子程序可以自行编写 (在不调用μC/ OS II 的系统服务程序的情况下) ,没有特 别的要求。向量中断则不能如此。因为虽然 ADS 可以使 用_irq 关键字来声明一个函数是用来处理中断的 ,从而可 以避免在程序中使用汇编代码 ,但是在μC/ OS II 中不能 这样处理。因为使用 C 语言无法确保堆栈的结构 ,而 RTOS 必须使堆栈保持一定的结构。这只有汇编语言可 以做到。这部分的代码在文件 VECTORS. S 中 (为了简 化用户编写中断服务子程序 ,这段汇编代码已经被编写成 一个宏 HANDL ER) [4 ] 。具体可见参考文献[4 ]的 P358~ P359 中所列的程序清单 6. 5 中的汇编代码 ,即中断服务 子程序必须按照μC/ OS II 的中断服务程序的要求编写 , 格式如下[ 4 ] :   保存全部 CPU 寄存器 ; (1) 调用 OSInt Enter 或 OSIntNesting 直接加 1 ; (2) 清除中断源 (3) 重新开中断 (4) 执行用户代码做中断服务 ; (5) 调用 OSInt Exit () ; (6) 恢复所有 CPU 寄存器 ; (7) 执行中断返回指令 ; (8) 如果要测试存储器加速模块对中断响应时间的影响 , 可以在关闭、部分使能和完全使能 3 种设置下分别测试同 一个中断的响应时间 ,从而得出中断响应时间与存储器加 速模块设置之间的关系。 由于锁相器的设置必然会影响中断响应时间 ,并且中 断响应时间与锁相器 ( PLL) 的倍频设置成反比 ,即倍频设 置越高 ,处理器工作速度越快 ,指令周期越短 ,而不同时钟 设置下同一中断响应所需要执行的指令数是相同的 ,因而 中断响应时间就会越短。所以本文不作此项测试。 下面用程序来测试运行在 L PC2104 上的μC/ OS II 的中断响应时间。系统初始环境 (默认) 设置如下 :系统晶 振频率设为 11 059. 2 k Hz ,锁相环 ( PLL) 倍增器值设置为 4 ,处理器工作在 f CCL K = f OSC ×4 = 111059 M Hz ×4 = 44. 236 M Hz。存储器加速开启。中断类型为 IRQ 中断 , 优先级为 0 ,即最高优先级。 μC/ OS II 提供了标准的计时程序初始化以及计时 开始和计时结束的函数 ,分别如下所示。这些函数将在所 有的试验中使用。   void PC_ ElapsedInit (void) / / 初始化计时程序设置 void PC_ ElapsedStart (void) / / 开始计时 IN T16U PC_ ElapsedStop (void) / / 统计时间返回值 进行实验时 ,首先在进入 main ( ) 函数前对系统进行 一些基本的初始化工作 ,包括初始化引脚、系统时钟、存储 器加速模块、系统时钟等参数 ,以保证系统能够基本运行。 初始化完成后 ,系统进入 main ( ) 函数 ,并创建新的任务。 以外部中断为例 ,由按键产生一个外部中断 ,在当前运行 的任务中循环检测中断寄存器 ,检测到后就跳出循环 进入中断服务子程序。统计这段时间 ,就可以得出中断响 应时间了。 中断服务程序的汇编部分按照参考文献《ARM 微控 制器基础与实践》P384~P385 的程序清单 6. 5 异常处理 代码的汇编部分来编写 ,也就是编写宏 HANDL ER ,并在 Vectors. s 文件中引用这个汇编接口 : IRQ _ Handler HANDL ER IRQ _ Exception ,至此就完成了μC/ OS II 中断服务子程序的汇编部分。C 语言部分主要用于具体 的中断处理 ,在完成必要的初始化后 ,只要在中断处理程 序的第一句将计时停止并返回计数值 ,具体的中断处理代 码则并不重要 ,或者说停止计时就是中断处理代码了。由 于 IRQ 中断与系统相关 , 这部分代码一般在文件 TAR GET. C 中编写实现。C 语言部分示意性代码如下 所示 : void __IRQ_ Ecpe (void) { 14    20051 8 IN T16U Elap Time ; OS_ EN TER_CRITICAL () ; / / 关中断 OSInt Enter () ; / / 中断服务子程序 ISR 开始 EXTIN T = 0x02 ; / / 清除中断源 OS_ EXIT_CRITICAL () ; / / 开中断 Elap Time = PC_ ElapsedStop () ; / / 停止计时并返回计数值 OSInt Exit () ; / / 退出中断服务 VICVectAddr0 = 0 ; / / 清零中断向量 } void Task (void) { PINSEL0 = 0x20000000 ; / / 设置 I/ O 口工作模式 ,P0. 14 / / 设置为 EIN T1 IODIR = 0x00000400 ; / / 设置 L ED1 控制口为输出 ,其 / / 他 I/ O 为输入 VICIntSelect = 0x00000000 ; / / 设置所有通道为 IRQ 中断 VICVectCntl0 = 0x2 E ; / / EI NT1 通道分配到 IRQ slot 0 , / / 即优先级最高 VICVectAddr0 = (int) IRQ_Ecpe ; / / 设置 EIN T0 向量地址 VICInt Enable = 0x00008000 ; / / 使能 EIN T0 EXTIN T = 0x02 ; / / 清除外部中断标志 OS_ EN TER_CRITICAL () ;/ / 进入临界区 ,关中断 While (1) / / 循环检测 {if ( ( EXTIN T & 0x01 !) = 0 ) PC_ ElapsedStart () ; / / 如果有中断发生 ,计时开始 break ; } } / / 跳出循环 ; OS_ EXIT_CRITICAL () ; / / 退出临界区 ,开中断 return (0) ; } int main (void) { PC_ DispClrScr ( DISP _ F GND _ W HITE + DISP _ B GND _ BLACK) ; OSInit () ; PC_DOSSaveReturn () ; PC_ ElapsedInit () RandomSem = OSSemCreate (1) ; OSTaskCreate ( TaskStart , ( void 3 ) 0 , &TaskStartStk [ TASK_ST K_SIZE - 1 ] , 0) ; OSStart () ; } 测试不同优先级的中断响应时间的情况稍有些不同。 因为要在低优先级任务的中断出口激活高优先级的中断 任务 ,对计数器清零并开始计数 ,在高优先级的中断处理 代码的第一条语句结束计时。其余的部分基本一样。限 于篇幅 ,具体的源代码就不一一列举了。 4  结 论 经过试验 ,得到表 1 所列测试数据。所有数据按照默 认的条件 ,每次只更改其中一个条件测试得出。 表 1 测试项目 实测时间/μs 结论 中断类型 快速中断 ( FIQ) 1. 2 向量中断 ( IRQ) 1. 23 非向量中断 1. 23 无关 内存加速 模块 (MAM) 关闭 3. 42 部分使能 2. 20 全部使能 1. 23 有关 中断优先级 — 1. 46 无关     注 :中断优先级测试时 ,中断响应时间大于正常值 ,是因为   发生高优先级中断时 ,需要等待低优先级中断任务开中断才能   进行响应。 由以上数据可知 ,μC/ OS II 的中断响应时间受内存 加速模块和系统频率设置的影响较大 ,而与中断的类型和 任务(中断) 优先级关系不大。以上仅仅是个简单的测试 , 更深入的测试可以基于这个方法继续探讨。 参考文献 1  中国软件评测中心. 漫谈嵌入式实时操作系统与测试. 2002 06 2  Labrosse Jean J . 嵌入式实时操作系统μC/ OS II. 邵贝贝等 译. 第 2 版. 北京 :北京航空航天大学出版社 ,2003 3  马忠梅 ,等. ARM 嵌入式处理器结构与应用基础. 北京 :北京 航空航天大学出版社 ,2002 4  周立功 ,等. ARM 微控制器基础与实践. 北京 :北京航空航 天大学出版社 ,2003 (收稿日期 :2005204201) 微软 Windows Embedded 教学 研讨会在沪举办   2005 年 6 月 25、26 日 ,微软亚洲研究院依托“同济大学———微软 Windows 移动与嵌入式技术中心”,在同济大学嘉定校区面向高校教师 举办了微软 Windows Embedded 教学研讨会。来自 30 余所高校的 110 多位一线教师参加了本次教学研讨活动。   此次研讨会内容丰富 ,形式多样 ,既包括前瞻性的主题报告 ,也有具 体的技术培训。来自微软总部负责 Windows CE . N ET 研发的主要负责 人、软件架构师及来自微软亚洲研究院、微软亚洲院的高级研究员 及开发工程师们为教师们讲解 Windows CE . N ET 核心技术及应用前 景。为了更贴近教学需求 ,研讨会还邀请到台湾大学、同济大学的高校 教师代表 ,介绍高校开设嵌入式系统课程的成功经验。针对教师们对嵌 入式技术不同的掌握程度 ,技术讲座分为入门级和提高级两个并行环 节 ,教师们可根据自己的具体情况选择合适的课程。研讨会安排了专门的 动手实验环节 ,通过此环节 ,教师们可以亲自体验在培训中学到的内容。   丰富的资料也是本次研讨会的特色之一 ,除了会议所有演讲资料 外 ,研讨会还专门为老师们从美国订购了由微软出版社出版的 Program2 ming Microsoft Windows CE . N ET ( Third Edition) 。该书系统地介绍了 WinCE API 编程 ,并详细地介绍了如何使用 Window CE . N ET 在智能 移动设备上开发出高性能的应用程序。
/
本文档为【UC_OS_II的实时性能分析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索