There
are several Windows Mobile variants, and the most common are Windows
Mobile 6 Classic, Windows Mobile 6 Standard, and Windows Mobile 6
Professional. The primary difference is that Standard devices do not
have a touchscreen, whereas the Professional and Classic variants do.
Classic devices may lack cell phone functionality; however, many have
Wi-Fi. Windows Mobile includes Mobile Office and Outlook, Pocket
Internet Explorer (IE), Windows Media Player, and the .NET Compact
Framework 2.0. A robust application ecosystem has developed around
Windows Mobile and users can choose between thousands of applications
currently available.
Windows Mobile’s user
interface and platform API are similar to the desktop variants of
Windows, but those differences are only skin deep. The user interface
was originally modeled on Windows 95 and even includes a “Start Menu”
used to access applications and device settings. Windows Mobile 6.5
added a more touchscreen friendly launch screen, this was the first
significant UI change in several versions. To program the device,
developers can use a Win32-like API. The Win32 API was originally
derived from the Windows 3.0 API and has been the primary API for all
versions of Windows NT, including Windows XP and Windows Vista. The APIs
and documentation are freely available to developers; however, the
platform is not considered fully open because the operating system must
be licensed from Microsoft. This licensing is done by device
manufacturers on behalf of the end user, and users receive a license
when purchasing a Windows Mobile device.
Relation to Windows CE
At the heart of Windows
Mobile 6 is Microsoft’s Windows CE platform. Windows CE is a
general-purpose embedded platform usable as a base for embedded devices,
including cash registers, hand scanners, and industrial assembly
robots. Optimized for devices with limited memory, CPU, and storage,
Windows CE uses as few resources as possible. Because Windows CE targets
so many different embedded uses, platform
builders have a large amount of control over which operating system
components they decide to include. These components (for example, Pocket
IE, DCOM, and Microsoft Mobile Office) are the building blocks for the
platform. Platform builders mix and match these components to create
versions of Windows CE containing exactly what is required.
Windows Mobile is a
Microsoft-assembled distribution of Windows CE containing the drivers
and components necessary to serve as a mobile phone platform.
Additionally, Microsoft has placed artificial barriers on the form
factors and capabilities supported by Windows Mobile devices. By
standardizing the components and form factors available, Microsoft
enables developers to target all Windows Mobile devices. Because Windows
Mobile is more specialized than the general-purpose Windows CE, Windows
Mobile does not support all of the functionality possible in Windows
CE.
Windows Mobile devices target
the ARMV4 and ARMV4I platforms exclusively. However, Windows CE can
support alternative platforms, including MIPS, x86, and Super-H.
Depending on mobile processor innovations, Windows Mobile may be adapted
to these platforms in the future.
The most current Windows CE
version is Windows CE 6.0. This version contains a significant
re-architecture of the kernel designed to support the larger processing
and memory capabilities of modern portable devices. Windows Mobile 6 is
still based on the Windows CE 5.2 kernel. This confusing nomenclature
can be blamed on the parallel development timelines for Windows Mobile
6.0 and Windows CE 6.0. The CE 6.0 kernel became available late in the
Windows Mobile 6.0 development cycle and it was too risky to adopt the
unproven kernel. Because a Windows Mobile operating system based on
Windows CE 6.0 has not yet been released, the kernel-level descriptions
contained within this article describe Windows CE 5.2. Microsoft has
stated that Windows Mobile 7 will be based on the Windows CE 6.0 kernel.
Device Architecture
Windows Mobile devices,
regardless of hardware, implement a layered OS design, with Microsoft
providing the majority of software components and device manufacturers
supplying the driver software required to interface with the device’s
hardware. Mobile network operators may add additional hardware, but it
is not required. Figure 1 illustrates the layout of a Windows Mobile device.
Hardware Layer
The hardware layer
represents the actual physical hardware on the device. Windows Mobile is
agnostic to this layer and knows nothing about it except as
capabilities exposed through the OEM Abstraction Layer (OAL).
OEM Abstraction Layer (OAL)
A
main difference between PC platforms and Windows Mobile platforms is
the introduction of an OEM Abstraction Layer (OAL). This layer contains
the boot loader, platform configuration files, and drivers used by
Windows Mobile to communicate with the device’s hardware. The OAL is
what allows Windows Mobile to run on such a broad range of hardware
platforms. Each device has a device-specific OAL that drives the
device’s individual hardware. The OAL accepts standard messages from the
kernel and maps these to messages understood by the hardware. In this
way, the OAL is similar to the Hardware Abstraction Layer (HAL) that
exists in Windows NT. To simplify OAL creation, Microsoft has released
the Production Quality OAL. This library provides a base OAL
implementation into which OEMs can more easily add device-specific code.
The OAL’s bootloader loads the
OS image from storage and jumps to the OS start point. A bootloader is
not required, and the same functionality can be integrated into the
device’s reset process.
Kernel Layer
The Kernel Layer manages
the overall system and physical resource allocation. The kernel provides
standard services to user applications and interfaces with the OAL to
manipulate hardware. In addition to nk.exe, which is the main kernel
executable, several other critical services run within the Kernel Layer.
The Object Store is also implemented within this layer.
User Application Layer
The
User Application layer is where user or OEM installed applications
execute. Each application resides within its own address space and uses
kernel interface to control the device.
Device Storage
Storage on a Windows
Mobile device is very different from storage on a Windows desktop PC.
Read-only memory (ROM) and random access memory (RAM) exist on every
device. System files and OEM-supplied applications are stored within ROM
and cannot be modified while the device is running. RAM is divided into
two areas: memory used by applications and memory used by the Object
Store. Additional storage locations, such as a flash memory card, are
device specific and not required to exist.
The Object Store
The Object Store contains user
and system data and is a virtualized view of the device on top of the
file system and the registry. Contained within nonvolatile RAM, the
Object Store persists user data, even when the primary power to the
device is lost. This data is combined with system data when the device
undergoes a warm reboot. In this type of reboot, the device is reset, but all data is not wiped from the Object Store. A cold reboot or hard reset
is when all power, both primary and backup, has been exhausted. In
these cases, the Object Store reverts to the copy stored in ROM. The
Object Store appears as a file system within the device but is often
implemented as storage. Users and the systems can store data within this
file system.
ROM
All of the operating system
and OEM-provided files are stored within the device’s ROM image.
Generally, this ROM image is only flashable through OEM device-flashing
methods. ROM persists even when all power to the device has been
exhausted.