Before you design your system

Before you begin designing your system, here are some typical questions you might consider:

Naturally, your particular system will dictate whether all of these (or others) are relevant. But for the purposes of this discussion, we'll assume all these considerations apply.

Processor speed
Although QNX Neutrino is a realtime operating system, this fact alone doesn't necessarily mean that any given application will run quickly. Graphical user interface applications can consume a reasonable amount of CPU and are particularly sensitive to the end-user's perception of speed.

If at all possible, try to prototype the system on either a standard PC (in the case of x86-based designs) or a supported evaluation board (in the case of x86 and ARM designs). This will very quickly give you a "feel" for the speed of a particular processor.

Memory requirements
During initial prototyping, you should plan on more memory on the target than during the final stages. This is because you'll often be running debugging versions of software, which may be larger. Also, you'll want to include diagnostics and utility programs, which again will consume more memory than expected. Once your prototype system is up and running, you can then start thinking about how much memory you "really" need.
Given a choice, you should use peripherals that are listed as supported by QNX Neutrino. This includes such items as disk controllers, network cards, PC-Card controllers, flash memory chips, and graphics controllers. For lists of supported hardware, see the Community area of our website,; for information about third-party products, see the Download area.

Graphics controllers are one of the particularly delicate areas in the design of an embedded system, often because a chip may be very new when it's selected and we may not yet have a driver for it. Also, if you're using a graphics controller in conjunction with an LCD panel, beware that this is perhaps the most complicated setup because of the many registers that must be programmed to make it work.

Note that QNX Software Systems can do custom development work for you; for more information, contact your sales representative. Other consulting houses offer similar services to the QNX community.

In many cases, especially in cost-sensitive designs, you won't want to provide any additional functionality beyond that absolutely required for the project at hand. But since the project is usually a brand new design, you'll need to ensure that the hardware actually works per se and then actually works with the software.

We recommend that you install some form of easy-to-get-at hardware debugging port, so that the software can output diagnostics as it's booting. Generally, something as simple as a latched output that can drive a single LED is sufficient, but an 8- or 16-bit port that drives a number of 7-segment LEDs would be even better. Best of all is a simple serial port, because more meaningful diagnostics can be written by the software and easily captured.

This debug port can be left off for final assembly or a slightly modified "final" version of the board can be created. The cost savings in terms of software development time generally pay for the hardware modifications many times over.

Field upgrades
You can handle the issue of field upgrades in various ways, depending on the nature of your particular target system:
  • a JTAG port
  • socketed Flash/EPROM devices
  • a communications port

You may need such a vehicle for your update software even during your initial software development effort. At this early phase, you'll effectively be performing "field upgrades" as your software is being developed.

The target requirements vary depending on your intended usage. The bare minimum requirements for generic x86 target systems are:

We also support non-BIOS IPL for x86 on specific processors and chipsets, but you should ask us about your exact target configuration.

For requirements for non-x86 targets, see the Board Support Packages that we provide; the target boards that we support represent a cross section of the minimum hardware (in terms of DRAM, CPU/SoC performance, storage space, etc.) that we require. If you're considering another board, ask us to help analyze it.