Windows CE Summary
scavenged and summarized by Walter Bell (wbell)
"CE" doesn't represent a single concept, but rather implies a number of Windows CE design precepts, including "Compact, Connectable, Compatible, and Companion." '
System (as of v2.0)
A clean slate implementation of Windows designed to run on many different 32-bit processor architectures.
+ byte ordering with the operating system seems to be required to be intel (all display buffers are in intel byte order, etc,)Comes in 3 flavors:
- Auto PC (for those of us whose car stereo isn't nice enough)
- Handheld PC (small Palm Pilot like devices)
- Palm-Size PC (the small laptop category)
Operating system is 'componentized', that specific manufacturers can omit or replace portions of the operating system as they see fit.
- Most operating system functions are stored uncompressed in ROM to reduce RAM footprint.
- Version 1.0 documentation gave specifications on memory consumption of various system components. This information seems to be missing, or hard to find for version 2.0
Display options range from no display to alphanumeric displays up to 32-bit color.
- Provides many different levels of GDI that can be included with the OS for display; from basic line/point/bit-blitting operations to the full windowing subsystem.
Input can be via the conventional keyboard/mouse setup, or via pen input with gylph or natural stroke character recognition
Windows CE is a Unicode environment (multibyte characters)
Windows CE provides a virtual memory system. Windows CE supports a virtual address space of 2 GB, with each process accessing its own 32 MB of virtual address space
Up to 256 file systems can be loaded on a single device. All file systems must be compressed. Currently implemented are the 16-bit and 32-bit fat file systems. No file can be bigger than 16 meg.
Windows CE is a real-time operating system:
(From http://www.microsoft.com/windowsce/hpc/developer/techpapers/realtimesys.asp)
- Windows CE is multithreaded and preemptive.
- Windows CE supports eight levels of thread priority.
- Windows CE supports a system of priority inheritance that dynamically adjusts thread priorities to correct priority inversion.
- Windows CE supports predictable thread synchronization mechanisms, including such wait objects as mutex, critical section, and named and unnamed event objects, which are queued based on thread priority. Windows CE also supports access to system timers.
- The OEM can control interrupt handling performed by the system, as the OEM implements the ISRs and ISTs that make up the interrupt processing software.
- The OEM has complete control over all IRQs mapped to interrupt IDs and its associated interrupt handling software, the ISR and IST. Profiling tools and utilities are available to record the maximum time required to process an interrupt.
- Interrupt latency is predictable and bounded. The upper bound is the sum of the amount of time spent in the kernel while preemption is turned off; task switching time; and the amount of processing time required by the ISRs and ISTs implemented by the OEM.
- The time for every system call (KCALL) is predictable and independent of the number of objects in the system. The system call time can be validated using the instrumented kernel.
Compatibility
Supports a subset of well-known Win32 Api that helps in porting applications from windows environment, which has much support for developers.
- Provides basic data synchronization services to windows based clients with ActiveSync in the Windows CE Services.
- No application based power management support services. Applications are recommended not to use
unnecessary CPU cycles because of the power consumption implications, but seem to provide no way to know about power conditions. When power is low, the user is notified via a dialog box, but the application is not. The user is
expected to take appropriate action that data is saved in applications and does not get lost.Gives good support for standard network communication protocols.
- Can share drives / printers with conventional PCs.
- Printing is a sore subject though, because although printers can be found and enumerated over the network, no facilities are provided to get your document in a printable form for a particular printer. (no printer drivers, no printer queues, etc.) Seems like a big step backwards, and will turn into a memory consumption nightmare as individual programs take it upon themselves to provide printing facilities.
Supports a large amount of hardware from flash memory to smart cards, modems, sound cards, etc. And the list is sure to increase.
Many Microsoft technologies are supported, COM/ActiveX, etc.
Rumor has it that Java might be supported. Couldn't confirm it.