WinCE
Windows CE是微软为嵌入式设备打造的通用操作系统,不象其它的微软 Windows 操作系统,Windows CE 并不是代表一个标准的相同的对所有平台适用的软件。为了足够灵活以达到适应广泛产品需求, Windows CE 采用标准模式,可以通过设计一层位于内核和硬件之间代码来用设定硬件平台,从而使产品定制。
It’s a 'hard' real-time, pre-emptive, multi-tasking operating system built from the ground up to be a truly componentized OS. 'Windows CE' as a product consists of two main things: Platform Builder and a very large collection of software bits ... it is *not* is a finished OS.
Windows Mobile
Windows Mobile 是 Microsoft 用于 Pocket PC 和 Smartphone 的软件平台。Windows Mobile 将熟悉的 Windows 桌面扩展到了个人设备中。
PocketPC和Smartphone
Smartphone 主要是在格式和使用两方面作为一种电话设备而设计的。它经过良好的微调,可以用于发出和接收呼叫,并且还可以作为消息处理设备。Pocket PC 主要是作为一种小型个人计算机而设计的,对于查看和管理数据与增强消息处理而言很不错。某些 Pocket PC 设备也具有电话功能。
So what is Windows Mobile?
The collection of bits is a superset of any one OS. For example there are multiple user interfaces, two browsers, lots and lots of different processor support packages. These 'bits' come in different flavours, some are shipped as a binary DLL ready for deployment, some are partially completed components in the form of .LIB files and some components ship as source. There are lots and lots of bits. Not all are required to make a running OS, intact some are mutually exclusive. That’s where Platform Builder comes in. When all the components are selected Platform Builder is then used to 'build' your selected OS. This phase is a bit more like an assembly line rather than a traditional code build because it’s more about linking LIB files together and putting the right DLL's in the right location. When the OS is built Platform Builder then morphs into an OS debugging environment allowing the developer to deploy the OS image to a remote embedded computer or to an emulation environment and then step into the OS and debug right down to the kernel and see what’s going on. Windows CE is great for developing bespoke, embedded OS's because it can be tailored to match the exact hardware available keeping HW and SW costs low, but it causes some interesting problems. Let’s say you, as a software dev, want to build and sell a new software widget for all Cow Milking Machines (CMM's). There are two manufacturers of these machines but both use Windows CE so you go ahead and write your wizzy new widget with a nice UI and using web services. It works fine on the first CMM but just wont fly run on the second because the manufacturer hasn't included a UI or a network stack! How could you know? Who was at fault? There is no way to know unless you get an SDK from the device manufacturer, but even then it doesn’t make sense to maintain two code bases, one for each CMM system. Ideally what’s needed for widely distributed systems such as a PDA is to enforce a fixed set of features and functions. And that is exactly what Windows Mobile does.