FreeRTOS是如何工作的--实时应用
实时应用
实时操作系统(RTOS's)通过同样的原理达到多任务的目的。但他们的目标与那些非实时系统相比是很不一样的。不同的目标影响到不同的调度策略。实时/嵌入式系统设计成提供一个对 真实世界的事件的及时响应(timely response)。出现在真实世界中的事件可能有一个时间限制(deadline),在此期限之前,实时/嵌入式系统必须给出响应,RTOS调度策略必须确保时间限制是恰当的(met).
为了达到这个目的,软件工程师必须首先为每个任务设置一个优先级(priority)。RTOS的调度策略 只是简单地确认 能被执行的最高优先级别的任务 是分配了处理时间的任务(the task given processing time)。这可能要求在相同优先级的 任务之间公平的共享 处理时间,如果他们准备并发运行的话。
代码示例:
最基本的例子是 一个由键盘和LCD组成的实时系统。用户必须 在合理的时段 为 每个键盘按下 取得视觉反馈(visual feedback).。如果用户不能 在这时段 看到 键盘按下 已经被接受,软件产品将会很难使用(be awkward to use)。如果最长的接受期是100ms,那么在0到100ms的响应 可被接受。这个功能可以用一个 下面这样的结构的独立(autonomous)任务 实现:
void vKeyHandlerTask( void *pvParameters )
{
//键盘处理是一个连续的过程。就像大多实时任务那样,这个任务
//也是用一个无限循环实现的。
for( ;; )
{
[Suspend waiting for a key press]
[Process the key press]
}
}
现在假设 实时系统也执行一个依赖数字滤波输入的控制功能。这个输入必须被取样(sampled),滤波(filtered),并且 每2ms执行一次控制循环。为了让滤波器正常操作,取样的时间规律(the temporal regularity)必须精确到0.5ms。 这个功能可以 用下面这个结构的 独立任务 实现: void vControlTask( void *pvParameters ) [Sample the input]
{
for( ;; )
{
[Suspend waiting for 2ms since the start of the previous
cycle]
[Filter the sampled input]
[Perform control algorithm]
[Output result]
}
}
软件工程师必须设置 控制任务为 最高的优先级,因为:
1. 控制任务的时间限制(deadline) 比 键盘处理任务的 要严格;
2. 控制任务错过最后期限(deadline)的后果 比 键盘处理任务 要严重。
下面将演示 这些任务是如何被实时操作系统调度的.
===下一节:实时调度===
作者:Gavin Lee 更新日期:2006-04-13
来源:upsdn.net
浏览次数:
相关文章
相关评论 发表评论
- No Comments