7

在工作中,我们正在讨论一个新平台的设计,其中一位高层管理人员说它需要运行我们当前的代码库(Linux 上的 C),但需要实时,因为它需要在不到一秒的时间内响应各种输入. 我指出:

  1. 这并不意味着它需要“实时”,只是它需要更快的时钟和更精简的中断处理
  2. 要考虑的关键点之一是正在使用的操作系统。他们想坚持使用嵌入式 Linux,我指出我们需要一个 RTOS。由于内核/用户空间内存分裂,使用 Linux 将阻止“实时”,因此 I/O 是通过文件和套接字完成的,这会引入延迟
  3. 我们真正需要确定的是它是否需要确定性(例如,需要在 90% 的时间内在 <200 毫秒内响应输入)。

在我看来,如果第 3 点是真的,那么它需要是一个实时系统,然后第 2 点是最大的考虑因素。

我有信心回答,但后来我在想……别人怎么看?我是在正确的轨道上还是我错过了什么?

“实时”系统和“确定性”系统之间有什么区别吗?除了 RTC 和 RTOS,我还缺少执行真正实时系统所需的任何主要内容吗?

期待一些伟大的回应!

编辑:

到目前为止得到了一些很好的回应,看起来对我的系统和要求有点好奇,所以我会为感兴趣的人添加一些注释:

  1. 我的公司卖几千的单位,所以我不想在价格上过分杀戮
  2. 通常我们出售主处理器板和独立显示器。还有其他 CAN 设备的附加网络。
  3. 该板(当前)运行设备,还充当网络服务器,将基本 XML 文档发送到最终用户的显示器

管理人员希望“快速”(<1s)更新显示器的要求出现在这里,但真正的限制来自于可以通过 CAN 连接的设备。这些设备通常是电机控制设备,其要求包括“必须在 200 毫秒内做出响应”。

4

5 回答 5

10

您需要区分:

  • 硬实时:对响应时间有绝对限制,不得违反(算作故障) - 例如,当您控制机器人电机或医疗设备时,如果未能按时完成可能是灾难性的
  • 软实时大部分时间要求快速响应(可能 99.99%+),但如果平均响应速度非常快,偶尔违反时间限制是可以接受的。例如,这适用于在计算机游戏中执行实时动画 - 错过最后期限可能会导致跳帧,但不会从根本上破坏游戏体验

只要您有足够的硬件并充分注意识别和优化瓶颈,大多数系统都可以轻松实现软实时。通过一些调整,甚至可以在具有非确定性暂停的系统中实现(例如 Java 中的垃圾收集)。

硬实时需要专门的操作系统支持(以保证调度)和确定性算法(这样一旦调度,任务就可以保证在最后期限内完成)。做到这一点很难,需要对整个硬件/软件堆栈进行仔细设计。

重要的是要注意大多数商业应用程序都不需要:特别是我认为以 <1 秒的响应时间为目标与大多数人认为的“实时”要求相去甚远。话虽如此,如果在需求中明确指定了响应时间,那么您可以将其视为具有相当宽松的截止日期的软实时。

于 2012-09-21T03:02:57.540 回答
5

real-time标签的定义:

当活动完成的及时性是功能要求和正确性条件而不仅仅是性能指标时,任务就是实时的。实时系统是其中一些(尽管可能不是全部)任务是实时任务的系统。

换句话说,如果您的系统响应太慢而无法赶上最后期限,就会发生不好的事情,那么系统需要是实时的,您将需要一个 RTOS。

实时系统不需要是确定性的:如果响应时间在 50ms 和 150ms 之间随机变化,但响应时间从不超过 150ms,那么系统是非确定性的,但它仍然是实时的。

于 2012-09-21T03:02:26.290 回答
2

也许您可以尝试使用RTLinux,或者RTAI如果您有足够的时间进行试验。这样,您可以将非实时应用程序保留在 linux 上,但这些realtime应用程序将被移动到 RTOS 部分。在这种情况下,您将(可能)实现 <1 秒的响应时间。

优点是——

  • 大量代码可以重用
  • 您可以手动划分实时和非实时任务,并尝试按照您的意愿实现 <1s 的响应。
  • 我认为迁移时间不会很长,因为大部分代码都在 linux 中

顺便说一句,请注意您可能需要在实时部分运行的硬件驱动程序。

以下 RTLinux 架构可能会帮助您了解这如何成为可能。

实时Linux系统

于 2012-09-21T16:15:58.713 回答
1

听起来您在使用 RTOS 时走在了正确的轨道上。不同的 RTOS 优先考虑不同的事情,无论是健壮性还是速度等等。您将需要弄清楚您是否需要硬 RTOS 或软 RTOS,并根据您的需要,确定您的调度程序将如何被驱动。可以肯定的是,使用常规操作系统和 RTOS 之间存在严重差异。

注意:也许对于最真实的实时系统,您将需要基于硬事件的解决方案,以便您可以保证您的流程也会在您期望的时候执行。

于 2012-09-21T03:15:17.303 回答
0

RTOS 或实时操作系统是为嵌入式应用程序设计的。在处理关键应用程序的多任务系统中,操作系统必须 1. 内存分配具有确定性,2. 应该允许 CPU 时间分配给不同的线程、任务、进程,3. 内核必须是非抢占式的,这意味着上下文切换必须仅在任务执行结束。等等所以普通的windows或Linux无法使用。嵌入式系统中的 RTOS 示例:卫星、一级方程式赛车、CAR 导航系统。

嵌入式系统:旨在执行单个或几个专用功能的系统。带有 RTOS 的系统:也可以是嵌入式系统,但 RTOS 自然会用于需要执行许多功能的实时系统。实时系统:可以在确定/预测的时间内提供输出的系统。这并不意味着实时系统更快。两者之间的区别: 1.普通嵌入式系统不是实时系统 2.带有 RTOS 的系统是实时系统。

于 2018-07-27T05:47:38.163 回答