-
实时性是指系统能够在限定的时间内完成任务并对外部的异步事件作出及时响应。
在大多数工业控制中,对实时性的要求非常高。
实时操作系统是能够满足实时系统
中实时任务的处理响应时间要求的操作系
统。实时操作系统是事件驱动
< br>(event-driven)
的,能对来自外界的作用和信号在限
定的时间范围内作出响应。它强调的是实时性、可靠性和灵活性,与实时应用软件
相结合成为有机的整体,
起着核心作用
;
< br>由它来管理和协调各项工作,
为应用软件提
供良好的运行
软件环境及开发环境。在多任务实时系统中,必然由实时操作系统来
对实时任务进行管理
。
μ
C/OS-II
是一种结构小巧、具
有可剥夺实时内核的实时操作系统。其内核提
供任务调度与管理、
时间管理、
任务间同步与通信、
内存管理和中断服务等功能。
现在许多工业控制系统用到了
μ
C/O
S-II
,为了对其实时性有更深入具体的了
解,本文对
μ
C/OS-II
的实时性进行了测试和分析
,在实时系统设计中具有现实意
义。
1
μ
C/OS-
II
实时性能测试指标
衡量嵌入式实时操作系统的好坏一
般主要参考以下主要性能指标参数:任务切
换时间、中断响应时间、任务响应时间、任务
创建
p>
/
删除时间、交替信号量时间、取得
/
p>
释放信号量时间、交替消息队列传输时间等。
本文仅对前
2
个最重要的指标参数进行测试分析。
1.1
任务切换时间
任务切换时间
(Task
Content
Switch
Ti
me)
可以反映出
RTOS
执行任务的
速度。
μ
C/OS-II
< br>使用的是占先式内核,以保证系统的响应时间。每个任务都被赋予
一定的优先级,
最高优先级的任务一旦就绪,就能得到
CPU
的控制权。当一个
运行
着的任务通过信号量等机制使一个更高优先级的任务进入了就绪态,
μ
C/OS-II
会
进行任务
调度。这时当前任务的
CPU
使用权就要被剥夺,那个高优先级
的任务会立
刻得到
CPU
的控制权。<
/p>
<
/p>
每个任务都有自己的一套
CPU
寄存器和
栈空间。任务的切换实际上就是
CPU
寄
存器内容的切换。
CPU
内部寄存器越多,额外负荷就越重。
在任务切换之前还需要在就绪表中查找出优先级最高的任务,它由任务调度函
数
OSSched()
完成,是比较花费时间的。
因为这个函数有固定长度的语句,所以它
的执行时间是常数,与应用程序建立了多少个任
务没有关系。
所以任务切换时间取决于
CPU
p>
有多少寄存器要出入栈,以及相关调度函数的执
行速度。
1.2
中断响应时间
中断响应时间
(Interrupt Response Ti
me)
可以反映出
RTOS
对外界变化
的反应
速度,是指从中断发生起到执行中断处理程序的第一条指令所用的时间。它是衡量
嵌入式实时操作系统实时性能的最主要、最具有代表性的性能指标。
中断响应时间
=
中断延迟时间
<
/p>
保存
CPU
状态的时间
< br>
该内核的
ISR
进入函数的执
行时间
中断延迟时间
=
关中断的最长时间
开始执行中
断服务子程序
(ISR)
的第
1
条指
令的时间
关中断的最长时间取决于运行时不
同的情况,其他参数在其系统中都有固定长
度代码。中断响应是系统在最坏情况下响应中
断的时间。
2
μ
C/OS-
II
实时性能测试原理
2.1
任务切换时间测试原理
任务切换时间测试是利用系统内部
的定时器计算任务切换时间。给定时器一个
初始值
a1
,并建立两个任务
;
在任务
1
中开启定时器,利用消息邮箱切换到任务
2
,
停止计时,记录定时器的值为
a2
。设系统时钟的计数频率为
f
,任务切换时间为
Ttest
,则:
Ttest=(a1-a2)/f (1)
2.2
中断响应时间测试原理
中断响应时间测试同样也是利用定
时器计算中断响应时间。给定时器一个初始
值
a1
,建立一个任务和定时器中断服务函数,在任务中开启定时器
;
当定时器自减
为
0
时,进入
中断服务子函数,在该子函数中关闭定时器,记录定时器的值为
a2
。
注意:定时器归
0
后自动变为初
始值
a1
。设系统时钟的计数频率为
f
,中断响应时
间为
Tirt
,则:
Tirt=(a1-a2)/f (2)
3
μ
C/OS-
II
实时性能测试步骤及结果
本文测试使用的硬件平台为
2410
开发板,其中处理器采用
Samsu
ng
公司的
S3C2410X
。
S3C2410X
是一款基于
ARM920T
内核的
16/32
位
< br>RISC
嵌入式处理器,系
统主频是
202.8 MHz
。
3.1
任务切换时间测试步骤及结果
①系统时钟初始化。
这里只用到定时器
0
。
PC
LK=FCLK/4-202.8
MHz/4=50.7
M
Hz
,
预分频值设置为
0
,除法器设为
1/4
,所以最小分频为
0.08
μ
s
,
f=12.5 MHz
。计
时器
0
初始值
TCNTB0
设为<
/p>
60 000
,即
a1=60 000.
②如图
1
所示,建立两个任务:
Task_T
CST_Start()
和
Task_TCST_End()<
/p>
。
Task_TCST_
p>
End
优先级高,运行后因等待邮箱的消息而挂起等待
;
然后
Task_TCS'T_Start
开始
运行,
向邮箱发送一则消息,
同时定时器开始计时
;
之后该任务延时一段时间,<
/p>
进入
挂起状态。
Task_TCST_E
nd
收到邮箱消息,由等待状态进入就绪态,因为拥有就绪
态队
列中的最高优先级,所以获得
CPU
使用权。它进入运行态后立
即停止计时,记
为
a2
。
-
-
-
-
-
-
-
-
-
上一篇:二字代码
下一篇:最全的java学习笔记(必看)