I will never use Windows CE or XP Embedded !!!

Recently remembered this post from Mike Hall's blog a while back (https://blogs.msdn.com/mikehall/archive/2004/12/22/331034.aspx).  Still a really good read...

I will NEVER use Windows CE or Windows XP Embedded !!!

That’s quite a strong statement, right ? – so why wouldn’t I use Windows CE or Windows XP Embedded ?

  • The operating systems are too big
  • There’s no support for real-time functionality
  • The operating systems are not secure
  • It’s too hard to configure an operating system for my needs
  • The tools are too expensive
  • Licencing costs are too high
  • There’s no support
  • There’s no driver support for my hardware
  • I don’t want my embedded device to look like Windows
  • There are no training materials available to assist me with my project
  • There are no partners to provide hardware, drivers, bootloaders, training
  • It’s hard to find engineers to work on my projects
  • It’s difficult to move developers from one platform to another.
  • There isn’t a Starbucks nearby

I think that just about covers it, there’s probably something I’ve missed off the list, and if you have something to add then let me know…

If the list above were true then 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 stlye deal with each of the perceptions in turn… (I have a feeling this is going to be a long post, so bear with me…)

Operating Systems are too big

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].

Windows CE minimum build size is approximately 200KB, a residential gateway image would be about 4MB in size, this includes support for wired and wireless networking, remote administration UI (web server), a "PDA" like image which includes the Windows like shell, networking, RDP, Internet Browser, Media Player, COM/DCOM etc.. would be around 18MB - obviously this could be tuned for the specific application you are building.

Windows XP Embedded mimimum build size is approximately 5MB (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 40MB 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 Media Player, DCOM, RPC, Internet Explorer, then don't put them in your image!

No support for Real-Time Functionality.

I’m not sure why we get this one, Windows CE is designed to be a hard real-time operating system, the underlying operating system architecture is totally different to the Windows Desktop operating systems, take a look at the RTC Magazine article which discusses Windows CE real-time capabilities and the Dedicated Systems Performance Report for Windows CE 5.0

Windows XP Embedded is NOT a real-time operating system, but there are a number of 3rd party real-time extensions for Windows XP Embedded.

The operating systems are not secure.

 Windows CE 5.0 – you can totally lock down your operating system images to only run the code that you want on your system through implementation of OEMCertifyModule – Also, for Windows CE 5.0 all security features are turned on by default – take a look at the following article on WindowsForDevices 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 thing is that Windows CE architecture is different to the desktop, on the desktop operating system there are three core components that are linked by any executable code, Kernel32, GDI32, User32 – none of these components exist on 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 (and this means that desktop viruses, worms etc… won’t run on Windows CE).

Windows XP Embedded SP2 – ok, 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/worms that have attacked the desktop these exploit RPC, DCOM, and other open ports on a PC - with Windows XP Embedded SP2 you have all the desktop SP2 security updates which include Firewall (all ports except port 80 are turned off by default), plus the inclusion of support for No Execute and detection of buffer overruns (both are explained in an interview with Joe Morris from the XPE team) – and support for anti-virus software from companies like Computer Associates and Trend Micro

It’s too hard to configure an operating system image for my needs.

Windows CE – The operating system is componentized, the operating system development tool (Platform Builder) ships with a wizard to assist with the initial platform configuration, the wizard contains 9 platform configurations ranging from “Kernel only” (200KB), Residential Gateway, Internet Appliance, and WebPad, these can be considered to be starting points for your design, you can add or remove features from the platform workspace, for example 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 BSP’s, so it’s easy to configure, build, test, and debug the operating system – the tools also ship with 2.5 Million lines of “shared source” 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 XP Embedded 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 straight forward, since the underlying hardware is x86 and PC architecture then you can run a tool that analyzes your hardware and produces an XML output file that contains a listing of the hardware of 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.

The tools are too expensive

Ok, 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) , go here for more information – once you’ve evaluated the operating systems and tools (which run for 120 days, and the Windows CE tools ship with the same 2.5 million lines of source as the full product) you would then purchase the full products, which at the time of this posting are $995.

Licensing costs are too high

Exactly when do you need to start purchasing licenses for your embedded operating systems? – 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 are the operating system licenses ? – the following page shows the licensing costs for Windows CE and Windows XP Embedded (look towards the bottom of the page) – Windows CE has a “Core” license (which covers most of the operating system) for $3, and a Professional license for $16. Windows XP Embedded licenses are approx $90 per device. Again, note that you don’t need to purchase runtime 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 run for 120 days, then the full product is $995.

There’s no support

There are a number of ways to get support for Windows CE and Windows XP Embedded, this ranges from FREE support (notice the Free word being used yet again!), which includes newsgroups monitored by our partners and development teams, online chats through to training courses, partners that can assist with development, and Microsoft Developer Support – the complete list of support options can be found on this site.

There’s no driver support for my hardware

Windows CE – Windows CE ships with at least one BSP (Board Support Package) for each supported processor [x86, ARM, MIPS, SH4], a complete list of BSP’s can be found here – One of the interesting aspects of Windows CE is the ability for hardware developers, system integrators and Silicon Vendors can extend the Windows CE catalog of components to add support for their own reference boards, BSP’s, and drivers – for a complete listing of drivers supported by Windows CE look here.

Windows XP Embedded – Windows XP Embedded ships with the same set of drivers as the desktop version of Windows XP Proffesional, that’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 3rd party driver for Windows 2000 or Windows XP this can be directly imported into the Windows XP Embedded catalog by importing the drivers .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.

I don’t want my embedded device to look like Windows

Each embedded system has it’s own requirements for user interface, in some cases the embedded system may be headless, in which case the only user interface may be through a web based UI, building HTML/DHTML based UI is extremely flexible and gives the ability to have a completely custom look and feel for your remote UI – and in some cases an HTML UI 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 – on both Windows CE and Windows XP Embedded the shell can look and feel just like Windows desktop, Start Button, icons on the desktop, etc… But, in both cases the Windows Shell can be removed from the operating system completely, this gives you the ability to boot into your custom application, the end user of the device doesn’t need to see any Windows UI, won’t have access to a desktop (since there isn’t one), no 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, Windows Explorer, Command Shell, TaskMan Shell).

There are no training materials available to assist me with my project

Training is available for both Windows CE and Windows XP Embedded – Windows XP Embedded training covers two days, Windows CE 5.0 training is available as a 5 day training course – check out the Windows Embedded Partners site to find your nearest training center

There are no partners to provide hardware, drivers, bootloaders, training

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 web site to find a product, service or hardware partner to assist you with your next or current project.

It’s hard to find engineers to work on my projects

What do SPOT, Windows CE, and Windows XP Embedded all 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, MFC (Microsoft Foundation Classes), ATL (Active Template Libraries) – 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, there are over 6 Million developers world-wide that are trained on writing code for the Windows platform – there’s plenty of resource out there to assist you with your project.

Also interesting is the number of .NET Framework extensions being developed, just look at CodeProject and OpenNETCF.

Plus, engineers can easily be moved from a Windows CE project to a Windows XP Embedded project since they already know how to program against one of the platforms.

It’s difficult to move developers from one platform to another.

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.

There isn’t a Starbucks nearby

ok, so it sucks to be you!  

There’s not much I can do about that one, perhaps you should consider ordering Starbucks coffee online?

So, why wouldn’t you use Windows CE or Windows XP Embedded ?