Embedded development - QNX or Linux?
Embedded Real Time Operating System Design: Linux and QNX gained notoriety because of the obvious potential for both as the operating systems and development platforms for Web appliances. Linux had mostly been used as a server OS and QNX mainly as an industrial embedded real time operating system (RTOS). Linux and QNX can be used for developing smaller, more capable portable devices. This paper will brief you the embedded development capabilities of Linux and QNX for real time operating system design.

by Thomas W. Burger. Intel Corp.

In the late 1990s, the Web appliance was touted as the next "big thing," a new device for an emerging market that would create a next generation of consumer IT giants. At the Consumer Electronics Show in Las Vegas, Nevada and the QNX 2000 International Technology Conference in Vancouver, British Columbia many vendors, large and small, showed off multiple visions of the future.

Intel built a Web appliance based on Linux. Microsoft partners made Web Companions based on a scaled down version of the Windows CE operating system. Many others, like 3Com's prototype and the Netpliance iOpener, were based on QNX. At that time Web appliances seemed the likely next step in consumer electronics. Simpler than PCs, they also offered far less functionality. At best they could be considered, as Ken Kalinoski, VP of development at Netpliance called it, a "Rich Client" device that required a dedicated and proprietary server to connect to. The subsequent lack of Web appliances on the shelves of Best Buy and Walmart showed that consumers did not want an appliance that could browse the Web and perform simple email tasks but could not do even simple word processing or store data. Web devices were being sold at less than cost in anticipation of service revenues that never came. Consumers also did not like the idea of being tied to a specific service provider.

Linux and QNX gained notoriety because of the obvious potential for both as the operating systems and development platforms for Web appliances. Linux had mostly been used as a server OS and QNX mainly as an industrial embedded Real Time Operating System (RTOS). To exploit this new market, many developers discovered the capabilities of Linux and QNX in developing smaller, more capable portable devices.

In hindsight, the Web appliance was an idea ahead of technology. There was the software and engineering talent available to produce these devices, but not the hardware and infrastructure to allow the functionality, versatility, and portability required to make the Web appliance the new must-have tech-toy. Advances in cell phone and PDA technology, improvements to digital cameras, lower power requirements, and greater memory capacities, far greater embedded/mobile CPU speeds, and, possibly the most important factor, 802.11b and 802.11g WiFi wireless networking has the Web appliance resurrected as a multifunction device. This combines a computer, organizer, office software suite, cell phone, camera (still and movie), pager, music player, and, of course, email system and Web browser into a single wireless unit that fits in a pocket.

Four years later, an eternity in technology terms, we are on the verge of a new "Next Big Thing." Advances in hardware and in-place wireless and service infrastructure for the already enormous PDA and Internet capable cellphone market has created a great demand for devices that can do more, are more compact and have longer battery life. This has renewed interest in embedded development platforms that can provide the requirements necessary to compete in a market that is worth billions of dollars.

This is where the design similarities end. Linus Torvalds designed Linux to run on a standard PC hardware as a generalized OS using a monolithic kernel architecture. The kernel contains almost all of the functionality of the entire OS. In contrast QNX was designed to be extremely modular and scalable. QNX is a realtime operating system based on a microkernel—small enough to be embedded on a chip but capable of running a workstation or a large networked server system.

Linux for embedded development
Designers of embedded systems have long used the Linux operating system, because of its robustness, relative compactness, versatility, low cost, and open source licensing model. Linux lets the designer leverage a large pool of developers, a rich legacy of source code, and industry-standard Portable Operating System Interface (POSIX) APIs.

The standard Linux kernel does not have realtime capabilities (predictable response times and microsecond latencies, often referred to as deterministic behavior) that many embedded systems demand such as fly-by-wire controls, ABS braking systems, continuous media, and medical devices. But Linux can be used as is in consumer devices that are not subject to deterministic issues. In order to provide for the requirements of embedded devices now being developed, where more predictable speed and timing behaviors are required, several Linux products have emerged.


Subscribers who liked this article also read:
Maximum FPS: three tips for faster code
by Dean Macri, Solutions Enabling Group, Intel Corp. Welcome back t...
An overview of cache
from Intel Corp. The purpose of this paper is two fold. The first p...

If you're interested in this topic, these articles may be helpful:

Intel® VTune™ Performance Analyzer Version 3.0 for Linux*
Identify lines of code that use excessive resources, remove performanc...
Embedded RTOS Consolidation - Finally?
The battle lines are getting clearer these days on the embedded device...
Porting Unix/Linux applications to Mac OS X
Apple Inc. This guide helps developers bring applications written...
Intel® Fortran Compiler 8.1 for Linux
Deliver outstanding performance on single and multiprocessor computers...
Intel® C++ Compiler for Linux
Gain optimal performance from your Linux* applications running on the ...

Related Jobs:

Software Engineer V #761645 - MA - Boxborough - Cisco Systems, Inc.
Description Software technical lead position for next generation car...
Installation Technician I #576 - MO - Monnet - Jack Henry & Associates
Position Summary: PassPort.pro Installation Technician is responsibl...
Solutions Architect/Systems Engineer (Computer Solutions) #4187 - CA - Santa Clara - Arrow Electronics, Inc.
Arrow Electronics, Inc., a Fortune 500 company (ranking: 209), is ...
Firmware Engineer V #E1066-jb - IL - Vernon Hills - Zebra Technologies
Position Title: Firmware Engineer V Position Code: E1066-jb Em...
CDMA Software Engineer #13375 - NJ - Plainfield - Radiant Systems, Inc
OVERVIEW: Work as part of the SW design team to develop and integrate ...
Software Development Engineer in Test #150999 - CA - Mountain View - Microsoft Corporation
If you are interested in shipping great, high quality software to make...
Sr. Software Engineer / Developer #CA2986 - CA - Camarillo - Vitesse Semiconductor Corporation
BSCS; 7 to 10 years experience with embedded software development. Mus...
Software Engineer Staff #04-031 - CA - Fremont - Mattson Technology, Inc.
Job Description : This position develops the next generation software ...
Software Engineer, Platform Subsystems - CA - Mountain View - Ditech Communications Corporation
Ditech Communications improves the sound quality of wireless, wireline...
Software Engineer III #760506 - MA - Boxborough - Cisco Systems, Inc.
Description Design, development, debug and maintain software for the...