April 09, 2005

Going Embedded

I got to play around with QNX Neutrino quite a bit lately and have to admit that I am quite impressed by this operating system. QNX Neutrino is based on a real microkernel. The microkernel does little more than thread scheduling and providing a message passing infrastructure. Everything else — device drivers, file systems, networking, and most of the POSIX APIs — is provided by ordinary user processes.
This has some cool implications: first, the whole operating system is scalable to a large degree. You can reduce the whole system down to bare microkernel plus some drivers plus your application (great for control and automation), taking only a few 100 K of memory, up to a fully usable desktop/development system with GUI, multimedia (audio and video players) and a web browser. Mozilla is available, too. The other great advantage of the design is that its quite hard to bring a QNX system down to its knees. Not even faulty device drivers can do much harm to the system, as drivers are fully separated from the kernel. The disadvantage of course, is that such a system is inherently a little bit slower that a "more optimized" architecture. But with today's powerful hardware that's not really an issue. Given the choice between robustness and performance, I'd take robustness any day.
Another great feature of QNX is that you can exchange the standard kernel for an instrumented one. This gives you great insights to what is going on in the system. Of course, all nicely visualized in the development environment, QNX Momentics. I wish I had some of these features on the other operating systems I use.
From a programming perspective, QNX Neutrino is fully POSIX compliant. In other words, the only thing I had to do to make the C++ Portable Components compile and run on it was to add two #include statements to the source code. The complete port (making some changes to the build system, finding out compiler settings, etc.) was done in about a day. Not too bad...
Sure I'm gonna spend some quality time with that OS in the future.

Posted by guenter at April 9, 2005 08:48 PM
Comments