Recent years have seen a broadening array of operating system (OS) software options for embedded and real-time system applications. Today, most non-desktop “embedded” systems are based on one of the following alternatives:
- Microsoft Windows, in its three “flavors”: Win98, WinNT, WinCE
- A wide variety of proprietary real-time OSes (RTOSes) — VxWorks, Lynx, QNX, pSOS,… OS9, VRTX, SMX, . . .
- “Just plain DOS” — Microsoft MS-DOS, Datalight ROM-DOS, Caldera DR DOS
- UNIX, in many forms — SCO, BSD, Solaris, . . .
- “Home grown” OSes and RTOSes
The result of all this, is that the number of practical OS/RTOS options — except for low end microcontroller-level embedded systems — is rapidly narrowing.
Today's highly sophisticated and empowered intelligent embedded systems demand the full power of operating systems like Windows 98 or Windows NT. Yet, embedded systems demand a high degree of reliability, and also must generally be tailored to function autonomously; it's not acceptable for embedded systems to behave like desktop PCs. Such appliance-like embedded system operation is not particularly suited to OSes like Windows.
In the past, system developers have embedded DOS successfully, using it primarily as a platform for running the system's specialized application software. But DOS is no longer relevant in the world of large memory spaces, 32 bit processors, complex GUI functions, and Ethernet/internet connectivity. The replacement for DOS — Windows — unfortunately doesn't provide a particularly developer-friendly toolset and is overstuffed with desktop features such as plug-and-play peripheral configuration, that run counter to the predictability requirements of embedded systems.
As an alternative, embedded system developers have made use of a wide variety of real-time operating systems (RTOSes) that provide support for embedded applications and are designed to accommodate the special requirements of embedded systems. A significant problem with RTOSes, however, is that they lack standardization, resulting in a high development investments and serious risks of dependence on the support capabilities of the RTOS vendor and the development capabilities of a single, highly skilled programmer.
Against this background, a new option has emerged: Linux. Linux provides powerful system management facilities, a rich cadre of peripheral interface support, has an excellent reputation for robustness and reliability, is well documented, and — best of all — is available at no charge with complete source code. Although Linux, in its common condition, is relatively large and demanding of system resources, it is also highly modular and can be scaled down to configurations barely larger than DOS (there are a number of single- and dual-floppy Linux distributions).
The open-source aspect of Linux has given rise to an entirely new “market” reality: tens of thousands of developers contribute on an ongoing basis to a continually evolving Linux. Fortunately, mechanisms have been constructed to manage the open-source revision control process quite successfully. Surely, the Linux market is deserving of no less a description than “phenomenon”! Today, dozens of software companies support Linux in a wide range of applications, from desktop workstations, to deeply embedded devices. All share a common kernel, common drivers, common GUIs, common utilities. Yet, all provide their unique application oriented add-ons, development assistance, and support.
The result: there are now effectively just three principal OS choices for most embedded or real-time systems (not counting the deeply embedded microcontroller-level apps):
- Windows (98, NT, CE)
- Proprietary RTOSes (QNX, VxWorks, Lynx, …)
- Linux (several major and many minor distributions)
This article was originally published on LinuxDevices and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.