posted by James Ingraham on Mon 24th Jul 2006 11:15 UTC

"QNX, 2/3"
QNX Photon microGUI

QNX has its own window manager / GUI called Photon. There is no true "desktop." The Shelf is something like a Dock or Quick Launch, which is of course configurable. The Shelf also includes a Launch button that behaves just like the Windows Start Menu. In fact, the Windows key opens the Launch menu.

Photon has its own API, which means that the vast library of X Windows applications are not supported. However, there is a port of XFree86, which can be run instead of Photon. In addition, an application called XPhoton allows most applications to run in Photon by fooling them into thinking they are running in X. Still, QSS does not directly support GTK+, Qt, or Tcl/Tk. Ports of these toolkits are unsupported and very far behind the latest revisions.Photon Screenshot

QNX has its own browser, called Voyager 2, which uses Mozilla's rendering engine. Mozilla itself and Firefox are both available, though users are at the mercy of QSS for updates. There is a browser widget, so embedding an HTML renderer into an application is trivially easy. Alas, while QNX has a nice set of native widgets, there is not nearly as broad a range as there are for more “standard” systems.

One advantage Photon has as a result of being a standard component of the OS is that virtually everything is configurable in GUI form. Yes, you can edit text files like you would on Linux, but the GUI configuration is quite nice. It is possible to use the system without ever opening a shell.

Fast, lightweight, configurable, and reasonably pretty, Photon is an excellent GUI for embedded applications. It does not have the power and flexibility of say KDE on X, but it can do an awful lot with a lot less resources. My photon directory is about 37MB... and 15MB of that is fonts. This doesn't count Mozilla.

QNX Momentics

QSS is a founding member of the Eclipse consortium, and is almost single handedly responsible for the C Development Tools (CDT). Eclipse is therefore the cornerstone of the Momentics development platform. This is a double edged sword; on the one hand having full support for Eclipse is good. On the other hand, there are virtually no other options. However, it appears that there will be virtually no options besides Eclipse in the entire RTOS market fairly soon. Such is QNX's success with Eclipse that almost all other major RTOS vendors have switched to Eclipse-based tools. This includes arch-rival and RTOS market leader Wind River, as well as highly-regarded tool maker Green Hills.

In addition to Eclipse, Momentics includes Application Builder, a GUI form designer for Photon applications. While the Photon API is all C, Application Builder is a RAD tool in the vein of Microsoft's Visual Basic or Borland's Delphi. In fact, Application Builder was around well before Microsoft or Borland had form designers for C/C++. The separation of the form designer from the IDE is quite normal for Eclipse developers, but might come as a shock for those used to Visual Studio or Borland's tools.

Language and compiler support is an issue. Most real-time embedded systems are programmed in C. Here, QNX is covered by the GCC, plus an extensive set of libraries. The GCC also provides C++ support, and QNX has a full C++ library (including the STL) and a scaled down Embedded C++ library, both supplied by Dinkum. Intel also provides a C/C++ compiler for QNX on x86, which is an additional purchase beyond standard Momentics. Things go downhill from there. Ada (invented for and still widely used for the mission critical applications QNX and other RTOSes target) is available, but not from QSS. Java is supported, but since it relied on IBM's WebSphere it became horribly out of date. They have since switched to PERC from Aonix. (Unfortunately, I can't give you any more information about PERC, since I do not have access to it.) GCJ has not been ported, nor have many of the other GCC tools. The bottom line is that the bulk of any real applications for QNX will have to be done in C/C++.

QNX is not open source, but does offer the source code for many components. They have a number of what they call Technology Development Kits (TDKs) to cover multimedia, embedded 3D graphics (using the OpenGL ES standard), networking, high availability computing, critical process monitoring, and more.

QNX is unique among RTOSes in that it supports self-hosted development. In other words, you can compile a program on the QNX RTOS. For programmers not used to the embedded world, it will come as a shock that no other RTOS can compile so much as a “Hello, world!” program, in any language. However, consider where the RTOSes are intended to run. Is there any reason to compile a program on your TiVo, PDA, cell phone, or car entertainment system? All other commercial RTOSes rely on cross-development. Most vendors' cross-development systems require Windows, though a few support other platforms. In addition to self-hosted development, Momentics also supports cross-development from Windows, Linux, and Solaris. The nice thing about self-hosted development is that it eases the code-test-debug cycle. After the development cycle, a final product based on QNX (e.g. a car navigation system) would not include the development tools.

Table of contents
  1. "QNX, 1/3"
  2. "QNX, 2/3"
  3. "QNX, 3/3"
e p (5)    47 Comment(s)

Technology White Papers

See More