QNX Real-Time Operating System: Introducing

    It so happened that my activity is related to the QNX real-time operating system (RTOS). For several years now I have been developing both for this OS and some parts of the system itself. I drew attention to the fact that a search on the hub produces a few results for QNX, however, it seems to me that this RTOS may be of interest not only to specialists in embedded and highly reliable systems, but also to the wider public. It's no secret that the RIM BlackBerry PlayBook tablet computer is based on QNX and is popular with us.

    A bit about QNX


    QNX RTOS is not a Linux clone or distribution, or an offshoot of some other UNIX-like system. QNX is a standalone UNIX-like real-time operating system based on a microkernel and messaging. Modern versions of QNX have support for and are certified by POSIX standards. The first version of QNX was released back in 1981. Since then, quite a lot of time has passed and QNX generations succeeded each other: QNX2, QNX4 and, finally, QNX 6 (or QNX Neutrino). The old QNX2 is still in use, although its heyday fell on the 80s of the last century. Reliable and more modern RTOS QNX4 could compete on a desktop with Windows in the mid-90s (in the screenshot below is a screen of the Russified version of QNX4):

    QNX 4.25 (KPDA.00002-01).  File manager.

    In the late 90s, a new QNX branch began to develop - QNX6 or QNX Neutrino. This is a modern version of RTOS, which was released at the very beginning of the 2000s and brought much new to QNX: support for non-x86 hardware architectures (MIPS, PowerPC, ARM, SH4), support for multiprocessing, support for shared libraries, etc. The RTOS subsystems were redesigned, for example, the Photon graphics system and the network subsystem. By the way, now there is the possibility of a fairly simple porting of NetBSD network drivers to QNX6.

    About QNX as such, you can write a lot of good and warm words, which is facilitated by the modular structure, high reliability, ease of development for this OS, an excellent built-in reference guide, and much, much more. But perhaps you should not praise so immediately?

    Perhaps now the most interesting version of QNX for familiarization is QNX6. All new projects are mainly built specifically on QNX6, and the system itself supports many modern and popular technologies. In addition, for QNX4 there are no trial or non-commercial licenses and the system itself is no longer developing, but only supported by the manufacturer (driver updates and bug fixes are released). Further I will write about QNX6, unless expressly stated otherwise.

    QNX Applications


    QNX is primarily an operating system for building embedded systems. But one of the main features of QNX is its modularity and, as a consequence, scalability. Thanks to this, QNX can be used both in miniature controllers and desktop computers. And the transparent QNX network allows you to build productive network clusters.

    Typically, QNX RTOS is used where high system reliability is required: medical equipment, military equipment and weapons, oil and gas and metallurgical industries, etc. At the end of the last decade, QNX began to evolve towards supporting multimedia technologies, which contributed to the emergence of the QNX Car project , as well as the BlackBerry PlayBook tablet PC .

    QNX6 roster


    Some new QNX users (probably not as advanced as the Habrahabr members) may be confused by the composition and components of QNX6. I will try to prevent confusion that may arise in the future. In the ten years that QNX6 is available to users, various QNX delivery options have been used. Now the simplified and most successful (in my opinion) delivery scheme is used, and QNX 6.5.0 consists of the following two main components:
    • QNX Neutrino - includes a microkernel (even a set of microkernels), drivers, utilities, graphical environment, etc. for supported hardware platforms (x86, MIPS, PowerPC, ARM, SH4).
    • QNX SDP (Software Development Platform) - includes the Eclipse-based Momentics IDE, compilers, header files and development libraries, as well as QNX Neutrino.
    It should be noted that QNX SDP is available for Windows and Linux platforms. Only a few Linux distributions are officially supported, but in practice it is not so much required, by and large, only modern Java. I personally develop under QNX in a 64-bit ArchLinux-based tooling system.

    Just in case, I’ll clarify that the operating system is QNX Neutrino, and QNX SDP is a cross-platform development tool for QNX Neutrino.

    QNX Neutrino Software


    In addition to the microkernel and drivers, the QNX6 distribution includes a number of console utilities, both specific to QNX and common to all UNIX-like systems. In addition, there is a graphics subsystem based on Photon 2.0. This is a standalone graphical environment that is not compatible with either Windows or X-Window. However, there is an XPhoton system service that allows you to run graphical applications using the X protocol.

    Other graphical environments are also available for QNX6, which are based on Adobe Flash Lite 3 (available separately) or Qt / Embedded ( version 4.7.1 is currently available in Foundry27 ).

    Among other things QNX supports package management system pkgsrc, in which a large number of open source software is available both in the form of assembled binary packages and in the form of scripts for assembly.

    QNX6 supports the POSIX specifications, which means it shouldn't be too hard to assemble well-written C code in QNX. Which, by the way, I did repeatedly.

    QNX6 License Types


    QNX is a commercial operating system and will require a license to install. There are various types of QNX6 licenses:
    • A commercial license involves the purchase of a QNX6 RTOS from a distributor. This must be done in the case of commercial development of devices or software based on QNX.
    • An academic license is granted to universities for teaching students and teachers.
    • A trial license (for 30 days) allows you to familiarize yourself with the fully functional version of QNX and the development environment in order to assess the feasibility of acquiring an RTOS.
    • Non-commercial license allows you to work with QNX and conduct non-commercial development.
    It is clear that a non-commercial license without a validity period is the most interesting option for exploring QNX6 RTOS.

    Register myQNX account


    Access to many sections of qnx.com and the Foundry27 community requires registration. Registration is simple and does not take much time. To register, go to www.qnx.com and click on the Login link located in the upper right corner. After that, select New member? then the registration form will open at the bottom of the screen. Now it remains to specify an e-mail, enter and confirm a password and click the Create Account button. To complete the registration, you will need to fill out a short form and receive a confirmation code by e-mail, which must be indicated on the form on the next page. This ends the registration, now you can download the QNX distribution.

    Registration of a non-commercial license


    Go to the Non-commercial developers page . At the first step, they offer to download QNX SDP for the tool platform in which it is planned to conduct development. Now you can skip this step and go directly to step two (below). It should be noted that you agree to the license agreement (if you really agree), check that the specified data is correct, and click the Submit button . After that, the license will be sent to the specified email address.

    If the letter with the license key is lost, it can always be viewed in the profile on qnx.com .

    Conclusion


    At first I wanted to write a note about installing QNX, but was so carried away by the introduction that I realized that if I write more about the installation, few will want to read it all to the end. In this regard, probably, I should apologize that the article has so few interesting technical details. On the other hand, I’m probably going to prepare a separate note on installing QNX and not only on x86 PCs. And maybe not just the installation. And if suddenly someone asks to describe some QNX technology or a topic related to QNX, then I will try to meet them.

    Topics for the following topics on QNX


    During the discussion, the following topics were proposed for future topics on QNX:
    • Network in QNX: Qnet.
    • Overview of interprocess communication mechanisms in QNX.
    • QNX architecture. Microkernel.
    • Development Tools for QNX.
    I will slowly prepare and publish. If something else is interesting, then write in a personal.

    Published topics on QNX


    Below is a list of materials that have already been published:

    Also popular now: