μC/OS-II嵌入式操作系统实时性能分析与测量

时间:2022-08-16 09:10:36

μC/OS-II嵌入式操作系统实时性能分析与测量

摘要:以评价实时操作系统性能为目标,对时间参数的测量原理和方法进行了研究,以μC/OS-II实时嵌入式操作系统为研究对象,分析其内核的实时机制及任务上下文切换时间、中断响应时间等实时性指标,给出了测量方法,并采用两种方法来获取时间参数,获得了一批嵌入式实时操作系统的数据,为实时性设计提供了参考。

关键词:嵌入式操作系统;实时性;上下文切换时间;中断响应时间

中图分类号:TP316文献标识码:A文章编号:1009-3044(2010)08-1810-03

Real-time Performance Analysis and Measurement of μC/OS-II Embedded System

HE Jun-fen, CHEN Ci-fa, LIU Wei

(College of Computer and Information, Three Gorges University, Yichang 443002, China)

Abstract: For evaluate the real-time operating system performance, this article researched the measurement principle and the method of time parameters. Then, used the μC/OS-II real-time embedded operating system as the research object, analyzed its real-time kernel, and task context switch time, interrupt response time, and given the method to measure real-time performance, used two methods to obtain the time parameters. The obtained results for real-time design provides a reference.

Key words: embedded operation system; real-time performance; context switching time; interrupt response time

嵌入式系统是面向应用的专业计算机系统,已经广泛应用于军事国防、工业控制、消费电子、医疗仪器、汽车电子等各种技术领域,且随着微处理器性能的提高,嵌入式软件规模也发生指数型增长,嵌入式应用也朝着高度复杂和智能化的功能发展。为此,嵌入式系统已大量采用嵌入式操作系统,嵌入式操作系统在嵌入式软件中的作用越来越大,所占比例越来越高,系统的实时性能也越来越受到重视[1-3]。不同的应用对系统的实时性指标有着不同的要求,因此需要在所选用的实时操作系统和硬件平台下对实时应用系统进行性能测试,以指导应用系统设计。现在许多系统都用到了μC/OS-II[1,4],为了对其实时性有更深入具体的了解,本文对μC/OS-II的实时性进行了测量和分析,对指导系统选型、实时性设计等方面具有现实意义。

1 实时性能测量指标[5-6]

衡量嵌入式操作系统实时性的主要性能指标参数有任务上下文切换时间、任务抢占时间、中断响应时间、任务响应时间、任务创建/删除时间、信号量交替时间、消息队列延时[7]等,本文以任务上下文切换时间与中断响应时间为例来说明。

1.1 任务上下文切换时间

在多任务系统中,上下文切换是指CPU的控制权由运行任务转移到另外一个就绪任务时所发生的事件。当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务。上下文切换包括保存当前任务的运行环境、恢复将要运行任务的运行环境,上下文的内容依赖于具体的CPU。上下文切换时间包括保存当前运行任务上下文的时间、选择下一个任务的调度时间以及将要运行任务的上下文的恢复时间[8]。上下文切换在实时系统中是频繁发生的动作,其时间的快慢直接影响到整个实时系统的性能。

1.2 中断响应时间

中断响应时间反映出实时系统对外部事件的反应速度,是指从中断发生起到执行用户中断处理程序的第一条指令所用的时间。它是衡量嵌入式实时操作系统实时性的最主要且最具代表性的性能指标。

对于抢占式调度内核的系统,处理中断时先要做一些处理,确保中断返回前调度程序能正常工作,即要先调用一个特定的函数(即内核中断服务程序入口函数),该函数通知内核即将进行中断服务,使得内核可以跟踪中断的嵌套,以便在解除中断嵌套后进行重调度。内核一般把该入口函数和相应的出口函数提供给用户。抢占式调度内核的中断响应时间由下面的表达式给出,即:

中断响应时间=中断延迟+保存CPU内部寄存器的时间+内核中断服务程序入口函数的执行时间[8]

2 测量方法

2.1 任务上下文切换时间测量方法

在系统中,任务上下文切换是频繁发生的动作,引起任务切换的因素很多,如任务因等待消息而挂起 ,高优先级任务抢占等。为了便于测量任务上下文切换时间,制造任务之间的切换事件,然后通过两次测量间接地得到。

1) 建立两个不同优先级的任务Task1、Task2,其中Task1的优先级较低。Task2运行一段时间后挂起自己,Task1运行,当低优先级的Task1恢复高优先级的任务Task2时,切换到Task2,然后Task2又立即使挂起自己,如此周而复始,示意代码如下:

2) 在上述过程中得到的时间包含了两次任务切换时间,以及任务挂起与恢复各一次的时间。在此基础上,设计用一个高优先级的任务Task2挂起与恢复一个低优先级的任务Task1,这样得到的时间则包括任务挂起与恢复各一次的时间,示意代码如下:

3) 任务上下文切换时间为:

((time2-time1)-(time4-time3))/2

2.2 中断响应时间测量方法

测量前,先编写一个中断服务程序,并将其与相应的中断号对应。示意代码如下,test_int()表示中断的函数,也可以用软件中断来代替。time1表示发出中断请求的时刻,time2表示开始执行用户中断服务程序的时刻,因此可以把time2-time1视作中断响应时间[9]。

3 μC/OS-II实时性测量及结果分析

本文测量使用的硬件平台为ARM9开发板,采用Samsung公司的S3C2410X处理器,是一款基于ARM920T内核的32位RISC嵌入式处理器,系统主频为202.8MHz[10]。

3.1 采用系统内置定时器

S3C2410X芯片中有5个定时器,其中4个具有脉宽调制功能,且均采用独立的硬件逻辑,其计时脉冲直接取自系统主时钟,在某些场合可以用它来实现精度较高的时间测量。由于μC/OS-II的系统时钟节拍采用定时器1,在此以定时器2(Timer2)为例来说明。

1) 系统时钟初始化。设置PCLK = FCLK/4 = 202.8MHz/4 = 50.7MHz,预分频值Prescaler设置为0,除法器Divider的值设置为2,这样最小精度为:

I/(PCLK/(Pr escaler+1)/Divider_value)=1/(PCLK/1/2)=0.04μs

2) 定时器初始值设置。定时器的初始值通过相应的计数缓冲寄存器rTCNTBn来设置。在此,设置Timer2的rTCNTB2值为0xFFFF

3) 定时器的启动与停止。设置定时器控制寄存器rTCON中的第12位控制Timer2的启动和停止。这样只需在被测代码运行前启动定时器,并在被测代码结束后立即停止定时器。最后读取定时器的计数观察寄存器rTCNTO2的值,计算运行时间:

(0xFFFF-rTCNTO2)×0.04μs

在采用定时器计数时,有以下两点需要注意:

1) 定时器的时间开销。定时器的启动与停止自身也需要一定的运行时间,在计算时应将此开销减去。

2) 定时器循环计数。定时器循环计数即从初始值自减到0,然后恢复初始值继续自减,所以在定时器停止时,要考虑定时器有无经过多次循环。本文中循环的最大间隔时间为65535×0.04μs = 2621μs,一次任务切换或中断响应的时间远小于此值,可以保证定时器没有经过多次循环。

3.2 采用示波器测量

采用示波器测量需要通过处理器的I/O口的支持,通过标记I/O口来记录各个时间点。S3C2410X有117个复用的输入/输出端口,分别是端口A~H(PORT A~H),共8组。它们的寄存器是相似的:端口配置寄存器(GPxCON)用于选择引脚功能,端口数据寄存器(GPxDAT)用于读/写引脚数据(x表示端口组,可取A~H中任一值),其中PORT B-H在寄存器操作方面完全相同。PORT B-H的GPxCON中每两位控制一根引脚:00表示输入、01表示输出、10表示特殊功能、11保留不用;GPxDAT用于读/写引脚:当引脚设为输入时,读此寄存器可知相应引脚的状态是高是低;当引脚设为输出时,写此寄存器相应位可令此引脚输出低电平或高电平。

本文采用PORTB组的GPB2引脚以例来说明,

1) 设置寄存器rGPBCON。设置寄存器rGPBCON[5:4]位为00、01、10,可以分别表示输入、输出、定时器2的输出;

2) 设置引脚输出信号。GPB2设置为输出功能时,写rGPBDAT[2]实现GPB2引脚输出低电平或高电平,其中rGPBDAT = rGPBDAT | (1

3) 读取时间。时间的读取有两种方式:观察示波器的输出波形,直接读取;或通过保存的采样数据来计算,计算公式为:

每周期的高电平采样记录数 ×采样间隔(或采样精度)

3.3 测量结果及分析

3.3.1 任务上下文切换时间分析

图1是在采用定时器计时的情况下,测量了操作系统在运行2个任务下的任务上下文切换时间。所测得的时间均值为13.8726 μs。在图中,各测量值集中分布呈现一条直线,表明这一位置所对应的时间为操作系统任务上下文切换的最短时间,操作系统任务上下文切换的整体性能稳定,也有极少的测量值离散于图的上半部分,这表明存在极少比较慢的任务上下文切换操作。

此外,在实验中还发现,在编译时,优化程序对时间也有较大影响。在禁用优化选项时,测出的时间为16.1422μs;在选用优化选项后,时间下降显著。但在采用不同的优化选项时,测得的时间并非随着优化程度的提高而下降,有时并没显著差距,甚至有所增加,如图2为不同优化程度下的任务上下文切换时间。

3.3.2 测量数据对比

除中断响应时间只采用了定时器测量外,其它指标均采用两种不同的测量方法,所得出的平均值相差并不太大,在1~2μs之间,只是消息队列延迟时间及各项目的最大值相差较大。最大值相差是由于定时器计时,记录了程序运行一段时间以来每一次变化的值。而示波器基于采样,只能记录极短时间的数据,对于某些极少数的偏离情况难以捕捉记录。但通过示波器观察到波形的稳定,及表1中的数据,均表明系统实时性较强且整体性能稳定。

μC/OS-II是一个基于优先级的实时操作系统,系统不支持时间片轮转调度,且内核中没有提供死锁的相应解决方案,故本实验的数据中没有死锁解除时间。如果要系统具有死锁解除能力,则需要用户代码的支持。

4 结束语

本文对μC/OS-II操作系统在ARM9平台上的实时性能参数进行测量,获得了一批重要的数据,对于指导用户在特定平台下的操作系统选型、实时性设计方面有现实意义。由系统的实时性受诸多因素的影响,以后将对此作更深入的分析、测量,以获得更多、更真实的数据。

此外,通过使用定时器与示波器测量对比发现,在缺少一些测量硬件的条件下,采用系统自带的定时器进行测量,也可以达到较好的效果,为某些缺少测量设备的用户提供了测量途径。

参考文献:

[1] 刘淼,王田苗,魏洪兴.基于uCOS-II的嵌入式数控系统实时性分析[J].计算机工程,2006(11):222-224.

[2] 魏海元.嵌入式软件测试[J].上海船舶运输科学研究所学报,2007(12):135-138.

[3] 王伟,蒋斌.4种实时操作系统实时性的分析对比[J].电子产品世界,2003(8/上半月):61-63.

[4] Labrosse J J.C/OS-II-源码公开的实时嵌入式操作系统[M].邵贝贝,译.2版.北京:北京航空航天大学出版社,2003.

[5] 韩立宏.嵌入式实时操作系统性能测试方法[J].指挥控制与仿真,2008(4):98-101.

[6] 沈国保,刘松强.实时系统的性能测量[J].核电子学与探测技术,2002(9):416-419.

[7] Kar K P, Porter K.Rhealstone.A rea1-time benehmarking proposla[J].Dr. Dobb's Journal,1989(3):14.

[8] 罗蕾.嵌入式实时操作系统及应用开发[M].北京:北京航空航天大学出版社,2005.

[9] 江建慧,唐智杰.测量嵌入式操作系统实时性能参数的新方法[J] .同济大学学报:自然科学版,2008(9):1260-1266.

[10] S3C2410X 32-Bit RISC Microprocessor Revision 1.2 PWM TIMER[EB/OL]./global/business/semiconductor/productInfo.do?fmly_id=229&partnum=S3C2410&xFmly_id=229#component03.

上一篇:高校计算机教育改革探讨 下一篇:基于遗传模拟退火算法的军用仓库选址研究