14

Are there any open source real time operating systems out there? I've heard of real-time Linux, but most implementations seem to really be a proprietary RTOS (that you have to pay for) that run Linux as a process -- much the same way Ardence's RTX real-time system works for Windows.

EDIT: I should clarify that I'm looking for RTOS to work with multi-core x86-family CPUs.

Colin D Bennett
  • 11,294
  • 5
  • 49
  • 66
Kevin
  • 25,207
  • 17
  • 54
  • 57
  • You should also clarify whether a TCP/IP stack is a requirement for you. That would greatly affect the recommendations. – Craig McQueen May 20 '09 at 23:59
  • *Real* hard RT seems impossible because we can't predict x86 latencies: http://stackoverflow.com/questions/14259542/how-can-cas-software-like-ptlsim-achieve-cycle-accurate-simulation-of-x86-hardwa – Ciro Santilli OurBigBook.com Nov 07 '15 at 08:53

12 Answers12

6

FreeRTOS, it provides the underlying kernel. I've used it in some embedded apps and it seems robust. But, it really depends on your application.

http://www.freertos.org/

5

Check out eCos free, open source and real-time operating system. (Supports x86, not sure about multi-core)

RTLinux is also available

Mehrdad Afshari
  • 414,610
  • 91
  • 852
  • 789
3

eCos is free (but you can get paid support). It supports Intel x86 architecture. It supports multi-processor systems. Depending on your timing requirements, I've had not too good experience with real-time Linux systems. Although response time may be good in average, I've seen cases where the worst case over a few days may be 10 or even 100 times as much. I guess this partly depends on the quality of the drivers, partly on the scheduler itself.

But I guess it boils down to whether your system demands hard or soft real-time, what the timing constraints are, what kind of application you need to run. And how streamlined development system you require.

2

There are hard real-time extensions to the Linux kernel. You might want to check some of those out.

Good examples are RTAI and LXRT

RTAI

Erik Funkenbusch
  • 92,674
  • 28
  • 195
  • 291
2

OpenSolaris has real-time capabilities, however you should watch out if you decide to use it for real-time development: pretty much all I/O can cause priority inversions in the kernel (low-priority system worker threads can starve and cause high priority threads to be blocked, e.g. in STREAMS code).

Ivan Tarasov
  • 7,038
  • 5
  • 27
  • 23
2

I have also been using the FreeRTOS operating system that is available either for free under a modified GNU licence, a paid commercial licence version or an expensive safety certified version (SafeRTOS)

From the web-site there is an x86 port as follows

x86

* Supported processor families: Any x86 compatible running in Real mode only, plus a Win32 simulator
* Supported tools: Open Watcom, Borland, Paradigm, plus Visual Studio for the WIN32 simulator

This OS provides the pre-emptive or co-operative task scheduling with queues, semaphores and priority setting for the tasks. It does not provide the sort of I/O or file library functions that come with other larger OS implementations like Linux.

uɐɪ
  • 2,540
  • 1
  • 20
  • 23
1

What are your exact requirements? Perhaps you can use vanilla Linux - it doesn't provide real-time guarantees but might be good enough. Some people find that it's not as bad as the real-time vendors try to make out.

Vanilla Linux DOES have different scheduling policies as well, but not a lot of people know that.

MarkR
  • 62,604
  • 14
  • 116
  • 151
0

Prex is under BSD License.

Eugene Yokota
  • 94,654
  • 45
  • 215
  • 319
0

There is the S.Ha.R.K. Project. It works with x86 CPUs but I don't know if it handles all cores of a CPU.

Andrea Francia
  • 9,737
  • 16
  • 56
  • 70
0

Well this is not Open Source, but did you know that Windows CE is a hard real time operating system and that it does have a x86 port? I don't know however if it can support multi core CPUs. If it is a commercial project, you definitely should consider it.

There is also MicroC/OS-II, which has a x86 port, but as above, I don't know if it supports multi cores. It is free for non-commercial applications.

kgiannakakis
  • 103,016
  • 27
  • 158
  • 194
0

BeRTOS looks quite interesting. But for x86 it supports "emulator only". Not sure why though.

lang2
  • 11,433
  • 18
  • 83
  • 133
0

There are real-time extensions to Linux, as already mentioned by someone else. Have a look at xenomai.org.

I'm not so sure about the multiprocessor issue. What exactly do you want to do on your multiple processors?

robert.berger
  • 13,211
  • 1
  • 16
  • 6