What is the QNX Software Development Platform?

This chapter includes:

Welcome to the QNX Software Development Platform

Thank you for choosing the QNX Software Development Platform. It includes everything you need to build and maintain your QNX Neutrino-based embedded system:

QNX Momentics Tool Suite
A comprehensive set of integrated development tools, lots of in-depth documentation, as well as powerful diagnostics and optimization tools for your system once it's up and running on your target.
QNX Neutrino RTOS
Trusted and proven in countless embedded systems, QNX Neutrino has a growing reputation as the world's most reliable RTOS.

We now invite you to explore the advanced tools that the QNX Momentics Tool Suite adds to QNX Neutrino.

Choice, tools, source, and help

As a complete package designed for embedded systems developers, the QNX Software Development Platform gives you everything you need at every stage of your product-development cycle:

Choice of host (Windows, Linux, QNX Neutrino), choice of target (ARM, MIPS, PowerPC, SH-4, XScale, x86), and choice of development language (C, C++, Embedded C++, Java).
Code development, editors, source control, compilers, libraries, profilers, analyzers, optimizers, etc.
Documentation, forums, technical support programs, etc.

Full source code for numerous startup programs, IPLs, device drivers, etc. is available from our website.

You can install QNX SDP on a QNX Neutrino system for self-hosted development, or you can install it on a Windows or Linux development host and install QNX Neutrino on a target system:

Host and target machines

Development host and target system.

The development host runs the QNX Momentics Tool Suite; the target system runs the QNX Neutrino RTOS itself plus all the programs you develop:

The QNX Momentics Tools Suite and the QNX Neutrino RTOS

QNX Momentics is the development environment on your host for the QNX Neutrino RTOS running on your target.

QNX Momentics at a glance

If the QNX Neutrino RTOS is the “engine” that will empower the embedded system you're developing, then QNX Momentics is the “factory” where you modify your engine as well as build, test, and finish your vehicles.

Here are the main parts of the QNX Momentics Tool Suite:

Integrated Development Environment
This is your toolbox on Linux and Windows. The IDE's task-oriented interface helps you quickly set up your project, choose your programming language, choose a target processor, compile your code, connect to your target, transfer your application to your target, run it, debug it, profile it, and fine-tune it.
Command-line tools
If you aren't using the IDE, you can use command-line tools to develop applications. For example, you can use qcc to compile and link, and mkifs to create an OS image.
ANSI C, POSIX, Dinkum C++ (full and embedded), GNU C++ (x86 only), graphics, widgets, compression, etc.
How-to guides, references, context-sensitive help, and technotes. See the chapter How to Get Help to help you find your way through the documentation.

Additional components

Once you've installed the QNX Software Development Platform, you can download these components from our website (http://www.qnx.com/) after logging into your myQNX account:

Board Support Packages
Software and step-by-step instructions to help you get Neutrino and your applications running on specific boards.
Driver Development Kits
Full source and detailed documentation to help you write your own drivers for various devices: audio, graphics, input (mice, keyboards, etc.), and USB.

Note that the QNX Software Development Platform includes the DDK documentation.

QNX Aviage middleware

The QNX Aviage brand encompasses a portfolio of middleware products that help you create consumer-grade audio, video, and graphical products in record time. QNX Aviage software products accelerate your innovation by offering the following:

QNX Aviage Acoustic Processing
A sophisticated acoustic hands-free and speech-enhancement solution designed specifically for challenging automotive environments. Unlike traditional voice-quality enhancement solutions, it eliminates the need for dedicated hardware, lowers production costs, and increases design flexibility.
QNX Aviage HMI Suite
Allows embedded developers to implement easy-to-use and compelling user interfaces in Adobe Flash, thereby eliminating the lengthy process of coding HMIs with graphical APIs or cumbersome tool kits.
QNX Aviage Multimedia Suite
Configurable, fully featured media jukebox with supporting multimedia software for building next-generation digital infotainment platforms. Includes powerful APIs for quickly building multi-modal HMIs. Options include iPod support, Microsoft PlaysForSure support (with DRM), as well as an array of software codecs.

For more information about QNX Aviage middleware, contact your sales representative.

Getting started before you have your target

Assuming you plan to develop a Neutrino-based embedded system of some kind (e.g. a vehicle telematics system, a router, a medical imaging device), you can start developing your application, even before you have your target hardware.

And if you haven't yet decided on the CPU family for your target (e.g. PowerPC, XScale), you can still begin developing your application. As a rule, with QNX Momentics you write your application code once, then compile it however many times you need for whatever supported targets you're using. As you'll see if you plan to use the IDE, you can build the very same project for any of our supported processors with just a couple of mouse clicks.

If you're developing on a self-hosted Neutrino system, you can run your application directly on your development machine.

Consider the following scenarios:

x86 (PC) target

If your final target hardware will be a PC in some shape or form (e.g. a PC/104 SBC module), you can simply connect your host to any spare PC and use that as your temporary target. You should expect to make very few changes (if any) in your application when the time comes to move to your final target.

And if you don't happen to have a spare PC, you could use a virtual machine — products such as VMware Workstation and VMware Player (http://www.vmware.com), and Microsoft VirtualPC 2007 can emulate a separate, complete hardware environment right on your desktop.

Once you've set up a virtual machine (VM) on your host, you can then use it as your target — you can run, test, and debug your Neutrino applications on the VM as if it were an actual machine connected to your host.

Note: Virtual machines don't necessarily support hard realtime.

x86 non-BIOS target

In this case, the target computer (e.g. an LX800) isn't a PC. It doesn't have a BIOS, so it won't boot and load Neutrino in the same way as a PC. In order to run Neutrino on such a target, you need an appropriate BSP for your particular hardware, including an IPL that could set up the processor and load Neutrino properly.

Note: We're continually adding new BSPs to our extensive selection; for a list, see the Products area of our website, http://www.qnx.com. If you don't see a BSP for your target hardware, contact us.

You can develop your application without target hardware, because much of your code will be hardware-independent. For device drivers and other hardware-specific areas of your system, you may be able to use a virtual platform tool that accurately emulates your specific embedded system hardware.

For instance, Virtio (http://www.virtio.com) makes virtual platforms that emulate various processors and peripherals, right down to the CPU's instruction set. You can download a free time-limited evaluation copy from the vendor's website.

Any supported CPU family

Whatever your target hardware, you can still go a long way down your development path using QNX Momentics right now. Develop all your application-level components first, leaving device drivers and other hardware-specific details until you have your target hardware.

As mentioned earlier, you might want to consider Virtio if you need a functionally accurate virtual prototype of your embedded platform before you have the actual hardware itself.

Platform-related issues

Whatever the specific CPU family, your application code will, in most cases, run unchanged when you go to your final target. But you may need to be aware of a few platform-related issues (e.g. endian differences, CPU speeds, I/O addressing, alignment of data structures, memory limitations, synchronization on multicore vs uniprocessor systems, etc.).

Fortunately, QNX Momentics includes several header files and convenience functions that will help you anticipate and easily handle such problems.

Note: For more information on these and other platform-related issues, see Freedom from Hardware and Platform Dependencies in the Neutrino Programmer's Guide.

A word about licensing

There are several QNX Development License streams that govern how the QNX Software Development Platform can be used in different situations. The key on your license certificate will cause the appropriate license agreement to be displayed when you install QNX SDP; that development license governs your use of the product.

Once you've installed QNX SDP, you'll find a copy of all the license agreements in base_dir/install/qnxsdp/6.5.0, where base_dir is where you installed SDP.

For more information about licensing, visit the Licensing area of http://www.qnx.com, where you'll find details on our licensing model, types of licenses, etc., or email .