This year is the 10th year that Windows CE has been shipping ,the first released device running Windows CE 1.0 was the Casio A10 PC Companion (also known as the H/PC or hand held PC), this device bristled with features including 2MB Ram and 4MB Rom! - the device needed to be connected to your PC using a serial connector to sync data with your desktop PC, now, the majority of Windows Mobile 5.0 based devices are data connected devcies (using GPRS/CDMA/WiFi) that don't even need the PC to sync their e-mail and can always be up to date using push e-mail through the Messaging and Security Feature Pack for Windows Mobile 5.0.
Windows CE 1.0 shipped only in H/PC devices, this wasn't available for general embedded development, it wasn't until 1998 that Windows CE 2.0 shipped as the ETK or Embedded ToolKit - this was a plug in to Visual C++ 5.0 - the build environment was purely command line based, the debugger was WinDBG (sometimes known as Wind Bag).
With Windows CE 6 we're shipping our third kernel version - the first was Windows CE 1.0 through Windows CE 2.12 - this could be considered to be a soft-real-time kernel (if there is such a thing) - the second kernel update came with Windows CE 3.0 where hard-real-time support was added to the operating system - this kernel has been used with Windows CE 3.0, 4.0, 4.1, 4.2, and Windows CE 5.0. Windows CE has had some hard coded restrictions on the number of processes and the amount of virtual memory per process (32 processes, and 32MB VM space per process) - the following excellent Advanced Memory Management article by Doug Boling explains some of the limitation of living inside the 32MB VM space.
With Windows CE 6 we're breaking the 32/32 limit and now supporting 32K processes and 2GB virtual address space per process - and at the same time keeping with some of the core concepts for Windows CE - small footprint, hard real-time, componentized, supporting multiple processor architectures.
The tools are also updated (especially when compared with Windows CE 2.0!!) - Windows CE Platform Builder is now a plug in for Visual Studio 2005 - this gives you one place to develop your operating system images and also write your managed or native code applications for the operating system.
I will highlight some of the tools and operating system changes over the coming days and weeks (there's a lot to cover!) - one of the cool changes that's almost hidden is the new catalog structure - previously, the catalog was hosted by a .MDB file (Access database file), all catalog items needed to be 'checked in' to the catalog using the Platform Builder IDE (File | Manage Catalog Items, not ideal when working with source control systems - with Windows CE 6 the catalog is decentralised, when Platform Builder starts the catalog is constructed 'on the fly' by enumerating WinCE600 folders - take a look at the image below (click to expand) - this is a view of the new ARMV4I emulator for Windows CE 6 BSP folder - note that the BSP folder contains a "Catalog" folder, which then contains a PBCXML file (Platform Builder Catalog XML file).
The really neat thing about this is that you can have a developer working on a driver or application, they sync this (with the appropriate catalog item) to their source control system, you "check out" and sync the driver/application on your development PC, refresh the catalog and use the component (notice the highlighted "refresh" button on the Catalog Items View below).
If you have your own catalog items to add into the list you may want to consider placing these in \Wince600\public\ThirdParty\Catalog - note that the ThirdParty folder doesn't exist by default.
- Mike