我正在尝试从头开始学习RTO,为此,我将freertos.org用作参考。我发现该网站是学习RTO的最佳资源。但是,我有一些疑问,我试图找出但无法获得确切的答案。
1)如何找出该设备具有实时功能,例如有些控制器有(Ti Hercules),而其他控制器没有(MSP430)?
2)这取决于核心的架构(ti hercules tms570中的ARM Cortex-R CPU)?
我知道这些问题会滋生,但是我不知道如何获得这些问题的答案。
预先感谢
编辑:
另外一个查询我有RTO中的" OS"的含义?这是否意味着与其他OS相同,还是仅包含API的源代码文件?
弄清楚设备是否具有"实时"功能有些任意,取决于您项目的时机要求。如果您的时机要求很高,则需要使用更快的微控制器/处理器。
使用RTO(例如Freertos,ECOS或UCOS-X)可以帮助确保给定任务在可预测的时间执行。Freertos网站很好地讨论了操作系统是什么以及对操作系统声称实时功能的含义。http://www.freertos.org/about-rtos.html
您还可以从UC/OS-X和Freertos的端口页面上看到它们可以在各种目标微控制器/微处理器上运行。
实时能力是一个程度的问题。与16 MHz运行的8位微控制器相比,以1 GHz运行的32位DSP具有更多的实时功能。更强大的微控制器可以与更快的记忆和端口配对,并且可以管理需要大量数据和计算的应用程序(例如实时视频图像处理)。功能较小的微控制器将仅限于要求相对少量数据和计算(可能实时电动机控制)的要求较少的应用。
MSP430具有实时功能,并且用于各种实时应用程序。有许多RTO已移植到MSP430,包括Freertos。
为实时应用程序选择微控制器时,您需要考虑应用程序的数据带宽和计算要求。在什么时间内需要处理多少数据?还要考虑数据的范围和精度(整数或浮点)。然后找出哪个微控制器可以支持这些要求。
,而Cortex-r则针对硬实时进行了优化;这并不意味着其他处理器不适合实时应用程序,甚至不适用于特定应用程序。您需要考虑的是,RTO和处理器的特定组合是否会符合您的您的应用程序的实时约束;即便如此,最关键的因素是您的软件设计而不是平台。
您要从RTOS获得的主要目标是确定论,大多数其他非RTOS操作系统都已经可用。
RTOS中的-OS部分意味着操作系统,简单地提出,并且像所有其他操作系统一样,RTOSE提供了管理处理器资源的所需基础架构,因此在设计应用程序时,您可以在更高的级别上工作。为了访问这些功能,操作系统提供了API。使用该API,您可以使用信号量,消息队列,静音等。
RTO有一个要求成为RTO的要求,必须先发。这意味着它必须支持任务优先级,因此当准备运行更高优先级任务时,可能的任务状态之一是,调度程序必须将当前上下文切换到该任务。
此操作有两个含义,一个是一个精确而专用的计时器,tick计时器的要求,另一个是在上下文切换期间,在上下文切换过程中,开销上有相当大的内存操作。当前的CPU状态或在多核SOC的情况下,必须将CPU复制到预先获得的任务的上下文信息中,并且必须在CPU中恢复新的准备任务上下文。
ARM处理器已经为系统计时器提供了支持,该计时器旨在专用用作OS TICK计时器。不久前,需要使用常规,非专业计时器实施tick计时器。
在具有实时功能的RTOSE设计的内核中,一种优化是可以使用最小代码保存/还原CPU上下文状态的能力,因此其执行时间比常规处理器的执行时间少得多。
几乎可以在任何处理器中实现RTO,并且有一些针对资源约束内核的实现。您主要需要一个具有中断容量和RAM的计时器。如果CPU非常快,您可以以高率的速率运行OS tick,在某些带有DSP的实时应用中,或以较低的速率(例如每秒10〜100 tick),对于低端时正时需求的应用程序的应用较低。cpus。
一些理论知识也很有用,例如弄清楚给定的任务集是否可以在给定的调度方法下(有时可能不是),静态优先级和动态优先级调度之间的差异,优先反转问题等。