"I will NEVER use Windows CE or Windows XP Embedded!"
Note from the editor: Mike Hall responds to the reasons he hears for why developers don't want to use the Windows Embedded operating systems. The following content, excerpted from Mike's blog, lists and refutes the excuses he most frequently hears.
"I will NEVER use Windows CE or Windows XP Embedded!" Quite a strong statement, right? So why wouldn't I use Windows CE or Windows XP Embedded?
- Reason 1: The operating systems are too big.
- Reason 2: There's no support for real-time functionality.
- Reason 3: The operating systems are not secure.
- Reason 4: It's too hard to configure an operating system for my needs.
- Reason 5: The tools are too expensive.
- Reason 6: Licensing costs are too high.
- Reason 7: There's no support.
- Reason 8: There's no driver support for my hardware.
- Reason 9: I don't want my embedded device to look like Windows.
- Reason 10: There are no training materials available to assist me with my project.
- Reason 11: There are no partners to provide hardware, drivers, bootloaders, and training.
- Reason 12: It's hard to find engineers to work on my projects.
- Reason 13: It's difficult to move developers from one platform to another.
I think that just about covers it. There's probably something I've missed and if you have something to add, let me know.
If the list above were true, I certainly wouldn't be even remotely interested in using Windows CE or Windows XP Embedded. The list above covers some of the common perceptions that customers seem to have about Windows Embedded operating systems, so let's walk down the list and in true Mythbusters style, deal with each of the perceptions in turn.
The first thing to say here is that Windows CE and Windows XP Embedded are both componentized operating systems, so you get to pick and choose the parts of the operating system that are appropriate for the device you are building. Windows CE has around 500 components; Windows XP Embedded has around 12,000 components. (About 9,000 components are device drivers, the rest of the components are operating system technologies).
The Windows CE minimum build size is approximately 200 KB. A residential gateway image would be about 4 MB in size. Support for wired and wireless networking, remote administration UI (web server), and a PDA-like image which includes the Windows-like shell, networking, RDP, Internet browser, Windows Media Player, COM/DCOM, etc., would require around 18 MB. Obviously this could be tuned for the specific application you are building.
The Windows XP Embedded minimum build size is approximately 5 MB. This is a kernel-only build you can't do anything useful with this image, but it does boot and run. An average image size for Windows XP Embedded would be around 40 MB or above. This, of course, is a lot smaller than a typical install of Windows XP Professional on the desktop. When building the operating system image you get to pick and choose which hardware and software components are needed in your platform. If you don't need Windows Media Player, DCOM, RPC, Microsoft Internet Explorer, then don't put them in your image.
I'm not sure why we get this myth. Windows CE is designed to be a hard real-time operating system. The underlying operating system architecture is totally different from the Windows desktop operating systems. Take a look at the RTC Magazine article that discusses Windows CE real-time capabilities and Dedicated Systems Experts' white papers evaluating Windows CE 5.0 and, specifically, Windows CE 5.0 running on an x86 platform.
Windows XP Embedded is not a real-time operating system, but there are a number of third-party real-time extensions for Windows XP Embedded.
Windows CE 5.0: You can totally lock down your operating system images to only run the code that you want on your system by implementing OEMCertifyModule. Also, for Windows CE 5.0, all security features are turned on by default. Take a look WindowsForDevices' article that describes Windows CE security features. Also, because Windows CE is a componentized operating system, you only include the components and technologies that are required by your device. The other interesting feature is that Windows CE architecture is different from the desktop. On the desktop operating system, three core components are linked by any executable code: Kernel32, GDI32, and User32. However, none of these components exist in Windows CE, so even if your device is running on the x86 processor, even a simple application like Notepad from the desktop won't run on Windows CE. This means that desktop viruses, worms, and other security hazards won't run on Windows CE either.
Windows XP Embedded with Service Pack 2: Okay, where to start? Perhaps with the SP2 overview document? The first thing to say here is that Windows XP Embedded is a componentized operating system, so you get to choose which components are included in your operating system image. If you don't need networking components such as MSMQ, DCOM, RPC, or others, then don't include them in the operating system image. If you look back at some of the viruses and worms that have attacked the desktop, most exploit RPC, DCOM, and other open ports on a PC. With Windows XP Embedded with SP2, you have all the desktop SP2 security updates, which include Firewall (all ports except port 80 are turned off by default), plus support for No Execute and detection of buffer overruns (both are explained in an interview with Joe Morris from the Windows XP Embedded team). Anti-virus protection is also available from third-party resources like Computer Associates and Trend Micro.
Windows CE 5.0: The operating system is componentized and the operating system development tool (Platform Builder) ships with a wizard to assist with the initial platform configuration. The wizard contains nine platform configurations ranging from "Kernel only" (200 KB) to Residential Gateway, Internet Appliance, or WebPad. These can be considered to be starting points for your design; you can add or remove features from the platform workspace, such as adding support for the .NET Compact Framework or removing support for the HTTP Web Server. The platform development tool also gives you the ability to add your own custom applications and drivers. See the Windows CE tutorials for more information. Plus, the platform configurations can be extended by creating your own templates.
Windows CE ships with production-quality drivers and board support packages (BSPs), for easy configuration, building, and debugging and testing. The tools also ship with 2.5 million lines of shared source code, which can be used to assist with platform bring-up, debugging, and learning about the Windows CE operating system.
Windows XP Embedded: Windows XP Embedded is also a componentized operating system. Similar to Windows CE 5.0, there are a number of "starting point" templates that can assist with operating system development. This includes starting points for set-top boxes, Windows-based terminals, Internet appliances, and so on. You also have the ability to start from scratch and select from hardware or software components. The process of getting Windows XP Embedded up and running on a new platform is pretty straightforward. Because the underlying hardware is x86 and PC architecture, you can run a tool that analyzes your hardware and produces an XML output file that contains a listing of the hardware for your reference board. With this XML definition, you have the baseline hardware for your target board sorted. Now you just layer one of the templates or individual software components on top of the hardware definition and then build the operating system. Sounds simple, right? Why yes, it is! Follow the Windows XP Embedded Tutorials to see just how simple the process is.
Okay, this is a simple one. Windows CE and Windows XP Embedded are available as FREE downloads from the Microsoft Web site. Let's just spell that one more time: F-R-E-E. You can download the Windows Embedded Introductory Kit right now. Once you've evaluated the operating system and tools for up to 120 days, you can then purchase the full product. At at the time of this posting, either Windows CE or Windows XP Embedded is $995. Note that if you download the trial version of Windows CE, you'll get the same tools and 2.5 million lines of source code as in the full product.
Exactly when do you need to start purchasing licenses for your embedded operating systems? That's simple: when you start shipping real products to your customers. You can use the evaluation edition tools (or the full product) to build and send test versions of your operating system image to customers without needing to license anything.
But how much do the operating system licenses cost? Licensing costs for Windows CE and Windows XP Embedded are straightforward. Windows CE has a "Core" license that covers most of the operating system for $3 or a "Professional" license for $16. Windows XP Embedded licenses are approximately $90 per device. Again, note that you don't need to purchase run-time licenses until you ship real products. So the cost of development is pretty low. Development tools are FREE to download from the Microsoft Embedded Web site and can be run for 120 days. After that, the full product is $995. Visit our How to Buy Windows Embedded Operating Systems page for more information.
There are a number of ways to get support for Windows CE and Windows XP Embedded, ranging from FREE support (notice the "free" word being used yet again!) to training courses, partner-assisted development, and Microsoft Developer Support. Free support includes newsgroups monitored by our partners and development teams, online chats, and tutorials.
Windows CE 5.0: Windows CE ships with at least one board support package for each supported processor (x86, ARM, MIPS, SH4). See our complete list of supported BSPs for more information. One of the interesting aspects of Windows CE is the capacity for hardware developers, system integrators, and silicon vendors to extend the Windows CE catalog of components by adding support for their own reference boards, BSPs and drivers. Check our complete list of drivers supported by Windows CE for compatibility.
Windows XP Embedded: Windows XP Embedded ships with the same set of drivers as the desktop version of Windows XP Professionalthat's over 9,000 drivers available as individual components for Windows XP Embedded. The list can easily be extended through the Windows XP Embedded development tools. If you have a third-party driver for Windows 2000 or Windows XP, it can be directly imported into the Windows XP Embedded catalog by importing the driver's .INF file. With the .INF file imported and the component checked into the component database, you can use the new driver in exactly the same way as any other driver exposed in the development tools.
Each embedded system has its own requirements for user interfaces. In some cases, the embedded system may be headless, in which case the only user interface may be Web-based. Building HTML/DHTML-based user interfaces is extremely flexible and provides for a completely custom look and feel for your remote user interface. In some cases, an HTML-based user interface may also be appropriate for a headed device, in which case you can use the Internet Explorer 6.0 application or ActiveX control for the user interface of your device.
One thing to think about here is that in both Windows CE and Windows XP Embedded, the shell can look and feel just like a Windows desktop with a Start button, icons, etc. But in both cases, the Windows Shell can also be completely removed from the operating system. This gives you the ability to boot into your custom application. The end user of the device doesn't need to see any Windows user interface, won't have access to a desktop (since there isn't one), won't have access to the control panel (since there isn't one), and so on. You can develop an application to become the shell of your device. Windows XP Embedded ships with a number of sample shells, including Windows Explorer, Command Shell, and TaskMan Shell.
Training is available for both Windows CE and Windows XP Embedded. Windows XP Embedded training takes two days; Windows CE 5.0 training is available as a 5-day course. Check out the Windows Embedded Partners site to find your nearest training center.
We have more partners than you can shake a stick at - somewhere close to 2,500 in over 50 countries at the last count. Check out the Windows Embedded Partners site to find a product, service, or hardware partner to assist you with your next or current project.
What do SPOT, Windows CE, and Windows XP Embedded have in common? They can all be programmed using C# and a version of the Common Language Runtime (CLR). Windows CE and Windows XP Embedded also expose Win32, Microsoft Foundation Classes (MFC), and Active Template Libraries (ATL). So if your developers have knowledge of Windows programming using Win32, MFC, or ATL then they can be productive building applications for Windows CE and Windows XP Embedded. If your developers have managed application development experience then they can be productive on SPOT, Windows CE, and Windows XP Embedded. Plus, over six million developers worldwide are trained on writing code for the Windows platform. There are plenty of resources out there to assist you with your project.
Also interesting is the number of .NET Framework extensions being developed - just look at The Code Project and OpenNETCF.org. Plus, engineers can easily be moved from a Windows CE project to a Windows XP Embedded project, because they already know how to program on one of the platforms.
This is almost the same as the previous comment. If you have engineers that already know how to program on one Windows platform then they already know how to write code for Windows CE or Windows XP Embedded.