[Technology Report]
Windows CE 3.0 Hosts Improvements For More Robust Embedded Systems
The latest version rises to the challenge of networked embedded systems.
Windows CE, Microsoft's 32-bit embedded operating system, is undergoing its third major revision. If it's anything like its Windows cousins, this revision should shake up the competition. Windows CE has targeted two major areas: handheld PCs (HPCs), including products known as Pocket PCs, and embedded systems.
Windows CE 3.0 has a number of changes that address deficiencies in both spaces. On the embedded side, improvements in its real-time processing support make it suitable for applications that previous Windows CE versions simply couldn't handle, like test and measurement devices and robotics. Enhancements made on the user interface were primarily done to improve competition versus the Palm OS. But the enhancements also make Windows CE a better embedded-systems platform for such devices as Internet appliances and set-top boxes that have a user interface.
Microsoft has improved its development tools too. Platform Builder provides a complete set of deployment tools. Plus, eMbedded Visual Tools 3.0 offers a complete cross-platform development platform supporting eMbedded Visual Basic as well as eMbedded Visual C++.
More important in many instances is support for other Microsoft technologies, such as Common Object Model and Distributed Common Object Model. Developers using other Microsoft operating systems will already be familiar with these technologies. Having the same technology at all locations of a distributed environment can greatly simplify development and deployment, as well as management. It also allows the same developers to more readily work with different parts of a distributed architecture without the need to learn new technologies.
Windows CE, however, has its own set of limitations and unique features in comparison to other Windows operating systems, like Windows 98, Windows NT, and Windows 2000. But these are minor compared to the vast array of other interfaces and features that are common among all of the Windows operating systems.
Windows CE has been around for a number of years, and it benefits from similarities with other Windows operating systems. Still, a large number of alternatives exist for embedded-system developers. Many of these alternatives have long track records, extensive support, and an extensive feature list. With version 3.0, Windows CE's feature list is becoming rather extensive too.
The complete feature list of Windows CE would fill a small book, but there are many significant enhancements in version 3.0 (see "New Windows CE 3.0 Features," p. below). Many users are familiar with Windows CE through the Windows CE HPCs and new Pocket PC products.
One common thread through these products is a user interface with the flavor of the Windows desktop made popular by Windows 95, Windows 98, Windows ME, Windows NT, and Windows 2000. This visual similarity has a number of implications, including similarity of developing a Windows CE application with a user interface. But this is just the tip of the iceberg. Windows CE employs identical programming tools, including C++ and Visual Basic. Windows CE applications implement the same Win32 APIs found on the other Windows platforms. Even the more advanced object-oriented support is the same.
Developers familiar with the Windows platforms already know about Microsoft's programming support for the Microsoft Foundation Classes (MFC) Library and the Component Object Model interfaces. Support for the Active Template Library (ATL) and ActiveX control also is found across the Windows family.
One major difference between Windows CE and the other Windows operating systems is the run-time platform. Windows CE supports a variety of microprocessor platforms, including ARM, Hitachi Super-H, MIPS, and PowerPC, as well as x86, while all the other Windows operating systems only run on x86 processors. This will change once the 64-bit version of Windows 2000 is available on Intel's Itanium microprocessor. For now, though, the Windows operating systems, with the exception of Windows CE, all have the potential of running the same binaries.
Moving up to a high-level language like C++ removes most of the differences. It lets Windows CE hide the underlying processor from most applications. Applications designed to run across a number of Windows CE platforms might require different binaries, but the source code typically remains the same. This is a significant advantage for third-party developers interested in providing applications or services to Windows CE developers that aren't included as part of Windows CE or part of Microsoft's Windows CE development tools.
The tradeoff is minor for some Windows CE embedded systems where software is targeted at a specific hardware platform. But many Windows CE embedded systems are destined for Internet appliances or other networked devices. In this case, the embedded systems may run applications that are downloaded from a network server. These application binaries must be platform-specific. One alternative is to use applications that run on a virtual machine, as do Java applets. In that situation, a platform-specific virtual machine is required, but not platform-specific application binaries.
Windows CE differs from the other Windows operating systems in its modularity. Windows CE consists of a set of discrete components that provide support for major features of the operating system. Developers need only include components that are required to run the applications designed for an embedded system. This lets the developer set the size of the operating system by using the Windows CE development tools. The new version of Windows CE offers better multitasking and multireading support, allowing developers to tailor performance, too.
One configuration where most Windows CE modules are included is the HPC realm. This is addressed by Microsoft's Pocket PC initiative. It's at the other extreme from many embedded systems where a fixed environment is common. With the Pocket PC, applications can be downloaded and run by the user, so most services must be included in the base system.