|
Preface
With Windows CE, Microsoft is extending the
franchise to televisions, telephones, and other
"intelligent" devices that can incorporate cheap,
powerful, 32-bit microprocessors and communicate
with one another. This book is a survey of the
Windows CE operating system---its architecture,
some design details, and ways to think about
it---in the words of the Microsoft developers who
created it. If you are an embedded systems
developer, Win32 programmer, or entrepreneur, you
will benefit from the instant expertise to be
gained from their tutorials.
I spent a year and a half with the Windows CE
team, writing developer documentation, sample code,
and white papers, then took my video camera or tape
recorder around and asked the developers to explain
their piece of the system. Sometimes I said,
"Imagine that you are explaining the architecture
to a new hire who will be taking over your code." I
basically asked variations of three questions:
- What is new or different about the Windows CE
design compared to other Windows operating
systems?
- What parts of Windows CE can other developers
replace, customize, or configure?
- Where have developers been asking the most
questions?
I then edited and arranged the interviews into a
sequence that provides a workable survey of the
entire system. Every one of the chapters can be
expanded into a complete book, but I wanted to
produce a single book that you can read on a
cross-country plane flight. By the time you pick up
your luggage on the other coast, you will
understand the Windows CE vision and know where to
find more detailed information.
Many books in Microsoft Press’s
Inside series describe new programming
interfaces, but Windows CE is based on the
existing, well-known Win32 programming interfaces,
and dozens of excellent introductory books and
training programs are already available. (Even the
new programming interfaces unique to Windows CE are
already featured in
The Windows CE Programmers’ Guide,
and Doug Boling’s
Programming Windows CE. Accordingly,
this book focuses on the vision and architecture of
the system.
About the approach to this book: I like two
kinds of computer books, those that are concise,
and those that reveal the personalities of the
developers. The Kernighan and Ritchie
The C Programming Language and Helen
Custer and David Solomon’s
Inside Windows NT fall into the first
category. The passages about
the Microsoft developer in Fred Moody’s
I Sing the Body Electronic fall into the
second category. With this book, I tried to achieve
both concision and personality, and employed
oral history as the technique to get there.
This book aims for a balance between solid
technical information and letting the developers
tell their stories. The title
Inside Microsoft Windows CE suggests a
blend of system architecture details and a look at
what it is like to be inside a development team
working on a new Microsoft OS.
Overall, the book captures the developers’
personalities with only a slight additional cost:
it could have been more terse, but preserving the
context and integrity of each interview meant
allowing some redundancy. On the other hand,
because I did eliminate almost all of the
redundancy, I am obliged to offer a few impressions
from my 50 interviews and 18 months behind the
scenes with the Windows CE team:
- Nearly every interview started with a recap
of overall product goals before moving to the
architecture of an individual area. The same
product vision was repeated, almost verbatim, in
interview after interview. Also, nearly every
team member recited a genealogy of Microsoft
product teams leading to the Windows CE team
(which usually included one of the predecessor
teams, WinPad or Pulsar). Many expressed a strong
and deep sense of loyalty, even to teams long
since disbanded.
- People who are not inside Microsoft
can’t fully appreciate the fierce rivalries
and pitched battles that take place within the
company itself. I spoke with the survivors on
both sides of three major design wars. These
stories, told to me independently by many
different people, shared underlying themes: the
importance of each individual contributor and the
belief that each individual should take risks and
compete for his or her vision.
- At some point almost every developer,
unprompted, tempered a discussion of a successful
design by mentioning tradeoffs or even initial
failures or flaws in their work that had to be
corrected. This honesty and humility is a trait
that I appreciate and often find in
engineers.
- While oral history can accurately portray
team members' perceptions, it can also provide
conflicting and inaccurate accounts. I contacted
the Intel Corporation and the Microsoft
Corporation Legal department to obtain official
statements regarding the termination of the
WinPad project, but they were either unwilling or
unable to provide these details before the book
went to press. The material in this book,
therefore, cannot be viewed as a complete and
objective portrayal of the WinPad project. It
must instead be interpreted only as a subjective
description that explains the team's motivation
to design Windows CE as a portable system.
The development team was articulate and
engaging. I have tried to preserve the "sleazy
hacks," the "weird and complex beast," "the civil
libertarian palette model," the "rock, paper,
scissors arrangement," "the unified field theory
people," "Roland’s rule of thumb," "the
beautiful scenario," "Yoo-hoo, HTML control," and
the many other vivid phrases that embody the spirit
of this important new operating system.
About This Book
Chapter 1, Setting the Stage, introduces
the goals of the development team by walking
through a proposed mission statement: Windows CE is
a new, portable, real-time, modular operating
system that features popular Microsoft programming
interfaces and that is supported by tools that
enable rapid development of embedded and dedicated
systems. Chapter 1 also helps explain the context
in which team members worked by describing the
roles on a typical Microsoft development team.
Chapter 2, An Overview of Windows CE,
offers a longer high-level discussion of the
embedded markets and Microsoft’s strategy
with Windows CE. Windows CE assumed its current
form as a modular operating system, suitable for a
variety of different devices, with the 2.0 release.
Each subsequent release offers a set of tested
configurations. This chapter explains the
componentization model and offers a block diagram
of a system that includes all of the available
components. Subsequent chapters examine these
individual blocks in detail.
Chapter 3, The Kernel, describes the
innermost part of the operating system. The kernel
supports the standard Win32 process and thread
model and provides round-robin, priority-based
thread scheduling. This chapter also describes the
virtual memory system and the use of protected
server libraries (PSLs) to enhance performance and
minimize memory use. The kernel is written to
provide low latency times, thus making it
appropriate for use in real-time systems.
Chapter 4, Data Storage, describes the
three components of the object store: the file
system or systems, the registry, and Windows CE
property databases. Many Windows CE devices do not
offer a physical hard drive but instead provide
persistent storage in RAM built on top of an
underlying subsystem, called the internal heap.
This chapter describes the heap in detail,
including its built-in compression and its support
for transactioning, which ensures data integrity on
low-power devices. It also describes how embedded
developers can add their own extensible file
systems.
Chapter 5, The GWE Subsystem, describes
the graphics, window manager, and event manager
subsystem, subsets of the standard Windows
Kernel32, User32, and Gdi32 libraries. The chapter
also describes the Windows message-based
programming model from the point of view of the
Windows CE components that manage user
applications. It shows how the GWE design separates
event management and graphics, allowing the
smallest possible system size while still
supporting Windows programs---even on devices
without display hardware.
Chapter 6, Porting to New Hardware, dives
down to the lowest levels of the system to explain
the porting layer and the device driver models that
tie Windows CE to the device hardware. This chapter
explains the OEM Adaptation Layer and the native
and stream interrupt device drivers. This chapter
also walks through the interrupt model, showing the
interactions between the kernel, the interrupt
service routine (ISR), and the device
driver’s interrupt service thread (IST).
Chapter 7, Communications, describes the
complete set of options available to communicate
with the desktop, the Internet, and other Windows
CE devices. Windows CE supports a wide variety of
Win32 communication APIs, supporting modems,
networking cards, and serial and infrared
communications. The block diagram shows the
relationship between the communications protocols
and the standard higher-level Win32 programming
interfaces supported by Windows CE. This chapter
also describes the desktop synchronization model,
ActiveSync, and Mobile Channels, a high-level
scripting interface for the Palm-size PC that is
built on top of the other communications
interfaces.
Chapter 8, User Interface and Shell
Services, provides an overview of the
challenges in user interface design for new
information appliances and offers suggestions for
designers working with smaller input and display
areas. Windows CE supports a variety of shell
options, ranging from custom minimum shells
produced independently by embedded developers, to
shells that are similar to the Microsoft Windows 98
look and feel. Some devices, such as the Auto PC
and Palm-size PC, support alternate forms of user
input, such as voice input and handwriting
input.
Chapter 9, Testing Your Embedded System,
describes some of the challenges facing developers
building embedded systems and applications,
especially the new challenges that differ from
those faced by developers of the traditional PC
platform. The Microsoft software engineers who
managed the Windows CE QA efforts provide
suggestions on how to approach testing, from
specific practices and tools through management and
communications strategies. The device driver tests
and test harness developed by the QA team are
provided to embedded developers in the Device
Driver Test Kit (DDTK).
Chapter 10, Development Tools, describes
the wide variety of development kits and tools
offered for Windows CE and provides overviews of
the programming interfaces. The Windows CE
development kits build on standard Microsoft IDEs,
such as Microsoft Visual C++, adding emulation and
remote debugging tailored for Windows CE devices.
The tools support Win32, COM, ActiveX, MFC, ATL,
Visual Basic, and Visual J++ programming.
Chapter 11, A Look At Some Windows CE
Configurations,, looks at how Microsoft and
other embedded customers are configuring Windows CE
for their markets. In addition to discussing
Windows-based terminals, the Sega Dreamcast home
video game system, the Auto PC, the Palm-size PC,
and the Handheld PC, this chapter notes that
embedded developers are creating new devices and
putting applications on existing platforms to
create vertical or dedicated devices based on
Windows CE.
Chapter 12, The Future of Windows CE,
taps the experience of some of the Windows CE
group’s senior managers (and other senior
Microsoft architects) to discuss future technology,
future user interfaces, and future devices based on
Windows CE.
[Previous] [Next] [Top]
From
Inside Microsoft Windows CE, (c) 1998,
John Q. Murray. Published by Microsoft
Press. All Rights Reserved.
|