Home‎ > ‎

RTOS

There is a list of real-time operating systems at Wikipedia.  I'll keep notes of any I look at here with a view to using with the Bifferboard.

I decided to exclude any RTOS which are GPL.  This is because some users might want to use derived works in commercial products, and GPL is usually prohibitive for that, so these are all either GPL with an exception that allows linking to closed-source, or some kind of BSD variant.


No bare-metal x86 support

The following projects don't create 'true' x86 binaries that can be run under Qemu, Bochs etc, their x86 ports seem to work a little like user-mode Linux, so less useful for the Bifferboard, but worth a mention because a port may not be too much work (it's the same compiler/endianess after all).

BeRTOS

Seems to be more for lower power CPUs, e.g. AVR.  A network stack seems to be missing.

ChibiOS/RT

Now we have networking.  Stack switching code in gas assembler.  Nice choice of uIP or lwIP as network stack - double the chance of getting it working!  There seem a fair number of heavier-weight platforms to chose from so porting to x86 mightn't be as hard as for BeRTOS.

NuttX RTOS

Gets a mention only because it looks very complete, and although it has only a user-mode port to x86 a-la ChibiOS/BeRTOS, the porting documentation is extensive.

FreeRTOS (the odd one out)

Looked promising at first glance, however only supports 'real-mode x86'.  I'm unsure if that means you can have 'flat' 32-bit code without MMU, or if it means just 8086 instructions, segmentation etc...  Should run on the Bifferboard if you switch back to real-mode, but why would anyone bother?  However, the number of other existing ports would suggest a port to 386 will be straightforward.


No network stack

Although lack of networking is a nuisance for the Bifferboard, I had to include these, since they're both cool projects.

POK

Supports execution under Qemu (multiboot header), which is great. It seems you get memory management, interrupts.

Prex

If you want a kernel for x86 (or other supported platforms), and you don't care about networking support, this has to be one of the slickest I've seen.  Very easy to understand code, very compact, and documentation is out of this world.  It runs under Qemu or Bochs.  It has to be one of the easiest OSs to get started with because ./configure and make on IA32 give you an IA32 OS image in less than a minute.  Sweet.


Heavy-hitters

These seem to have been around for a while, have both mature x86 ports and networking stacks, but may take some time to get up and running

eCos

It's a beast - I've played around with it once before, and configuration is a bit of a bitch.  If you're familiar with it, it would be a good starting point, however the install documentation for the development environment suggests, first of all, gcc 2.95, and then some patches on top of it.  That may not be your ideal way of generating applications.

RTEMS

Comes across as somewhat bloated.  Always a bit of a worry when people introduce abbreviations like BSP (Board Specific Port?) without explaining them, and when there's no 'download' link readily available from the homepage, and you have to spend more than 15 seconds looking for a source tarball.  Anyhow, notwithstanding, RTEMS is a reasonably complete x86 operating system with network stack and interrupts.  Couldn't quite find the memory management stuff but no doubt it's there.  I can see some study is required to grok the source layout.


The new kid on the block

Embox   HOT!

This is a recent addition to the wikipedia RTOS line-up but looks very promising.  It's a commercial concern that's now gone open-source, and promises preemptive multi-tasking and memory management.  Many of the x86 files were modified just at the end of December 2010, so I won't expect rock-solid stability, but it's progressing rapidly, and one to watch.