【问题标题】:Basics of Real Time OS实时操作系统基础
【发布时间】:2015-05-15 09:20:25
【问题描述】:

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

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

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

我知道这些问题令人讨厌,但我不知道如何获得这些问题的答案。

提前致谢

编辑:

我还有一个疑问,RTOS 中的“OS”是什么意思?这是否意味着与其他操作系统相同的操作系统,还是仅包含 API 的源代码文件?

【问题讨论】:

    标签: rtos freertos


    【解决方案1】:

    确定设备是否具有“实时”功能有点武断,取决于您项目的时序要求。如果您有非常高的时序要求,则需要使用速度更快的微控制器/处理器。

    使用RTOS(例如FreeRTOSeCOSuCOS-X)有助于确保给定任务将在可预测的时间执行。 FreeRTOS website 很好地讨论了操作系统是什么以及操作系统声称实时功能意味着什么。 http://www.freertos.org/about-RTOS.html

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

    【讨论】:

    • @ShaswatDube :不要在 cmets 中提出更多问题 - 更新您的原始问题或提出新问题。
    【解决方案2】:

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

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

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

    【讨论】:

    • 运行频率为 1 GHz 的 32 位 DSP 与运行频率为 16 MHz 的 8 位微控制器之间的对比...... IMO 确实如此,尤其是在您指出的容量方面。我在一个项目中工作,我们在 FPGA 上实现了一个运行频率为 50 MHz 的 32 位软核处理器(也用于控制一些具有定制 IP 的硬件),它在客户的验证中优于所有其他竞争对手,一些竞争对手使用在 ~400MHz 的 ARM9 内核上运行的 Linux。这完全是应用程序设计的问题,在对其应用程序进行深度重新设计后,他们将性能提高到了相似的水平。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

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

      这个操作有两个含义,一个是需要一个精确且专用的计时器,滴答计时器,另一个是在上下文切换期间,存在相当大的内存操作开销。当前 CPU 状态,或多核 SoC 中的 CPU 状态,必须复制到抢占任务的上下文信息中,并且必须在 CPU 中恢复新的准备运行任务的上下文。

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

      为具有实时功能的 RTOS 设计的内核的一项优化是能够以最少的代码保存/恢复 CPU 上下文状态,因此与常规处理器相比,它的执行时间要少得多。

      几乎可以在任何处理器中实现 RTOS,并且有一些针对资源受限内核的实现。您主要需要一个具有中断容量和 RAM 的计时器。如果 CPU 非常快,您可以在一些带有 DSP 的实时应用程序中以高速率(亚毫秒)运行操作系统滴答声,或者在低端低时序要求的应用程序中以每秒 10~100 个滴答的较低速率运行操作系统CPU。

      【讨论】:

      • 有一本关于 uC/OS-II here 的书,现在有点过时了,它提供了关于 RTOS 的一般背景,特别是 uC/OS-II。它还提供了很好的解释,描述了许多实现细节。
      【解决方案5】:

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

      【讨论】:

        最近更新 更多