Windows CE OAL and Driver Programming

OAL and Driver Programming teaches how to port Windows CE to a new hardware platform.  This task-based course teaches the architecture of Windows CE followed by a series of lectures that bring the student from writing a boot loader program to bringing up the kernel and writing the device drivers.  The final day covers a variety of topics of interest to developers such as optimizing video drivers, writing file system drivers, writing a Windows CE shell and profiling a Windows CE system.

Introduction to Windows CE

Although part of the Windows operating system family, Windows CE has a unique history and design.  This section introduces Windows CE and provides background for the remainder of the class.  Coverage includes the history of Windows CE, its general design concepts as well as an overview of the design and development process for companies using Windows CE.

Windows CE Architecture

The Windows CE kernel implements a subset of the Win32 API, but its internal design is completely different from any other Windows operating system.  In this section, the internal architecture of Windows CE is presented and how it affects application development.  The standard Windows memory API is also discussed with special emphasis on how embedded programs have to treat memory management differently from standard PC applications.

Bringing up the Hardware

This section starts with a discussion of suggested debugging hardware that is helpful for bringing up Windows CE.  Following the hardware discussion, this section covers how to write a boot loader for your system.  Boot loaders, while not absolutely required for Windows CE development provide a helpful foundation for the remainder of your Windows CE port.  The boot loader also is a helpful place for debugging routines that are required by the kernel.

A Tour of the Platform Builder

The Platform Builder is the tool used to port Windows CE.  This huge tool, delivered on almost a dozen CD ROMs, contains a huge amount of example source code that is quite useful for developers interested in learning how Windows CE works.  This section reviews the Windows CE build tree to show how the directory structure is organized and what useful source code is available.

Bringing up the Kernel

The first step of porting the operating system is bringing up the kernel.  Bringing up the Windows CE kernel can be surprisingly easy if you know the proper technique.  This section teaches how to leverage work done in the boot loader and the sample code provided with the Platform Builder to accelerate the porting of the kernel.

Windows CE Device Drivers

Windows CE device drivers have a completely different architecture than drivers under Windows XP.  This section introduces the Windows CE driver architecture, from their required exported functions to how they are loaded by the system.  Techniques for tuning and extending device drivers are also covered.

Configuring the System

One of the more challenging issues with creating a Windows CE build is getting developers to be able to create identical builds on different machines.  This section covers how to manage the operating system build process for custom configuration and consistency in builds.  This section also covers how to configure the contents of the default Windows CE object store that appears after a cold boot.

Windows CE Video Drivers

Video drivers are often thought of as mysterious and difficult drivers to write.  Fortunately, Windows CE video drivers can be written quickly and efficiently if the right technique is used.  In addition, the Video driver is the driver that has the largest impact on performance of a Windows CE system.  This section covers how to write a video driver as well as how to tune it for optimum performance.

File System Drivers

File system drivers are often needed in Windows CE systems for non-volatile storage.  This section covers how to write a file system driver for Windows CE.  Included is coverage of both block mode drivers for low level IO as well as file system DLLs that are used to implement a file system.

Profiling Windows CE Systems

Windows CE systems must be tuned to get the best performance from the least amount of hardware.  This section covers how to profile your system to understand where it is spending cycles executing code.  Included is coverage of the Monte Carlo profiler, the Kernel Tracker, and other profiling and benchmark tools provided in the Platform Builder.

Writing a Windows CE Shell

While the Platform Builder provides a number of different shell options, often in an embedded environment, a custom shell must be designed for the situation.  This section covers how to write a shell for Windows CE.  This coverage includes how to use the little documented functions to integrate your shell tightly to the operating system.

 
© Copyright 2003. Boling Consulting Inc.