I have been trying to figure out how Windows CE, Windows Mobile and Windows Embedded and their respective SDK's work. A while ago I did similar research, this time the need came up after trying some of the development tools offered by MS.
Found a couple of good articles at WindowsForDevices that might shed a good chunk of light on this mess. Notice that these articles are about version 5 of CE/Mobile. A newer version of Windows Mobile, the 6.0 (still based on Windows CE 5.0) just came out.
But there is also a newer version of Windows CE, the 6.0. Confused already?
There aren't many choices out there so Visual Studio 2005 (minus SP1) seems like the best bet, from WindowsForDevices:
"Windows CE's platform-level development tools have converted into plug-ins for Visual Studio 2005 [also known as Platform Builder], resulting in a single tool that can be used for configuring, building, downloading, debugging, and testing the operating system, as well as for writing both native (Win32, MFC, ATL, WTL, STL) and managed (C#/VB) applications."
Back to basics
But before you get your hands dirty the best place to start to understand the territory better is this comparison between Windows CE and Windows Mobile, article by Mike Hall. Then following the thread this other post, where Mike differentiates between .NET MicroFramework and Windows CE.
Notice it says Micro, not Compact Framework. MicroFramework started as .NET Embedded with its TinyCLR, work developed originally by the SPOT (from Smart Personal Objects Technology) initiative.
If you got hardware skills on the side, check this development board from SJJ Embedded Micro Solutions and Emac Inc.
About CE Mike says:
"The O/S exposes Win32, MFC/ATL, and managed application development (C#/VB) models."
On the other hand, the .NET MicroFramework runs on ARM CPU's. The MSN Direct Watches also known as SPOT are good examples of the .NET MicroFramework use.
".NET MicroFramework contains a tinyCLR (a stripped down Common Language Runtime) that acts as a mini kernel to run managed [developed only with C#] code applications. It supports low-end embedded processors [like ARM7's], does not require an MMU (memory management unit), and only requires around 300KB of RAM to run."Check this article from Sys-Con about development for the MicroFramework. It highlights some of the unsupported features found at the .NET CompactFramework:
"TinyCLR has no support for WinForms, database access, files, or XML"But in the other hand, to write code to handle hardware interrupts seems quite easy in this environment as showed in the initial post from Mike referred above.
Back to the SDK question
At this point it is possible to make sense of this article about the different SDK's from last year. And this most recent one about available tools for Windows CE 6.
And why this now? Well, GPS and LBS support and a communication layer (MSN Direct Networks) were recently added to the .NET MicroFramework with hardware developed in conjunction with GPS maker, Pharos.
A UMPC or even a dedicated PDA-based unit might be too much for simple requirements of a PND (or Personal Navigation Device) or as GPS units, plus its map and POI search packages runnings in cars are usually referred.
Daylight Savings on Windows Mobile devices
If you run Mobile 5 (which is based on Windows CE 5) and depends on the shift to happen as usual beware that according to this post:
"Windows CE 5.0 changes the time on the first or last Sunday of the month. Windows CE 5.0 does not change the time on the second or third Sunday of the month."There, the Y2K7 bug.