问题标签 [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.
embedded - 测试实时操作系统的硬度
我有一个嵌入式设备(Technologic TS-7800),它宣传实时功能,但没有提及“硬”或“软”。当我等待制造商的回复时,我认为自己测试系统不会有什么坏处。
有哪些既定程序可以确定特定设备相对于实时/确定性行为(延迟和抖动)的“硬度”?
在大学期间,我可以使用一些非常简洁的硬件(好的示波器和信号发生器),所以我认为我不会在测试设备方面遇到任何问题,只是专业知识。
haskell - 将 Haskell 用于大型实时系统:如何(如果?)?
我一直很想知道是否可以将 Haskell 的强大功能应用于嵌入式实时世界,并且在谷歌搜索中找到了Atom包。我假设在复杂的情况下,代码可能具有所有经典的 C 错误 - 崩溃、内存损坏等,然后需要追溯到导致它们的原始 Haskell 代码。所以,这是问题的第一部分:“如果你有使用 Atom 的经验,你是如何处理调试编译 C 代码中的低级错误并在 Haskell 原始代码中修复它们的任务的?”
我搜索了更多关于 Atom 的示例,这篇博文提到了生成的 C 代码 22KLOC(显然没有代码:),包含的示例是一个玩具。this和this引用有一些更实用的代码,但这就是结束的地方。我在主题中加上“相当大”的原因是,如果你能分享你在 300KLOC+ 范围内使用生成的 C 代码的经验,我最感兴趣。
由于我是 Haskell 新手,显然由于我未知的未知,我可能没有找到其他方法,因此将非常感谢该领域的任何其他自我教育指针 - 这是问题的第二部分 - “在 Haskell 中进行实时开发的其他一些实用方法(如果)是什么?”。如果多核也在图片中,那是一个额外的加分:-)
(关于为此目的使用 Haskell 本身:从我在这篇博客文章中读到的内容,Haskell 中的垃圾收集和惰性使其在调度方面相当不确定,但可能在两年内发生了一些变化。关于 SO的真实世界 Haskell 编程问题是我能找到的最接近这个主题的)
注意:上面的“实时”会更接近于“硬实时”——我很好奇是否可以确保主任务不执行时的暂停时间低于 0.5 毫秒。
erlang - 为什么 Erlang 适合软实时应用,而不适合硬实时?
或者它对硬实时也有好处?
linux - 具有 preempt_rt 补丁的用户空间硬实时
来自:https ://rt.wiki.kernel.org/articles/f/r/e/Frequently_Asked_Questions_7407.html
实时只对内核有影响;除了更好的实时行为外,用户空间不会注意到差异。
这是否意味着如果我们在用户空间编写应用程序,它们将不会获得硬实时效果?
c - 使用 Linux 进行实时编程
我刚刚构建并设置了一个应用了 RT 补丁的 vanilla Linux 内核。一切顺利,我现在可以正确启动到新内核。
让我想知道的是:我有一个用 C 语言编写的模拟器程序,我希望它以硬实时模式执行,新内核应该允许这样做。可能整个模拟器不需要以实时优先级运行,但里面的一些任务需要。
我怎样才能做到这一点?我认为仅仅运行程序是行不通的。
real-time - 硬实时、软实时和硬实时之间的区别?
我已经阅读了real-time 不同概念的定义,并且为硬实时系统和软实时系统提供的示例对我来说很有意义。但是,没有真正的解释或可靠的实时系统的例子。根据上面的链接:
坚定:偶尔错过最后期限是可以容忍的,但可能会降低系统的服务质量。结果的有用性在截止日期后为零。
硬实时与硬实时或软实时之间是否有明显的区别,是否有一个很好的例子来说明这种区别?
在评论中,Charles 要求我为新标签提交标签 wiki。我为公司实时标签提供的“公司实时系统”的示例是牛奶供应系统。如果系统在过期时间之后输送牛奶,则认为牛奶“没有用”。人们可以忍受吃没有牛奶的谷物,但体验的质量会下降。
这只是我最初阅读定义时在脑海中形成的想法。我正在寻找一个更好的例子,也许是一个更好的固定实时定义,这将改善我的概念。
real-time - Firebase 是否适合硬实时计算?
我最近遇到了 Firebase,发现它非常有趣。
在阅读了硬实时和软实时之间的区别之后,我现在很好奇 Firebase 是否适合硬实时计算。
我的直觉是,它只会真正适用于软实时,但我很少遇到(除了它作为 SaaS 的性质)来真正验证这种感觉。
linux - 同时具有实时循环和非实时功能的更好方法是什么
抱歉标题不好,我真的不知道如何简短地描述它......
我的场景是,对于机器人应用程序,我们需要一个实时循环来每 1ms 控制一次电机。同时我们可能想做一些没有实时要求的事情,例如路径规划、图像处理、对象识别等。此外,非实时任务的一些结果将被发送到实时电机控制循环来控制机器人。
对于实时部分,我使用带有 RT-Preempt Patch 的 Ubuntu。因此,我可以像这里的示例代码一样在 while 循环中运行实时控制循环。
但是,我不知道非实时部分。以我的拙见,我会在同一进程中新建一个线程并在该线程中运行非实时任务。
由于我对实时编程非常陌生,所以我不知道我的设计会出现什么问题。此外,我想知道是否有设计这种程序的范式?
- -编辑 - -
有关我的应用程序的更多详细信息。
机器人,更具体地说,是机械臂。
对于实时部分,它计算正向运动学、逆向运动学和雅可比。然后使用简单的 PID 控制器计算正确的输出命令。最后,使用 EtherCAT 向每个电机发送电机命令。
对于非实时部分,比如可以从kinect获取PointCloud流,做一些预处理,计算场景中物体的位姿,为机械臂确定一个好的抓握位姿,最后发送每个人的目标电机到实时部分,这样机器人手臂就会真正移动到目标并抓住物体。整个过程可能需要 10 秒左右。但同时实时循环应保持运行并发送适当的力命令或位置命令,以使机器人手臂保持其原始姿势并静止不动。
对于这两个部分之间的通信,在大多数情况下,命令是通过一种新颖的算法从非实时部分生成的,并将其发送到实时部分,以使机械臂运动。然而,有时非实时部分的算法需要知道,例如,末端执行器的当前姿势。因此,非实时部分需要从位于实时部分的正向运动学中获取信息。