Features of Commercialization ready WM BSP
1. Boot loader that conforms to the new Image update model
Image Update is the new model for updating operating system (OS) and/or system software that supports both NAND and NOR flash technologies. It effectively provides a file system containing a number of packages. Packages are dynamically relocated rather than fixed in memory, and can be added, updated, or resized as part of the update process without the need to re-flash the device.
* Flash Memory Segmentation: Flash Memory must be segmented up to the Initial Program Loader (IPL), master boot record (MBR), Update Loader (ULDR), NK partition, IMGFS partition, and persistent User Store partition. OEM boot loader can be used during development and factory testing, but must be removed from the Windows Mobile –based device before shipping it.
* Persistent Update Flag: This flag must be implemented for Image Update to ensure failsafe recovery if power is lost during the update process.
* There are some restrictions on capability to modify flash memory. The IPL must hardware-lock the flash memory and ULDR is the only component that can modify flash memory. At least 256 KB of NK partition, 3 MB of IMGFS partition & 5 MB of unpopulated persistent storage should be reserved for Image growth
Each OEM package must have unique GUID which should not be modified once defined.
A Windows Mobile-based device that has external storage must be able to install updates directly from the external storage media using registry key HKEY
LOCALMACHINE\System\ImageUpdate\UpdateBin\PathMapping to map the mount point between the OS and the ULDR if the mount points differ.
2. Production Quality OAL components
The production-quality OEM adaptation layer (OAL) available simplifies and shortens the process of developing an OAL. It provides an improved level of OAL componentization through code libraries, directory structures that support code reuse, centralized configuration files, and a consistent architecture across processor families and hardware platforms.
The processor and hardware platform framework provided by the production-quality OAL enables to develop the most basic Windows CE kernel — a Tiny Kernel image — with little development effort.
The production-quality OAL model divides the original monolithic OAL into a collection of modular libraries. Each library is a functional component within the OAL.
Although the library code's location depends on the scope of the hardware it supports, the code is grouped in the following categories:
* Common - Code that is not hardware-specific
* CPU family - Code that is unique to the CPU family
* Chip-specific - Code that is unique to a specific CPU or system-on-a-chip (SOC) model
* Platform - Code that is unique to a specific board implementation
Each library provides an external interface made up of functions and global variables that communicate between the other modular libraries and the OAL and the kernel.
The following is the collection of modular libraries available with the production-quality OAL model.
Boot Arguments Passes parameters from the boot loader to the kernel in a uniform way.
Cache Implements cache and translation look-aside buffer (TLB) operations.
Ethernet Drivers Implements Ethernet kernel independent transport layer (KITL) device drivers, which are implemented in the common library. The %
WINCEROOT%\Platform\Common\Src\Inc\Oalethdrv.h file contains prototypes for the Ethernet KITL device drivers. For information about the function prototypes, see %
WINCEROOT%\Platform\Common\Src\Inc\Oalkitl.h.
*Flash * Implements code for flash memory operations. The production-quality OAL implementation provides generic solutions for JEDEC-compliant flash memory.
Interrupt Implements interrupt processing.
*Interrupt Latency Timing * Implements ILT functions. This library usually requires
ILTiming to be enabled, as well as the Interrupt and Timer libraries.
*I/O * Implements bus address translation, reading bus configuration space, and I/O operations.
*IOCTL * Implements the table driver
OEMIoControl, which calls kernel functions from user space. It also implements some generic
OALIoCtlXXX functions.
*KITL * Implements debug communication over KITL.
*Log *Implements consistent logging in the OAL.
*Memory * Implements translation between physical and virtual memory in kernel address space.
*PCI * Implements PCI bus support in the kernel. It also implements simple PCI bus configuration functions intended to be used for boot loader and KITL.
*Power Management * Implements system suspend and resume operations. In most cases, power management is hardware dependent. For more information, see %
WINCEROOT%\Platform\Common\Src\Inc\Oalpower.h.
*Profiler * Implements OAL profiling. This library implements the OAL functions required for kernel profiling. For more information, see %
WINCEROOT%\Platform\Common\Src\Inc\Oalprofiler.h.
- Real-Time Clock * Implements functionality for real-time clock (RTC). For more information, see %WINCEROOT%\Platform\Common\Src\Inc\Oalrtc.h.
*Timer * Implements the system tick, or clock.
3. Board specific device drivers
Note: The list below outlines only the features that are most important for commercialization
Audio Driver
* Play sound on Key clicks (for Smartphone only)
* Must implement all waveform audio driver
APIs and all audio dependent driver functions
* Support MIDI file playback
* Wave-mixing / Simultaneous sound playback to play system notifications, alarms, phone rings etc
* Sound attenuation
* Sound calibration.
* Implement
WaveInOpen and
WaveOutOpen functions
* Voice notes & recording
Battery
* Supports advanced charging algorithm
* Supports interrupt based notifications for UI or Home screen update.
Display
* Direct 3D mobile driver & Direct Draw
*
ClearType Support for color Windows-Mobile based Smartphone
* Resolutions: 176x220 or 240x320
* Use GXDMA to map 176x220 frame buffer to a QVGA screen (letterboxed display)
* DMDO_0 should be configured for portrait orientation
Camera
* The encoder must be compliant to Microsoft DirectX Media Object (DMO) specification
Keypad
* Any Windows Mobile device with an integrated alphanumeric hardware keyboard must set the following registry key to prevent deployment of the soft input panel (SIP)
HKEY
CURRENTUSER\Software\Microsoft\Shell\HasKeyboard={0=false;1=true}
* The keyboard driver must send the following event when a keyboard key is pressed:
v
hevtKeyPressed = CreateEvent(NULL, /bManualReset/FALSE, /bInitialState/FALSE, TEXT(”KeyPress”));
SetEvent(v_hevtKeyPressed);
* Keyboard driver must support
MapVirtualKey functionality to enable support for after-market human interface device.
SDIO Driver
* The SD driver supports SD Host controller version 1.1 and 2.0 Hardware
* Supports SD Memory class driver and SDIO class drivers as Wi-Fi, BT, GPS
* Will use DMA to transfer data from/to the controller
USB Function
* RNDIS, Serial and Mass storage Function drivers on Version 1.1 & 2.0 Bus
* includes component & peripheral clock power management
* includes generic function bus driver for version 1.1 & 2.0 bus, with switching support
* survives repeated attach/detach and support soft connect/disconnect
* supports both PIO and DMA access of data sent to/from controller
USB Host Controller Driver
* In addition, the Host control conforms to UHCI, OHCI and EHCI standards.
* Host driver supports USB 1.1 and 2.0 Hubs
Go up to
Features of a BSPGo up to
Big Book of BSP
Thank you for contributing to this BSP Wiki. To ensure your comments and concerns receive proper exposure, include bspwiki""@""microsoft"".""com when providing feedback or topical suggestions.