(Translation of an article that appeared in Bits & Chips 5, 2002)
With the arrival of Windows CE, Microsoft made a serious attempt to enter the embedded market. This market is expected to be one of the biggest growth markets in the near future. In this article we take a look at Windows CE.NET, introduced in January 2002 and we look back at the history of Windows CE.
For a long time real-time behavior has been the focal area of Windows CE, but with the arrival of version 3.0 of the operating system it was clear that Windows CE could be categorized as hard real-time operating system. With the release of Windows CE.NET more and more attention will be paid to connectivity. The possibilities of the .NET Compact Framework in combination with managed code will also attract lots of attention. At this moment Windows CE is mainly used for smart devices, but there are lots of opportunities in the industrial automation area as well.
|
Windows CE 1.0 |
Initial version, mainly targeted towards handheld computers with a Windows 95 alike user interface. |
|
Windows CE 2.0
|
First OEM configurable version. Windows CE is componentized. Five standard configurations are available. Application development with Visual Studio plug-ins. |
|
Windows CE 2.10 |
For OEM’s the number of standard configurations is now seven. This is the OS version for the Palm-sized PC. |
|
Windows CE 2.11 |
The Embedded Tool Kit (ETK) is released for embedded developers. The ETK makes it easier to configure Windows CE on specific target hardware. |
|
Windows CE 2.12 |
More standard configurations available. Platform Builder is released, a graphical environment to configure and build Windows CE operating systems for specific target hardware. |
|
Windows CE 3.0
|
First version of the OS with hard real-time behavior. For application development separate embedded Visual Tools (eVC and eVB) are released. This version of the OS is used in PocketPC (2002). |
|
Windows CE.NET (4.0)
|
Real-time behavior at least as good as that of Windows CE 3.0. Significant improvements in Platform Builder. Eventually managed application development will become possible. |
Table one shows all different versions of Windows CE so far, in the past regularly a cause for confusion. This confusion only increased because different SDK’s with their own version numbering scheme are needed for different Windows CE (hardware) platforms.
In the industrial automation world too much different releases in a relatively short period of time are undesired. This might cause upgrade problems. Companies might also wonder about support over years of older versions. In the embedded world, Microsoft at least made a commitment to support its embedded Windows products for ten years.
The history of Windows CE can also be categorized according to the development tools for embedded use. Version 1.0 of the operating system was clearly targeted to hand-held computers. Soon after the product was released, embedded developers showed interest in the product. However, no specific support for embedded developers was available, but Microsoft provided them with the so called OAK (OEM Adaptation Kit).
OEM Adaption Kit
This is a collection of libraries, configuration files, scripts and build tools that were used internally at Microsoft in order to configure the operating system on to new hardware. It was of nut much use for embedded developers, especially because of lack of documentation. In order to thrill these developers, it was absolutely necessary to create a more user-friendly development environment for Windows CE. Microsoft recognized this problem and, with the release of version 2.0, put a first step towards better tools.
Embedded Tool Kit (ETK)
With the arrival of Windows CE 2.0 the ETK became available, especially for embedded systems development. Compared to the OAK, the ETK was a huge improvement, but still no ideal environment to create a Windows CE configuration with. Within the ETK the different tools were categorized in a better way and at least there was some electronic documentation available. However, all development tools were still character based. To create a tailor made Windows CE configuration it was necessary to regularly update a lot of different files in a rather complex directory structure.
Platform Builder (PB)
The main reason to release version 2.11 of Windows CE was the arrival of Platform Builder. This environment lowered threshold for embedded developers. Perhaps this product was released too soon, because many tools were still originating from the ETK. The look and feel of the product was changed dramatically, a graphical environment similar to the Visual Studio development environment (see figure 1). Within PB 2.11 reference hardware was defined, specifically CEPC and ODO. CEPC consisted of standard pc-hardware with specific requirements for the graphics display board and the network card. ODO was a Hitachi D9000 development environment, a relatively expensive platform to test Windows CE on non-Intel hardware.

Figure 1: Platform Builder 2.11 IDE
The first versions of Platform Builder had one serious lack. A graphical development environment to configure the operating system was not available. Starting with Windows CE 3.0, this development environment was available, although far from ideal. Configuring a Windows CE operating system remained cumbersome, because dependences between several components were not properly defined within the development environment. For example. adding a component to control a modem could lead to several error messages, because the developer forgot to add the serial port driver, which the modem driver used. This seems like a minor detail, but in graphic environment which supports dragging and dropping of components, one expects the environment to keep track of component dependencies as well. The latest version of Platform Builder (4.0) is a big improvement.
Platform Builder versie 4
Figure 2 shows Platform Builder for Windows CE.NET. At first sight it seems little has changed in comparison with earlier versions. Starting to work with it, it immediately becomes clear how easy it is to let the system resolve dependencies between several components. If two components are depending on each other, manually inserting one of the components leads to the other component to be inserted automatically. So far this functionality seems to work the other way around as well: Platform Builder ensures that components without dependencies to other components are removed. For embedded solutions the latter is very important as well to guarantee that the generated image is not bigger than it should be.

Figure 2: Platform Builder for Windows CE.NET
We verified component removal by starting with the smallest pre-configured kernel (Tiny Kernel). We added a networking component for Ethernet functionality. Adding this component also resulted in automatically adding components for TCP/IP and WinSock support. After building and testing the kernel, we removed the networking component. Upon this action, the extra added components were removed as well, resulting in an operating system configuration, identical to the original Tiny Kernel. Configuring an operating system in this environment is significantly more pleasant than it used to be. The actual building process of the operating system is still heavily dependent on low level environment settings that are stored in configuration files. To make sure that components in a particular configuration are added or not, it is often necessary to verify these low level files manually.
In a broader perspective, the current Windows CE.NET Platform Builder is a sneak preview of the soon to be expected development environment Visual studio.NET. More and more features are added to the development environment. It is truly integrated with the Internet. Visual Studio.NET can be used as a browser because IE-components are integrated in the development environment. A big advantage is that relevant information regarding Windows CE development is easily available because relevant links can be reached from Platform Builder’s welcome screen.
New functionality within Windows CE.NET
Microsoft added a large number of new features in Windows CE.NET. Real-time behavior is even further improved, compared to Windows CE 3.0. Particularly for mobile applications lots of new features are added. Windows CE.NET integrates seamless with Microsoft’s overall .NET concept.
The following new features are available within Windows CE.NET:
- Bluetooth support
- 802.1x/Zero configuration – easy connection and use of 802.11 wireless networks
- Object Exchange (OBEX) protocol – a binary protocol to connect devices by means of Bluetooth or infra-red.
- ARM, MIPS, SHx and x86 processor support
- Network security, based upon the Kerberos Security Protocol and Secure Sockets Layer (SSL)
- XML support.
- Availability of the .NET Compact Framework for modern application development
- Support for managed and native code – software development is possible in a managed .NET environment or in an unmanaged environment, making use of Win32 API’s
Developing for Windows CE
Developing applications for Windows CE.NET is not really different compared to development for other embedded operating systems. First of all, the operating system must be configured to run on specific hardware. Even though the development tools are very useful, getting the OS to run on new hardware is not an easy task. To give you a head-start, Windows CE.NET contains a number of standard configurations and lots of sample code. Still, don’t underestimate the amount of time involved in configuring and initially testing the operating system on new hardware. Specific knowledge, not only of the used hardware, but also about the operating system is absolutely required. Embedded operating systems don’t give you an out of the box experience, they must be tailor made for your particular solution. Companies with a lack in Windows CE experience can contact Windows CE System Integrators to assist with this task. Once a Windows CE configuration works on the target hardware, developing applications is relatively simple, especially with a huge number of Windows developers available. Windows CE makes use of a Win32 API subset, so any developer with Win32 knowledge can write applications for Windows CE.
Different Windows CE.NET versions
Several versions of Windows CE.NET are available. A free emulation version can be downloaded from Microsoft’s website. This version allows developers to experiment with platform builder, it also can be used by application developers to start testing applications prior to actual hardware availability. In order to get a realistic test environment, the emulator can get different skins for different (hardware) experiences. Skins are especially useful to examine graphical interfaces on specific hardware. The emulator version can not be used for device driver testing or to verify hard real-time behavior of the Windows CE operating system. The complete version of Windows CE.NET contains all tools to be able to create a Windows CE operating system for specific hardware. It includes the newest version of the application development environment, Embedded Visual C++ 4.0. For evaluation purposes an evaluation version of Windows CE.NET is available. The evaluation version operates for 120 days.

Figure 3: Windows CE.NET emulator with skin
Within Windows CE.NET, two different application development landscapes are available. First of all, Windows CE.NET is the next version of Windows CE, running applications that are written in eVC 4.0. In the current .NET era these applications are called unmanaged applications. Unmanaged applications can have hard real-time behavior, similar or better than Windows CE 3.0.
However, Windows CE.NET is also the first embedded alternative within the NET-infrastructure. It is possible to develop applications that operate under the .NET Compact Framework. This protected environment, with a common language runtime and new languages like C# and VB.NET is almost identical to the corresponding desktop environment. However, it is questionable if a managed environment supports hard real-time behavior, amongst others because of the presence of a garbage collector and Just-In-Time compiler. The .NET Compact Framework will become part of the new Visual Studio.NET development environment.
Conclusion
Windows CE.NET will surely find its way within industrial environments. With its relatively low price, Windows CE.NET is a serious alternative for the embedded market. Hopefully Microsoft is not only betting on managed environments with VB.NET and C#. For some devices, writing managed applications will have advantages, like platform independence and with that ease of installation. However, a different category of embedded products need hard real-time behavior. At this time, this is definitely not possible with only managed code. Luckily there is an alternative approach. Windows CE.NET is a great real-time operating system with a separate development environment, embedded Visual C++ 4.0. As such, Windows CE.NET is a serious alternative for industrial appliances with a stability that is unprecedented for many desktop product of Microsoft.
Maarten Struys |