是否可以运行实时软件?


60

我知道它运行Linux,并且有适用于Linux的实时补丁。这些补丁会工作吗?

有人在Raspberry Pi上尝试过另一个实时操作系统吗?

想法是将板用于时间紧迫的调节和控制工作。


2
我认为,唯一无法避免的唯一原因是封闭的GPU解决方案是否会妨碍您。如果您可以决定在执行实时任务时忽略GPU,那么我认为可以进行实时扩展。
克里斯·斯特拉顿

7
整个树莓派系统尚未打开,您无法修改。问题是,在运行实时任务时,不是GPU的部分是否愿意远离,或者是否不可避免地要求总线周期访问ram甚至“注意”来自ARM内核的方式,这会破坏严格的计时目标。
克里斯·斯特拉顿

4
显然,RISCOS非常适合某些实时应用,并且Raspberry Pi端口运行良好。* 8')
Mark Booth

4
RISCOS不是实时操作系统(根据您的Wikipedia链接),它有什么帮助?
拉尔斯·珀特(LarsPötter)2012年

4
CONFIG_PREEMPT_RT补丁已在运行Linux的多个ARM处理器上进行了演示。可能存在一些延迟问题,但是这些问题应该可以以微秒为单位进行测量。
突破

Answers:


16

您可能对在RaspberryPi上运行Xenomai感兴趣。在这里,您可以找到有关如何执行此操作的教程。简而言之,Xenomai是一个创建自定义Linux内核的项目(它们提供了必须应用到内核源的补丁程序),从而使其能够运行实时的另一个内核(Xenomai内核)。这样就可以在多种硬件上运行Xenomai应用程序,而无需为其编写驱动程序(因为Linux在多种硬件上都可以工作)。这允许使用几个可用的不同RT API编写RT用户空间应用程序。


1
我可以使用此工具获得的最大频率是多少?我感兴趣的控制以一个速度直流电机四舍五入1千赫
尼古拉斯·阿里亚斯

19

在Linux内核中,启用PREEMPT_RT将提供有限的延迟和实时API。除了配置外PREEMPT_RT,还需要选择SCHED_FIFOSCHED_RR策略。应用程序需要通过调用适当的API或使用适当的实用程序来设置实时参数。

根据免费电子培训:嵌入式Linux中的实时,PREEMPT_RT是一个将实时功能引入内核的项目。它已完全折叠到2.6.33和3.0内核流中。查看文档,您将找到所有内容。

基本上,有两种方法可以将实时功能引入Linux内核:

  • 在内核内部进行修改,即PREEMPT_RT项目。
  • 与正常的内核上运行实时部分并排侧和正常内核下方,已经出现了三代:RTLinuxRTAI,和Xenomai。(AedosAvio下面提及?)

编辑:


2
欢迎使用Raspberry Pi,答案不错!在RT PREEMPT patch英戈莫尔纳一起使用High Resolution Timers(HRT)支持,允许内核,以实现硬实时性能。目前,它的支持达到3.4.11内核,“好消息”是补丁“正在缩小”,因此似乎大多数补丁都已包含在主流内核源代码中。您可以在此处找到有关如何应用和使用它的出色教程。
Avio 2012年

1
嗯,别忘了在其他选择中引用Adeos来在Linux中提供硬实时支持。
Avio 2012年

2
我必须提到,使PREEMPT_RT与Raspberry Pi内核一起工作不是一件容易的事,只需应用补丁程序就可以产生无法工作的内核。而且,Raspberry Pi内核中有很多新驱动程序,这些驱动程序尚未经过PREEMPT_RT的测试,也没有清除过长的阻塞睡眠。也就是说,这是一项正在进行的工作。
赤裸裸的2012年

2
有任何更新吗?驱动程序现在是否足够稳定,可以使用此内核补丁?我希望为尚未编译内核的人员提供一份实用的教程。
fabb 2013年

@fabb:即使经过很多年,仍然会有一些司机对rt要求产生毛病。您只能通过运行来查找。顺便说一句,最近我看到一些网络故障一度提高了某些用户空间应用程序的优先级,这是出乎意料的。尽管所有这些情况都是高度配置和特定于应用程序的。
minghua 2013年

6

Wyolum将aLaMode(我称为Almond Pi)制成可堆叠的方式安装在Pi的顶部。它具有一个实时时钟,使用aTiny 328,提供GPIO真正的UART /电源,并且可以通过多种方式闪烁。很棒是因为Pi可以在Arduino以实时中断运行的同时完成您想做的任何事情,即Web服务器/数据库。

在此处输入图片说明


1
要运行2个微控制器似乎有点不切实际,但另一方面,如果其他方法不够快,则这可以确保实时操作。
fabb 2013年

1
关于RPi如何与其他µC干净通信而又不减慢其控制环路的暗示?
fabb 2013年

1
是的,但µC必须轮询我猜测的UART,才能不让UART中断推迟控制循环定时器中断。然后,我将在控制循环开始时轮询UART,并确保不会读取太多字节,以免花费太长时间吗?还是那样容易导致UART缓冲区溢出?还是控制环路频率比UART速度高得多,以至于每个环路读取一个字节(如果可用)是否绰绰有余?
fabb 2013年

1
很好的建议。BTW Raspberry Pi Alamode已经是一个双关语。Ala模式是将冰淇淋放在馅饼上的时候。
丹丹

1
真的吗 呵呵。我想知道那是什么意思。现在说得通:)
Piotr Kula

2

我所见过的最好的解决方案是X10i- Heber的Raspberry Pi实时控制板

X10i是一种通用,功能强大且安全的实时控制器,允许通过USB从任何PC系统控制多个输入/输出。Heber现在提供了许多编程语言的支持,以使程序员,发明家和开发人员可以更轻松地从其PC与外界联系。

上面的链接提供了出色而详尽的文档,并且他们尝试使驱动程序与Debian for Pi的最新版本保持最新。


所以您需要从Pi到此的带状连接器?找不到该东西的租用照片,但它看起来确实很大。它列举了一些例子,所以我认为很好。+1
Piotr Kula

我不能说我已经使用过它,但是我希望如此,尽管我似乎记得在演示中使用USB接口的那个人。是的,虽然它很笨重。
Jivings 2013年


1

RODOS是另一个选择。这是由德国航空航天中心以及黑山教授的大学团队和学生共同开发的一个开源项目。

它使用C ++,完全以面向对象的方式编写,并支持ARM7,Atmel AVR,STM32 / Cortex-M3,Xilinx,Raspberry Pi:),...

如果我没有记错的话,它目前已在卫星TET和LoTTo机器中使用。

当然,我更希望在Linux上运行它(可能的话)以兼顾两者-但随后仍然存在实时问题,因为我不确定Linux是否可以提供正确的API。

要获得RODOS,必须向Sergio Montenegro教授或DLR(德国航空航天中心)写一条消息。


1

除了linux,还有实时操作系统。在开源软件中非常流行的是ChibiOS / RT:

是完整,便携式,开放源代码,紧凑且非常快速的RTOS(实时操作系统)

简介如下:http://chibios.org/dokuwiki/doku.php?id=chibios :documents:introduction 。与linux不同,您可能还会喜欢

好吧,应该解释一些设计选择,并有助于使ChibiOS / RT成为独特的设计。本身没有什么新鲜的,但整体很有趣。

或不。如果您喜欢它-在pi上进行实验可能值得在https://github.com/steve-bate/ChibiOS-RPi进行体验:

用于Raspberry PI实验的ChibiOS分支。

作者在以下位置添加了不错的指南

http://www.stevebate.net/chibios-rpi/GettingStarted.html

就rtos而言,就我个人而言,Linux就像携带跨高山设备来满足普通国家的需求一样。您可能只是不需要它。即使是圆周率也可能太大。查看http://forum.arduino.cc/index.php?topic=144715.0,以减轻重量:)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.