Embedded operating systems rule the world
- By Barrie Sosinsky, Kay Tanielu
Embedded systems use dedicated computers or microprocessors to control or monitor a process. A simple example is when an application program inserts embedded printing commands into a document to control formatting and printing in a printer. A lower level programming language may be embedded into a higher level language to provide more capabilities. Microchips (integrated circuits), consisting of connected circuit transistors and resistors, are also embedded into devices that can "talk" to another device. Television remote controls and cellular phones are good examples of devices that use an embedded operating system.
Embedded systems technology has been around for many years in everything from automobiles (a major consumer of embedded OSs), to copiers, washing machines and telecommunications gear; the technology is both pervasive and sophisticated. However, the market's size and the lucrative nature of embedded systems are not widely appreciated.
The market for embedded systems dwarfs the market for personal computers and has a much higher growth rate. The World Semiconductor Trade Statistics blue book estimates that there are 5 billion embedded microprocessors in use, resulting in a 94% share of the world microprocessor market. PC processors represent only a 6% market share.
Thus, we are now seeing companies like Microsoft hawking Windows CE and Windows NT embedded systems, hoping to leverage the millions of programmers who know the Windows API calls in this very vibrant marketplace. Likewise, Sun Microsystems is trying to extend Java into this space with its Jini program.
The core of the problem
An embedded operating system is configured around a core, or kernel, that can stand alone. Different modules or applications that provide device support as hardware, software or both, are added to the kernel for an integrated package.
There are many problems to consider when building embedded systems. Programmers must overcome constraints on memory, data storage and processing power. The name of the game in embedded systems is to tune the operating system to eliminate all unnecessary features, while optimizing functions that are essential. The mindset is a little like the one needed to program in Assembly language—sparse and functional. This minimalist mindset is why customization is such an important part of the embedded OS industry.
Developers must also take into account that the embedded device may be linked to communications networks, as well as several other interrelated devices or in-house computer networks, and must adhere to stringent industrial product standards. The design and programming of these embedded systems is like an intricate spider web, woven with hundreds of other webs. Just one break in the thread can bring the whole system down.
An ideal embedded operating system will provide a solid kernel, multitasking, multiprocessing, debugging and a small "footprint," as well as real-time control. Real-time operations—such as transaction processing systems and scientific applications in which the systems activities match the human perception of time—are an important element in embedded systems. Robotic devices, flight simulators and animated features in arcade-type games are all dependent upon real-time operations. User interaction in a send-and-receive mode also relies on real-time operations.
Scalability, as it relates to architecture, is another selling point in a good embedded operating system. It ensures application growth. Program languages allow for some leeway. However, C, C++ and Java are currently the most popular choices for programming embedded operating systems. For example, Santa Barbara, Calif.-based Green Hills Software's Multi 2000 IDE runs under Windows and Unix and allows development in a variety of applications, including C, C++, Embedded C++ and Fortran. Furthermore, the Multi 2000 environment includes several familiar desktop application development features, including runtime error checking, source-level debugging, version control and remote debugging to a variety of target environments.
As the proliferation of embedded systems continues, systems designers and programmers are acutely aware that what they now produce must be architecturally sound, yet adaptable to future integration and add-on applications. For an embedded system to do what it must, it is necessary to identify the software development team and plan each step. To do this, many organizations now adopt the Rational Unified Process (RUP), a Web-enabled software engineering process that enhances team productivity.
RUP encourages team members to use software best practices, and provides an online set of guidelines, templates and helpful examples for e-development activities. Blueprint Technologies, Falls Church, Va., built its first Digital Communication Network using RUP. Deloitte Consulting, New York City, also claims to build high-quality e-business applications faster with RUP. Whether or not a company decides upon RUP, here are the six best RUP practices that may be used as guidelines:
- Develop software iteratively,
- Manage requirements,
- Use component-based architectures,
- Model software visually,
- Verify software quality, and
- Control changes to software.
Another software development model that facilitates the interrelationships between software development phases is the Life Cycle approach. While its terms are more general, the steps are easily adapted to an organization's management and decision-making styles. The spiral step uses a risk management approach to software development. It sets completion criteria for each project activity to answer the question: "How much is enough?" The Life Cycle approach can be used for hardware/software development projects in combination.
The Software Engineering Institute (SEI) has developed the Capability Maturity Model (CMM) to assist organizations with that task. In 1988, Lexington, Mass.-based Raytheon, a defense contractor that does a lot of embedded operating system work, successfully implemented the CMM as a process improvement initiative.
Most organizations can tailor any of these practices to suit their management style, quality requirements and technology level, but it is important to adopt a design methodology.
Linux and Unix
There are many good, flexible embedded operating systems on the market. Among the current leaders in the embedded OS market is Linux, the open source Unix-based OS, and its variants. There are many Linux companies selling embedded versions of the OS: the ELKS project; Lineo, Lindon, Utah; Microtron-ix, London, Ontario; and Zentropix, now a part of Lineo, are prime examples. Other, better-known, companies include Red Hat, Durham, N.C., and TurboLinux, Brisbane, Calif.
Because Linux is free and can be customized without regard to licenses, it shows up in many cost-sensitive applications where a device is replicated in great quantity. Linux's draw in this marketplace is its reliability, particularly in narrowly focused applications. It is not uncommon for Linux embedded OSs to operate at better than five 9s uptime (less than five minutes of downtime a year).
BSD Unix (Free BSD, Net BSD, Open BSD and many others) also finds great favor in the marketplace as an embedded OS. BSD Unix can be found in many devices that use small, narrowly purposed applications, such as printers, network-attached storage devices and so on. Although BSD and Linux are similar in function, BSD appears to have a more rigorous development process. It adheres fairly closely to established Unix standards. It is easier to integrate a BSD Unix embedded OS with other Unix machines than with Linux.
Development work on BSD Unix is reportedly somewhat slower that working with Linux, however. Ken Burnside, in the October 1998 issue of Desktop Journal, reported that BSD has "rock-solid server and workstation operating systems and, like Linux, it tends to have more user-configurable settings than MacOS or Windows. The functional differences between BSD systems and Linux are almost nonexistent to the end user."
Old players and new
The market for embedded systems is one with a lot of players, activity and choices. Along with newcomers like Microsoft Corp., Sun Microsystems Inc. and Be Inc., Menlo Park, Calif., you will find names like Wind River Systems, Alameda, Calif.; Microware Systems, Des Moines, Iowa; Integrated Systems (now part of Wind River); QNX Software Systems, Kanata, Ontario, and others who specialize in real-time embedded systems in markets that are hidden from public view. It is a fragmented market in which there is a great variety in the base OS, and a lot of customization. It is also a difficult marketplace to figure out. Prices for embedded OSs can range from less than a few pennies up to hundreds or thousands of dollars, and the production runs can range from one device to millions of identical devices. The following is a closer look at products from Wind River Systems, Microsoft, Sun and Be.
Wind River's VxWorks
Wind River Systems entered the real-time embedded systems software market in 1987, when it released its VxWorks operating system. VxWorks is compatible with many chip architectures, including chip families from Intel, NEC, Motorola and ARM Holdings. Wind River focuses on non-computing smart devices.
The company plans to provide and support an extensive line of development tools for all embedded Real-Time Operating Systems (RTOSs). Wind River recently acquired Integrated Systems Inc., its subsidiaries and its Embedded Support Tools, and is now prepared to support customers with the necessary tools prior to RTOS selection. The company is promising end-to-end solutions for its RTOS customers and has the tools to provide those solutions. The company's tools support MCF5272 Processors and Motorola's ColdFire Microprocessors, just two of many products. Available for shipping are Diab C/C++ and FastJ Compilers, RTA Suite, SingleStep Debuggers, visionClick, visionIce 11, visionProbe 11 and visionTrace.
Wind River began offering its Tornado development system for Windows and Solaris (with GNU compiler support) in January 2001. Hewlett-Packard was slated to add GNU compiler support to Tornado in February 2001 and Diab compiler integration in early Q2/2001.
Microsoft has made a major push to make Windows CE v3.0 attractive to embedded OS developers. In particular, Microsoft has worked very hard to get CE Embedded into the TV set-top box market (one of the hot new areas for embedded OSs) and has had some success in this area with major cable vendors. CE Embedded can be found in devices such as the Barney plush doll talking toy (the ActiMates line), very sophisticated entertainment controllers, Compaq's new Internet phone appliance and, of course, a variety of Personal Digital Assistants (PDAs) and palmtops.
CE offers developers a high level of configuration and portability. The kernel is multithreaded with pre-emptive multitasking and priority-based thread scheduling based on the Win32 process and thread model. CE Embedded supports synchronization objects, as well as demand paging in ROM, RAM and the FAT file system. It is portable to various microprocessors and can run on a single processor with as little as 80 MHz. The memory minimum requirement for CE is 1Mb with no storage required.
CE Embedded has about 25% of the footprint of a Win32 desktop OS, and allows a programmer with Windows experience to leverage the programming they already know. For approximately 4 million developers, this is a very important feature.
Windows NT Embedded is Microsoft's entry into the more capable embedded OS marketplace that requires security and more stability than CE offers. With NT Embedded, it is possible to build multiprocessor systems with high performance. NT Embedded requires 12Mb execution, with 8Mb storage (without networking). It is also optimized for smaller displays and supports resolution up to 800 x 600 pixels.
In assaulting the embedded marketplace, a market in which Microsoft has great interest, the company has had to resolve many conflicts with its current pricing model. Embedded systems often require narrow licenses for commodity use, with much lower unit costs than computer devices offer. The payoff for a company like Microsoft is that this market can move huge unit volumes. Microsoft is apparently willing to make the necessary pricing trade-offs to establish a position in the embedded operating system space.
Sun Microsystems is marketing Jini, a collection of new Java APIs and components aimed at the embedded OS market. Jini has received a lot of press as an embedded OS for the networking marketplace. It is a lightweight layer of Java code that rests atop the Java 2 platform. Jini depends on Java's Remote Method Invocation (RMI) distributed communications infrastructure. Together, Jini and Java offer APIs and an infrastructure for building distributed services that can dynamically register traits about themselves.
Significant types of Jini-based services are those offered by embedded devices on a network. Devices such as phones, printers and pagers can offer services to a dynamic network in a standard fashion. Jini clients can plug into this dynamic network and obtain immediate access to Jini services. Jini has some great graphic features, supports native OpenGL for 3-D, and has a built-in searchable database. Most amazing of all is that Jini incorporates a 64-bit journaled file system.
However, Jini is commercially limited. Release 4 improves hardware support and optimizes core services for the Intel platform. Like any embedded system, the Jini platform is currently wrestling with issues of memory, storage, processing power and determinism. The Jini Device Architecture Specification defines general options for dealing with these issues.
The BeOS is pervasively multithreaded: All tasks are broken down into very small chunks of instructions that can be processed more efficiently. It is multi-processor-aware, so it runs well with two or more CPUs. BeOS has an object-oriented programming interface that gives programmers an advantage in designing new software, and includes a well-planned user interface. Some features are drawn from the Mac, others from Windows and NeXT, and brand-new ones create a responsive system.
Recently Be has begun to market the BeOS in the embedded marketplace, particularly in the multimedia application marketplace. BeOS is an interesting newcomer that bears watching.
Rules no longer apply
The market for embedded operating systems is one that can be seen as dynamic, evolving, unique and quite substantial. In scope and application, it dwarfs the market for personal computers. Normal market rules for selling consumer operating systems simply do not apply to companies trying to establish a significant presence in the embedded OS space. Therefore, in trying to establish themselves, even companies that usually play it close to the vest have been changing their thinking. Microsoft has recently been forced to create a program that would allow more than 14 semiconductor companies and hundreds of developers to examine the source code for Windows CE Embedded to allow them to customize their products better. Most OS vendors recognize the opportunity that embedded systems offer them, and many major players have initiatives aimed at giving themselves and their developer communities a foothold in the market.