Electronic Design

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.

Embedded-system designers need to be aware of the Pocket PC and related services because many of these may be applicable to embedded applications. These components don't come with Windows CE, but instead are part of the OEM adaptation kit available from Microsoft's Pocket PC group. Some of the major Pocket applications included in both are Pocket Internet Explorer, Pocket Outlook, Pocket Word, Pocket Excel, and ActiveSync.

Using an existing application or service can reduce a developer's workload while providing a more robust system. In many cases, the applications or services won't be used to their full potential, enabling subsequent upgrades to take advantage of these features. For example, ActiveSync is an application that can be used to synchronize data maintained by a desktop application with data kept in an embedded device. ActiveSync supports a number of communication methods, including a serial connection, infrared port, or a network. An embedded system might employ one of these initially, with other support added later.

Pocket PC applications, Pocket Internet Explorer, Pocket Outlook, and Pocket Word are designed for application programmers and users. Application programmers can utilize objects exposed by these applications, so third-party applications can manipulate the Pocket PC applications. This approach can be used to perform actions like the creation of a Word document that will be a mail message attachment. Of course, developers will need to determine whether using an existing application is worth the storage for the application versus creating the necessary functionality from scratch. But in many cases, using an existing application will be preferable to building a new one.

Developers should note that the Internet Explorer 4.0 client that ships with Windows CE is a modular application differing from the Pocket Internet Explorer product mentioned above. There are feature differences between the Internet Explorer 4.0 client and its Pocket cousin, in addition to construction differences.

Windows CE 3.0 makes great strides in improving Windows CE's stature in the hard real-time realm. Yet its native support still falls short for hard liners. The same is actually true for Embedded Windows NT. But VenturCom's RTX may be the answer. It even works with Windows 2000. This hard real-time add-on for Windows CE and Embedded Windows NT brings fast, deterministic task and thread switching. Plus, RTX works with standard debugging tools.

John O'Keefe, product manager, explains that RTX works in conjunction with the base operating system's own scheduler, with RTX handling real-time applications. Only time-critical services need to deal with the extra RTX APIs. RTX is transparent to applications that don't use the API.

RTX addresses process and thread management, provides fixed-priority scheduling, and supports interprocess communication and synchronization, memory management, and physical memory mapping, as well as interrupt management. Additionally, it supports high-speed clocks and timers.

Although not specifically applicable to real-time support, VenturCom's RTWin API is a common subset of Win32 APIs that work across the Windows family. The advantage of using RTWin comes when developing applications that will run on a number of Windows targets or applications being migrated to an embedded platform like Windows CE.

The edge that Windows CE has comes from its connectivity with other Windows platforms and support for common Windows technologies like ActiveX. Windows CE connectivity utilizes Microsoft-specific protocols as well as standards-based protocols.

Windows CE has Microsoft message queue (MSMQ) support. Used on other Windows platforms, MSMQ provides access to services managed by the Microsoft Transaction Server (MTS). MTS is normally found on Windows NT and Windows 2000 servers. At a lower level, Windows CE supports the Windows Sockets APIs and the Win32 serial APIs that provide communication services independent of the communication hardware.

Windows CE support for the Telephony Application Programming Interface (TAPI) makes adding modem support to an application easy. Dial-up support greatly simplifies remote connectivity access to Remote Access Services (RAS) found on Windows 98, Windows NT, and Windows 2000. IrDA and Fast IrDA are supported with the appropriate hardware.

Network connectivity uses Microsoft's NDIS network drivers and Microsoft's network client software to access remote file and print servers. Windows CE supports the Common Internet File System (CIFS)/Server Message Block (SMB), allowing direct access to files and directories on almost any file server from Windows 2000 to Linux running Samba. Windows CE supports the Windows NT LAN Manager-based authentication but not the newer, more robust Windows 2000 Kerberos authentication. Windows CE can handle the Security Support Provider Interface (SSPI) APIs, so additional authentication mechanisms can be added.

TCP/IP and other Internet protocols are the norm for Windows CE. PPP and SLIP drivers are supported, as well as higher-level protocols like SNMP, FTP, and HTTP. SSL, HTTPS, POP3, and SMTP mail protocols are supported, too. Windows CE has both the Internet Explorer 4.0 client and a web server. All these standards-based protocols and services are included with Windows CE, whereas some competitors provide these as extra-cost options or via third parties.

Windows developers using Windows CE don't have to contend with a limited programming environment. Windows CE support for over 1500 Win32 APIs, where most are common, cuts across all Windows platforms.

Windows CE development tools support the MFC and the Component Object Model. The latter is the basis for a variety of Microsoft technologies, including Microsoft ActiveX controls, ActiveX Data Objects (ADO), and the Microsoft ATL. These technologies are used to generate user-defined objects. The Windows CE support will permit easy porting of most user-defined object-based services to Windows CE.

The capability for UNICODE and the national language support (NLS) API lets Windows CE applications employ embedded solutions requiring internationalization or multilingual support. Windows CE can currently handle English, French, German, Italian, Portuguese (Brazilian), Spanish, Dutch, Swedish, and Japanese languages.

Embedded-system designers need to be aware of the Pocket PC and related services because many of these may be applicable to embedded applications. These components don't come with Windows CE, but instead are part of the OEM adaptation kit available from Microsoft's Pocket PC group. Some of the major Pocket applications included in both are Pocket Internet Explorer, Pocket Outlook, Pocket Word, Pocket Excel, and ActiveSync.

Using an existing application or service can reduce a developer's workload while providing a more robust system. In many cases, the applications or services won't be used to their full potential, enabling subsequent upgrades to take advantage of these features. For example, ActiveSync is an application that can be used to synchronize data maintained by a desktop application with data kept in an embedded device. ActiveSync supports a number of communication methods, including a serial connection, infrared port, or a network. An embedded system might employ one of these initially, with other support added later.

Pocket PC applications, Pocket Internet Explorer, Pocket Outlook, and Pocket Word are designed for application programmers and users. Application programmers can utilize objects exposed by these applications, so third-party applications can manipulate the Pocket PC applications. This approach can be used to perform actions like the creation of a Word document that will be a mail message attachment. Of course, developers will need to determine whether using an existing application is worth the storage for the application versus creating the necessary functionality from scratch. But in many cases, using an existing application will be preferable to building a new one.

Developers should note that the Internet Explorer 4.0 client that ships with Windows CE is a modular application differing from the Pocket Internet Explorer product mentioned above. There are feature differences between the Internet Explorer 4.0 client and its Pocket cousin, in addition to construction differences.

Windows CE 3.0 makes great strides in improving Windows CE's stature in the hard real-time realm. Yet its native support still falls short for hard liners. The same is actually true for Embedded Windows NT. But VenturCom's RTX may be the answer. It even works with Windows 2000. This hard real-time add-on for Windows CE and Embedded Windows NT brings fast, deterministic task and thread switching. Plus, RTX works with standard debugging tools.

John O'Keefe, product manager, explains that RTX works in conjunction with the base operating system's own scheduler, with RTX handling real-time applications. Only time-critical services need to deal with the extra RTX APIs. RTX is transparent to applications that don't use the API.

RTX addresses process and thread management, provides fixed-priority scheduling, and supports interprocess communication and synchronization, memory management, and physical memory mapping, as well as interrupt management. Additionally, it supports high-speed clocks and timers.

Although not specifically applicable to real-time support, VenturCom's RTWin API is a common subset of Win32 APIs that work across the Windows family. The advantage of using RTWin comes when developing applications that will run on a number of Windows targets or applications being migrated to an embedded platform like Windows CE.

The edge that Windows CE has comes from its connectivity with other Windows platforms and support for common Windows technologies like ActiveX. Windows CE connectivity utilizes Microsoft-specific protocols as well as standards-based protocols.

Windows CE has Microsoft message queue (MSMQ) support. Used on other Windows platforms, MSMQ provides access to services managed by the Microsoft Transaction Server (MTS). MTS is normally found on Windows NT and Windows 2000 servers. At a lower level, Windows CE supports the Windows Sockets APIs and the Win32 serial APIs that provide communication services independent of the communication hardware.

Windows CE support for the Telephony Application Programming Interface (TAPI) makes adding modem support to an application easy. Dial-up support greatly simplifies remote connectivity access to Remote Access Services (RAS) found on Windows 98, Windows NT, and Windows 2000. IrDA and Fast IrDA are supported with the appropriate hardware.

Network connectivity uses Microsoft's NDIS network drivers and Microsoft's network client software to access remote file and print servers. Windows CE supports the Common Internet File System (CIFS)/Server Message Block (SMB), allowing direct access to files and directories on almost any file server from Windows 2000 to Linux running Samba. Windows CE supports the Windows NT LAN Manager-based authentication but not the newer, more robust Windows 2000 Kerberos authentication. Windows CE can handle the Security Support Provider Interface (SSPI) APIs, so additional authentication mechanisms can be added.

TCP/IP and other Internet protocols are the norm for Windows CE. PPP and SLIP drivers are supported, as well as higher-level protocols like SNMP, FTP, and HTTP. SSL, HTTPS, POP3, and SMTP mail protocols are supported, too. Windows CE has both the Internet Explorer 4.0 client and a web server. All these standards-based protocols and services are included with Windows CE, whereas some competitors provide these as extra-cost options or via third parties.

Windows developers using Windows CE don't have to contend with a limited programming environment. Windows CE support for over 1500 Win32 APIs, where most are common, cuts across all Windows platforms.

Windows CE development tools support the MFC and the Component Object Model. The latter is the basis for a variety of Microsoft technologies, including Microsoft ActiveX controls, ActiveX Data Objects (ADO), and the Microsoft ATL. These technologies are used to generate user-defined objects. The Windows CE support will permit easy porting of most user-defined object-based services to Windows CE.

The capability for UNICODE and the national language support (NLS) API lets Windows CE applications employ embedded solutions requiring internationalization or multilingual support. Windows CE can currently handle English, French, German, Italian, Portuguese (Brazilian), Spanish, Dutch, Swedish, and Japanese languages.

Windows CE supports DirectX, Microsoft's multimedia interface. While these services will normally be used by Pocket PC products, any embedded system that has a robust user interface, such as a television screen, can benefit from employing DirectX support. For CE, this support can handle DirectDraw, DirectShow, and Windows Media streaming. This allows Windows CE applications to sustain the latest multimedia technologies, including streaming audio and video. Only required services need to be incorporated into an embedded system.

Japanese and English language handwriting recognition is another feature that will tend to be found only on Pocket PCs or similarly configured embedded systems. But this option is hard to find via third parties. The handwriting recognition support includes the Input Method Manager, Input Method Editor, and input panel applications.

Windows CE doesn't fare as well with device-driver interoperability. While Windows 98 and Windows NT have moved to a single-device-driver standard, Windows CE retains its own device-driver interface. Windows CE 3.0 comes with more device drivers than its predecessor. Yet it's still limited compared to other Windows platforms.

Microsoft provides two major development tools for Windows CE, Platform Builder 3.0 and eMbedded Visual Tools 3.0. The first provides an integrated development environment (IDE) that supports the eMbedded Visual Tools compilers. Platform Builder comes with a number of wizards that step through chores, such as the creation of a target package (Fig. 1).

Platform Builder also includes a kernel debugger and support for integrated hardware-assisted debuggers. Platform Builder coordinates downloads and communication with the device under test. A status monitor tracks communications in real time.

Microprocessor add-in support allows new microprocessor architectures to be supported by Platform Builder with the addition of a new module. The board support package (BSP) provides similar support, permitting developers to customize the interface to a device under test. The IDE presents component and configuration details in a hierarchical view (Fig. 2).

The Export SDK feature allows Platform Builder to create a compressed, self-extracting executable file with device-specific support for a platform that can be incorporated by using the eMbedded Visual Tools to create applications for a particular device. The eMbedded Visual Tools 3.0 includes assembler, Visual C++, and Visual Basic support. Assembler, C, and C++ have been the mainstay for Windows CE since its inception, but Visual Basic support is new.

All of the tools can be used with the Windows CE device emulator. This eliminates the need for target hardware for initial application testing. The eMbedded Visual Tools support the Windows CE version of the MFC as well as the ATL.

The eMbedded Visual Basic IDE has most of the same features that Visual Basic has on the other Windows platforms (Fig. 3). These include Microsoft's IntelliSense technology. It streamlines program creation by performing on-the-fly syntax and error checking and providing parameter information. IntelliSense works with C and C++ too.

Visual Basic is well known and well documented. Still, Visual Basic developers new to Windows CE will have to perform a little research before building an embedded application. The list of Visual Basic programming books for Windows CE is currently short but growing. A good place to start is Professional Visual Basic Windows CE Programming (ISBN: 1861001622) by Larry Roof, from Wrox Press.

Visual Basic won't replace C++ development on Windows CE. But it could do for Windows CE what it did for Windows in general—open program development up to a much larger audience. Visual Basic programmers significantly outnumber Visual C++ programmers on the server and desktop Windows platforms. At this point, the reverse is true for Windows CE.

Visual Basic might also turn out to be a major competitor to Java on Windows CE. Java virtual machines (JVMs) are available for Windows CE, but Java programmers are as much in demand or more so than C++ programmers. Visual Basic has many of the same qualities as Java. Of these, keeping programmers insulated from the underlying hardware by providing a robust programming environment that's complete with garbage collection, is one.

Many embedded applications are resource-limited, and C and C++ will continue to dominate in this arena. But Visual Basic applications will play a major part on Windows CE where speed or memory aren't critical because of the ease of development. Windows CE development tools don't enjoy the breadth of third-party support available for development tools for other Windows platforms.

Windows CE has received a surge of support after each major release, but it hasn't always been sustained. New developers are often encouraged by good support from Microsoft with tools for the nonembedded space for Windows desktop and server development. Form and function similarities between these tools and the Windows CE tools rope in these new developers. Microsoft still needs to work at keeping these new developers satisfied because the Windows CE tools, although good and improving, still remain short of the development tools for the other Windows operating systems.

Mainbrace Corp. is one company that has been using Windows CE for a number of years. Tom Wong, president of the company, explains that while Windows CE 3.0 is a great improvement over the previous version, it's the additional tools, drivers, and development aids created by Mainbrace that have made a big difference.

The company makes good use of the Windows CE compilers and debugger. But, it had to develop its own quality assurance testing tools because of the lack of support in Windows CE as well as the lack of third-party support in these areas. Windows CE has yet to garner anywhere near the vast third-party support that has grown up around Visual Studio used for non-Windows CE development.

In addition, the company has created its own set of device drivers and a device-driver architecture that augments the one found in Windows CE. It has created useful tools like debug LED support and scope trace displays. Wong indicates that most developers will develop their own toolkits as they become more experienced with Windows CE development. The approach isn't very different from development that employs Visual Studio with the exception that Windows CE developers will need to build more of their own tools.

Limited Pool Of Developers
Wong has found that there's a limited talent pool of experienced Windows CE developers. Training people familiar with Win32 but not Windows CE does take time—about 12 weeks for someone with Visual C++ experience. Learning details like the difference between the Windows CE, Windows 98, and Windows NT thread models is just one area that new developers must address.

On the other hand, Wong has found many of the bundled Windows CE applications to be a major reason for choosing Windows CE. The Internet Explorer 4.0 provides a level of compatibility that's reassuring. Plus, the new web server support in Windows CE 3.0 nicely complements the client support. Wong sees an advantage with Windows CE when developing to its strengths in Windows compatibility and Pocket application support for products, such as data-collection tablets, electronic books, and, of course, Pocket PCs.

Although Mainbrace is a 100% Windows CE shop, it hasn't embraced Visual Basic support yet. Instead, the company is sticking with the tried-and-true C and C++ support with which it has experience.

The Windows CE design team didn't try to make it the ultimate embedded operating system. Nor did the team push to make it a hard core real-time system, although Windows CE comes close. Instead, it was designed to be modular, highly functional, and destined for products that will be connected or networked in some fashion.

The Pocket PC is one obvious space for Windows CE, along with variations on this theme like an electronic book or a dedicated Internet e-mail appliance. The Pocket PC still needs to contend with other handheld devices, but that's a much different market from the embedded-systems space.

Windows CE in the more conventional embedded space is a more nebulous area. It definitely cedes the high ground to the competition, including Embedded Windows NT. It likewise ignores the low 8- and 16-bit controller arena. Still, 32-bit processor architectures show up in the majority of new embedded-systems designs, and this is where Windows CE fits. Even so, Windows CE has lots of competition (see "The Competition," p. 90).

Windows CE support for other Microsoft technologies like the Common Object Model and the Distributed Common Object Model make it very appealing for network environments that deal with applications on other Windows platforms. The limited hard real-time support will keep it out of a number of projects, but developers should be aware of VentureCom's RTX real-time add-on for Windows CE.

Windows CE doesn't have the same presence as major players in the embedded space like Wind River Systems, QNX, and LynuxWorks. But Microsoft's support for Windows CE and its dominance on the desktop will definitely improve Windows CE's position over time. Perhaps the greatest advantage over time will be Visual Basic support for Windows CE. Writing applications for embedded systems isn't easy. Yet the vast pool of Visual Basic programmers and the ease with which it can be learned will certainly give a boost to Windows CE.

Platform Builder 3.0 is available for $2999. Contact Microsoft for run-time licensing fees for Windows CE distribution. These are almost half that of prior versions of Windows CE.



Companies Mentioned In This Report
Accelerated Technology
(334) 661-5770
www.atinucleus.com

LynuxWorks Inc.
(408) 879-3900
www.lynuxworks.com

Mainbrace Corp.
(408) 774-5250
www.mainbrace.com

Microsoft Corp.
(425) 882-8080
www.microsoft.com

M-Systems Inc.
(510) 494-2090
www.m-sys.com

Palm Inc.
(800) 881-7256
www.palm.com

Phar Lap Software Inc.
(617) 661-1510
www.pharlap.com

Precise Software
Technologies Inc.

(800) 265-9833
www.psti.com

QNX Corp.
(800) 676-0566
www.qnx.com

VenturCom Inc.
(617) 661-1230
www.vci.com

Wind River Systems Inc.
(800) 545-9463
www.windriver.com

TAGS: Robotics
Hide comments

Comments

  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
Publish