下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

实时应用程序
[RTOS 基本原理]

实时操作系统 (RTOS) 利用这些相同的原理实现多任务处理—— 但它们的目标与非实时系统有着巨大差异。不同的 目标反映在调度策略中。设计实时/嵌入式系统 是为了对现实世界事件作出及时响应。现实世界中发生的事件 存在截止时间,因此实时/嵌入式系统必须在此之前响应, RTOS 调度策略必须确保遵守这些截止时间的要求。

为实现这一目标,软件工程师必须首先为每个任务分配优先级。然后,RTOS 的调度策略 简单地确保能够执行的最高优先级任务,是被给予处理时间的任务。如果同等优先级的任务准备同时运行, 这可能需要在它们之间“公平”分享处理时间。


示例:

最基本的例子就是包含键盘和 LCD 的实时系统。用户应在合理时间内收到 各按键的视觉反馈——如果用户在此期间无法看到按键已被接受,则该软件产品的使用感会很差。如果最长接受时间为 100 毫秒,则任何介于 0 和 100 毫秒之间的响应都是可接受的。此功能可作为一个具有以下结构体的自主任务来实现:

void vKeyHandlerTask( void *pvParameters ) { // Key handling is a continuous process and as such the task // is implemented using an infinite loop (as most real time // tasks are). for( ;; ) { [Suspend waiting for a key press]

[Process the key press] } }

现在假设实时系统也在执行依赖数字过滤输入的控制功能。必须对输入进行采样、过滤并每 2 毫秒执行一次控制周期。为使过滤器正确运行,采样时间规则必须精确到 0.5 毫秒。此功能可作为一个具有以下结构体的自主任务来实现:

void vControlTask( void *pvParameters ) { for( ;; ) { [Suspend waiting for 2ms since the start of the previous cycle]

[Sample the input] [Filter the sampled input] [Perform control algorithm] [Output result] } }

软件工程师必须将控制任务的最高优先级分配为:

  1. 控制任务的截止时间比按键处理任务的截止日期更严格。
  2. 错过截止时间对控制任务的影响要大于对按键处理程序任务的影响。

下一页演示了实时操作系统如何调度这些任务。


下一页: RTOS 基本原理——实时调度

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.