问题标签 [hard-real-time]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
1526 浏览

embedded - 测试实时操作系统的硬度

我有一个嵌入式设备(Technologic TS-7800),它宣传实时功能,但没有提及“硬”或“软”。当我等待制造商的回复时,我认为自己测试系统不会有什么坏处。

有哪些既定程序可以确定特定设备相对于实时/确定性行为(延迟和抖动)的“硬度”?

在大学期间,我可以使用一些非常简洁的硬件(好的示波器和信号发生器),所以我认为我不会在测试设备方面遇到任何问题,只是专业知识。

0 投票
5 回答
13075 浏览

haskell - 将 Haskell 用于大型实时系统:如何(如果?)?

我一直很想知道是否可以将 Haskell 的强大功能应用于嵌入式实时世界,并且在谷歌搜索中找到了Atom包。我假设在复杂的情况下,代码可能具有所有经典的 C 错误 - 崩溃、内存损坏等,然后需要追溯到导致它们的原始 Haskell 代码。所以,这是问题的第一部分:“如果你有使用 Atom 的经验,你是如何处理调试编译 C 代码中的低级错误并在 Haskell 原始代码中修复它们的任务的?”

我搜索了更多关于 Atom 的示例,这篇博文提到了生成的 C 代码 22KLOC(显然没有代码:),包含的示例是一个玩具。thisthis引用有一些更实用的代码,但这就是结束的地方。我在主题中加上“相当大”的原因是,如果你能分享你在 300KLOC+ 范围内使用生成的 C 代码的经验,我最感兴趣。

由于我是 Haskell 新手,显然由于我未知的未知,我可能没有找到其他方法,因此将非常感谢该领域的任何其他自我教育指针 - 这是问题的第二部分 - “在 Haskell 中进行实时开发的其他一些实用方法(如果)是什么?”。如果多核也在图片中,那是一个额外的加分:-)

(关于为此目的使用 Haskell 本身:从我在这篇博客文章中读到的内容,Haskell 中的垃圾收集和惰性使其在调度方面相当不确定,但可能在两年内发生了一些变化。关于 SO的真实世界 Haskell 编程问题是我能找到的最接近这个主题的)

注意:上面的“实时”会更接近于“硬实时”——我很好奇是否可以确保主任务不执行时的暂停时间低于 0.5 毫秒。

0 投票
3 回答
1558 浏览

erlang - 为什么 Erlang 适合软实时应用,而不适合硬实时?

或者它对硬实时也有好处?

0 投票
4 回答
1214 浏览

linux - 具有 preempt_rt 补丁的用户空间硬实时

来自:https ://rt.wiki.kernel.org/articles/f/r/e/Frequently_Asked_Questions_7407.html

实时只对内核有影响;除了更好的实时行为外,用户空间不会注意到差异。

这是否意味着如果我们在用户空间编写应用程序,它们将不会获得硬实时效果?

0 投票
1 回答
11692 浏览

c - 使用 Linux 进行实时编程

我刚刚构建并设置了一个应用了 RT 补丁的 vanilla Linux 内核。一切顺利,我现在可以正确启动到新内核。

让我想知道的是:我有一个用 C 语言编写的模拟器程序,我希望它以硬实时模式执行,新内核应该允许这样做。可能整个模拟器不需要以实时优先级运行,但里面的一些任务需要。

我怎样才能做到这一点?我认为仅仅运行程序是行不通的。

0 投票
12 回答
217047 浏览

real-time - 硬实时、软实时和硬实时之间的区别?

我已经阅读了real-time 不同概念的定义,并且为硬实时系统和软实时系统提供的示例对我来说很有意义。但是,没有真正的解释或可靠的实时系统的例子。根据上面的链接:

坚定:偶尔错过最后期限是可以容忍的,但可能会降低系统的服务质量。结果的有用性在截止日期后为零。

硬实时与硬实时或软实时之间是否有明显的区别,是否有一个很好的例子来说明这种区别?

在评论中,Charles 要求我为新标签提交标签 wiki。标签提供的“公司实时系统”的示例是牛奶供应系统。如果系统在过期时间之后输送牛奶,则认为牛奶“没有用”。人们可以忍受吃没有牛奶的谷物,但体验的质量会下降。

这只是我最初阅读定义时在脑海中形成的想法。我正在寻找一个更好的例子,也许是一个更好的固定实时定义,这将改善我的概念。

0 投票
1 回答
212 浏览

real-time - Firebase 是否适合硬实时计算?

我最近遇到了 Firebase,发现它非常有趣。

在阅读了硬实时和软实时之间的区别之后,我现在很好奇 Firebase 是否适合硬实时计算。

我的直觉是,它只会真正适用于软实时,但我很少遇到(除了它作为 SaaS 的性质)来真正验证这种感觉。

0 投票
2 回答
1524 浏览

linux - 同时具有实时循环和非实时功能的更好方法是什么

抱歉标题不好,我真的不知道如何简短地描述它......

我的场景是,对于机器人应用程序,我们需要一个实时循环来每 1ms 控制一次电机。同时我们可能想做一些没有实时要求的事情,例如路径规划、图像处理、对象识别等。此外,非实时任务的一些结果将被发送到实时电机控制循环来控制机器人。

对于实时部分,我使用带有 RT-Preempt Patch 的 Ubuntu。因此,我可以像这里的示例代码一样在 while 循环中运行实时控制循环。

但是,我不知道非实时部分。以我的拙见,我会在同一进程中新建一个线程并在该线程中运行非实时任务。

由于我对实时编程非常陌生,所以我不知道我的设计会出现什么问题。此外,我想知道是否有设计这种程序的范式?

- -编辑 - -

有关我的应用程序的更多详细信息。

机器人,更具体地说,是机械臂。

对于实时部分,它计算正向运动学、逆向运动学和雅可比。然后使用简单的 PID 控制器计算正确的输出命令。最后,使用 EtherCAT 向每个电机发送电机命令。

对于非实时部分,比如可以从kinect获取PointCloud流,做一些预处理,计算场景中物体的位姿,为机械臂确定一个好的抓握位姿,最后发送每个人的目标电机到实时部分,这样机器人手臂就会真正移动到目标并抓住物体。整个过程可能需要 10 秒左右。但同时实时循环应保持运行并发送适当的力命令或位置命令,以使机器人手臂保持其原始姿势并静止不动。

对于这两个部分之间的通信,在大多数情况下,命令是通过一种新颖的算法从非实时部分生成的,并将其发送到实时部分,以使机械臂运动。然而,有时非实时部分的算法需要知道,例如,末端执行器的当前姿势。因此,非实时部分需要从位于实时部分的正向运动学中获取信息。