需要帮助选择实时操作系统和硬件

Need help to choose real-time OS and Hardware

本文关键字:硬件 实时操作系统 选择 帮助      更新时间:2023-10-16

我听说Windows/Linux操作系统的机器不是实时的。我读过这篇文章。它列出了WindowsCE是RTOS之一。这让我有点困惑,因为我一直认为WindowsCE是为移动或嵌入式设备准备的。

我需要一个全天候运行的实时应用程序,并处理从每个快速移动对象到数据库的各种传感器的信号,并通过运行几个机器学习算法进行监控。

什么是适合这种应用程序的实时硬件和操作系统?开发环境将是MFC或Qt c++。我真的需要有经验的开发者的意见。由于

QNX过去对我很有帮助。我应该提醒你,它只是用于培训目的(实时工业过程控制),我已经用这个操作系统实现了实时控制程序,但我从未真正部署过一个。

实时系统的第一条规则是指定实时约束,例如:
  1. 系统必须能够每分钟处理多达600个信号;或
  2. 系统在每个信号上花费的时间不得超过1/10秒。

区别很微妙,但它们是不同的约束。

请记住,绝对没有办法来决定任何硬件/操作系统/库组合是否对你足够好,除非你指定了这些约束


你认为QNX可能是合适的吗?与具有高优先级设置的Windows/Linux系统相比,它的优势是什么?

如果您查看许多POSIX系统调用的QNX文档,您将注意到它们在性能上指定了额外的约束,这些约束可能是保证实时约束所必需的。操作系统是专门为满足这些限制而设计的。你不会在一个不是官方RTOS的系统上得到这个。如果您打算编写实时软件,我建议您购买一本有关该主题的好书。考虑到这个话题非常敏感,有相当多的文献。

找一本关于实时系统设计的好书,了解该问什么问题,然后阅读你将使用的每个产品的技术文档,看看它是否符合你的约束条件。在像Qt这样的软件库中观察的例子是它们分配内存的时候。如果没有在每个类接口中记录这一点,就没有办法保证满足您的约束,因为存在隐藏的算法复杂性。


开发环境为MFC或Qt c++。

我认为Qt在QNX上编译,但我不确定Qt是否提供了与您的实时约束相匹配所需的保证。抽象太多内容的库是有风险的,因为很难确定它们是否满足您的需求。隐藏内存管理经常是有问题的,但是你也应该问一些其他的问题。


在我看来,人们说实时系统==嵌入式系统。我错了吗?

实时系统肯定不等于"嵌入式系统",尽管许多嵌入式系统都有实时限制。

你需要多实时?
记住实时是关于响应,而不是速度。事实上,大多数RTOS的平均速度比一般操作系统要慢。

您是否需要保证一定的平均事务数/秒,或者您是否需要始终在事件的n秒内响应?

您是否有自定义硬件或您是否依赖于以太网,USB等输入?RTOS上有硬件驱动程序吗?还是你必须自己写?

Windows和linux是可能的RTOS。Windows嵌入式允许您关闭服务,以提供更可靠的响应速度,并且Linux的实时内核和实时附加组件提供几乎相同的实时性能,如VxWorks。

这也取决于你需要处理多少任务。真正的RTOS(如VxWorks)的很多复杂性在于它们可以同时控制许多任务,同时允许每个任务有保证的延迟和CPU共享——这对火星探测器很重要,但对单个数据收集PC来说就不重要了