As an embedded guy, I deal mostly with C code (although recently, I’ve been up to my eyeballs in Assembler *sigh*). In my current job, I’m doing bare metal programming, without any Operating System.  I also do .NET programming in C#, and it is so much more productive than your typical embedded environment.  Recently, an oportunity arose for me to investigate the suitability of Windows CE for a particular embedded application.

Imagine my excitement!  Windows CE 6.0 could provide me with a Visual Studio 2005 environment, the code could be done using the .NET Compact framework using C#.  To feel alive again!  Unfortunately, my bubble soon burst.  What went wrong?

I believe that windows CE is inherently targeted towards mobile or end-user devices.  This is reflected in the processor architectures supported: ARM,  x86, MIPS (why? it’s all but extinct!) and SH4 (a niche player).  No PowerPC or 68K processors.

ARM is king of the embedded space.  This is mostly due to its ubiquity in telephone sets.  I really like the ARM architecture, it has tons of vendors.  Unfortunately, from asside from the Intel IXP4xx serie, the support for high-speed connectivity (10/100/1G Ethernet) and large data movement is limited.

x86 is a proven architecture, but generally speaking, the number of peripherals provided on the chip is rather limited (compared to other embedded processors).  as a general computation platform, it’s ok, but if you have lots of I/O pins, many peripherals, etc… it is not the best choice.

The fact is, when talking about embedded devices which are not “consumer” oriented, PowerPC rules!  It has such a diverse offering of peripherals and processors for all occasions.  From sub $10 parts all the way to $200+.  And for the particular application I am looking at, it’s a natural match.  And I can’t use Windows CE and the VS2005 environment :-(   I am bummed.

One of the interesting tid bit I can across during my research:  Windows CE 6.0 supports up to 32,000 processes.  Hello?!  Anybody home?  Who in their right mind would consider this a feature?  Any designer doing an embedded application with more than 100 processes should have their head examined, 500 or more processes, they should be shot! This is what happens when maketing is in charge!

One simple question for Microsoft:  What platform did you use to test that 32,000 processes are supported?  Intel Duo with 16G of RAM?

Yes, I am just a bitter designer that has been deprived of a new toytool.