views:

1346

answers:

9

I've been involved in embedded operating systems of one flavor or another, and have generally had to work with whatever the legacy system had. Now I have the chance to start from scratch on a new embedded project.

The primary constraints on the system are:

  • It needs a web-based interface.
  • Inputs are required to be processed in real-time (so a true RTOS is needed).
  • The memory available is 32MB of RAM and FLASH.

The operating systems that the team has used previously are VxWorks, ThreadX, uCos, pSOS, and Windows CE.

Does anyone have a comparison or trade study regarding operating system choice?

Are there any other operating systems that we should consider? (We've had eCos and RT-Linux suggested).

Edit - Thanks for all the responses to date. A pity I can't flag all as "accepted".

+1  A: 

I have been pretty happy with Windows CE, although it is 'heavier'.

Geoffrey Chetwood
I suppose that depends on what you're comparing it against. :-) I need to play with the configuration of CE a little more before I can make a call.
Peter K.
@Peter K: I personally feel the 'extra weight' is worth it. But you will find many linux advocates that will scream that Linux can be shrunken down much further, which might be true. I don't think that opinion is of much weight in what I do though.
Geoffrey Chetwood
Back@U: Thanks again for the comments. We certainly have CE still in mind.
Peter K.
+2  A: 

I worked with QNX many years ago, and have nothing but great things to say about it. Even back then, QNX 4 (which is positively chunky compared to the Neutrino microkernel) was perfectly suited for low memory situations (though 32MB is oodles compared to the 1-2MB that we had to play with), and while I didn't explicitly play with any web-based stuff, I know Apache was available.

moobaa
Good point: I'd forgotten a team member had mentioned QNX. Thanks for the recommendation.
Peter K.
Is QNX Neutrino still for sale?
Warren P
"QNX® Neutrino® RTOS 6.5 was released in July 2010" -- http://www.qnx.com/products/neutrino-rtos/neutrino-rtos.html"QNX Neutrino x86 Runtime Kit - Contact QNX sales for licensing options" -- http://www.qnx.com/company/howtobuy.html
moobaa
+3  A: 

It all depends on how much time was allocated for your team has to learn a "new" RTOS.
Are there any reasons you don't want to use something that people already have experience with?

I have plenty of experience with vxWorks and I like it, but disregard my opinion as I work for WindRiver.

uC/OS II has the advantage of being fully documented (as in the source code is actually explained) in Labrosse's Book. Don't know about Web Support though.

I know pSos is no longer available.

You can also take a look at this list of RTOSes

Benoit
The team's experience is a high priority discriminator as far as the OS selection is concerned. I'm primarily fishing to see if there's a new twist on something that the team already has experience with. We are only a small team, and may not cover all the bases.
Peter K.
Labrosse himself has answered emailed questions about uC/OS and its companion products for my company, and his people have been friendly to work with. I've put uC/OS in several consulting projects over the years and wouldn't keep doing it if it it wasn't rock solid.
RBerteig
+2  A: 

I purchased some development hardware from netburner It has been very easy to work with and very well documented. It is an RTOS running uCLinux. The company is great to work with.

mcotton
Thanks! We hadn't considered uCLinux.
Peter K.
+2  A: 

It might be a wise decision to select an OS that your team is experienced with. However I would like to promote two good open source options:

Both have a lot of features and drivers for a wide variety of architectures. You haven't mentioned what architecture you will be using. They provide POSIX layers which is nice if you want to stay as portable as possible.

Also the license for both eCos and RTEMS is GPL but with an exception so that the executable that is produced by linking against the kernel is not covered by GPL.

The communities are very active and there are companies which provide commercial support and development.

kris
Thanks! Both POSIX and the licensing issue are of weight for our decision (though I didn't mention them in the original question).
Peter K.
+1  A: 

We've been very happy with the Keil RTX system....light and fast and meets all of our tight real time constraints. It also has some nice debugging features built in to monitor stack overflow, etc.

Thanks, I've not heard of that one. A little googling shows it's interesting.
Peter K.
Keil RTX is now owned by ARM Semiconductor, and the RTX toolkit plus their uVision IDE and JTAG tools are a very very nice technology for classic ARM cores, and the newer ARM cortex M3 cores.
Warren P
+2  A: 

I think it would be wise to evaluate carefully what you mean by "RTOS". I have worked for years at a large company that builds high-performance embedded systems, and they refer to them as "real-time", although that's not what they really are. They are low-latency and have deterministic schedulers, and 9 times out of 10, that's what people are really after when they say RTOS.

True real-time requires hardware support and is likely not what you really mean. If all you want is low latency and deterministic scheduling (again, I think this is what people mean 90% of the time when they say "real-time"), then any Linux distribution would work just fine for you. You could probably even get by with Windows (I'm not sure how you control the Windows scheduler though...).

Again, just be careful what you mean by "Real-time".

Ben Collins
Good points! My system is "soft" real-time, not "hard" real-time.
Peter K.
+1  A: 

Posting to agree with Ben Collins -- your really need to determine if you have a soft real-time requirement (primarily for human interaction) or hard real-time requirement (for interfacing with timing-sensitive devices).

Toybuilder
Yup! Thanks for the feedback.
Peter K.
A: 

Soft can also mean that you can tolerate some hiccups every once in a while.

What is the reliability requirements? My experience with more general-purpose operating systems like Linux in embedded is that they tend to experience random hiccups due to their smart average-case optimizations that try to avoid starvation and similar for individual tasks.

jakobengblom2