实时基础知识 OS

Basics of Real Time OS

我正在尝试从头开始学习 RTOS,为此,我使用 freeRTOS.org 作为参考。我发现这个站点是学习 RTOS 的最佳资源。但是,我有一些疑问,我试图找出答案但无法得到确切的答案。

1) 如何找出设备是否具有实时功能,例如一些控制器有(TI Hercules)而另一些没有(MSP430)?

2) 这是否取决于 CORE 的架构(TI Hercules TMS570 中的 ARM Cortex-R CPU)?

我知道这些问题很烦人,但我不知道如何得到这些问题的答案。

提前致谢

编辑:

我还有一个疑问,RTOS中的"OS"是什么意思?这是否意味着与其他 OS 相同,或者它只包含 API 的源代码文件?

实时能力是一个程度的问题。 1 GHz 的 32 位 DSP 运行 比 16 MHz 的 8 位微控制器 运行 具有更多的实时能力。更强大的微控制器可以与更快的内存和端口配对,并可以管理需要大量数据和计算的应用程序(例如实时视频图像处理)。功能较弱的微控制器将仅限于需要相对少量数据和计算的要求较低的应用(可能是实时电机控制)。

MSP430 具有实时功能,可用于各种实时应用。有很多RTOS已经移植到MSP430上,包括FreeRTOS。

为实时应用选择微控制器时,您需要考虑应用的数据带宽和计算要求。需要在多长时间内处理多少数据?还要考虑数据的范围和精度(整数或浮点数)。然后找出哪个微控制器可以支持这些要求。

确定设备是否具有 "Real-Time" 功能有些随意,取决于项目的时序要求。如果你有非常高的时间要求,你会想要使用更快的 microcontroller/processor.

使用 RTOS (e.g. FreeRTOS, eCOS, or uCOS-X) can help ensure that a given task will execute at a predictable time. The FreeRTOS website provides a good discussion of what operating systems are and what it means for an operating system to claim Real-Time capabilities. http://www.freertos.org/about-RTOS.html

您还可以从 uC/OS-X and FreeRTOS 的端口页面看到它们可以 运行 在各种目标微控制器/微处理器上。

虽然 Cortex-R 针对硬实时进行了优化;这并不意味着其他处理器不适合实时应用程序,或者更适合特定应用程序。您需要考虑的是 RTOS 和处理器的特定组合是否会满足 您的 应用程序的实时限制;即便如此,最关键的因素是您的软件设计而不是平台。

一些理论知识也很有用,例如确定给定的任务集在给定的调度方法下是否可调度(有时可能不是),静态优先级和动态优先级调度之间的差异,优先级倒置问题等

您希望从 RTOS 获得的主要目标是确定性,大多数其他功能在大多数其他非 RTOS 操作系统中已经可用。

RTOS 中的 -OS 部分表示操作系统,简单地说,与所有其他操作系统一样,RTOSes 提供了管理处理器资源所需的基础结构,因此在设计应用程序时,您在更高层次上工作。为了访问这些功能,OS 提供了 API。使用它 API 你可以使用信号量、消息队列、互斥量等

RTOS有一个要求是RTOS,它必须是抢先的。这意味着它必须支持任务优先级,因此当更高优先级的任务准备好进入 运行 一种可能的任务状态时,调度程序必须将当前上下文切换到该任务。

这个操作有两方面的含义,一是需要一个精确的专用定时器tick timer,二是在上下文切换时,有相当大的内存操作开销。当前 CPU 状态,或者在多核 SoC 的情况下 CPU,必须复制到抢占任务的上下文信息中,新的准备 运行 任务的上下文必须是在 CPU.

中恢复

ARM 处理器已经提供了对系统定时器的支持,它专门用作 OS 滴答定时器。不久前,滴答计时器需要使用常规的非专用计时器来实现。

专为具有实时功能的 RTOSes 设计的内核中的一项优化是能够使用最少的代码save/restore CPU 上下文状态,因此它的结果要少得多执行时间比常规处理器要快。

几乎可以在任何处理器中实现 RTOS,并且有一些实现是针对资源受限内核的。您主要需要一个具有中断能力的定时器和 RAM。如果 CPU 非常快,您可以 运行 OS 以高速率滴答,在一些使用 DSP 的实时应用程序中为亚毫秒,或者以较低的速率如 10~100低端 CPUs.

时序要求低的应用程序每秒滴答数