Making windows ce net work with custom platforms james y wilson
Download
1 / 42

- PowerPoint PPT Presentation


  • 278 Views
  • Uploaded on

Making Windows CE.net Work With Custom Platforms James Y. Wilson. Brief Biography. Lead software engineer for integration of CE on various custom platforms Various publications on Windows CE system development

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '' - fergal


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Brief biography l.jpg
Brief Biography

  • Lead software engineer for integration of CE on various custom platforms

  • Various publications on Windows CE system development

  • Coauthor of “Building Powerful Platforms With Windows CE” published by Addison-Wesley in Q4 1999

  • Microsoft Embedded MVP

  • Developer of Windows 3.x/9x/NT device drivers


Agenda l.jpg
Agenda

  • Introduction to CE

  • OS Architecture

  • Steps to adaptation for custom platforms

  • Tool-chain

  • Real-time capabilities and limitations

  • Licensing options


Windows ce in a nut shell l.jpg
Windows CE (In a Nut Shell)

  • 32 bit, preemptive, multithreaded

  • “Real-Time”

  • Used for implementation of PocketPC devices (PDAs, Phone Edition, SmartPhone devices)

  • Platform configurations for:


Available apps and services l.jpg

End user apps

Viewers (Excel, Word, PowerPoint, Image, and PDF)

Inbox

Pocket Internet Explorer (PIE)

Internet Explorer (based on IE 6.0)

Remote Desktop

Terminal Emulation

VoIP

Windows Messenger

WordPad

MediaPlayer

Installers

More!

Service components

C/C++ libraries and runtime (exception handling, RTTI)

COM/DCOM

Active Template Library

.NET CF

SNMP

LDAP

Microsoft Message Queuing

MFC

OBEX

SOAP, XML (HTTP, XQL, XSLT, SAX)

SQL Server CE

Shells (console, graphical, skinnable, speech)

Available Apps and Services


Windows ce versions l.jpg
Windows CE Versions

  • Windows CE 1.0

    • Released fall 1996

  • Windows CE 2.0

    • Released 1997

    • 2.01 (service pack for 2.0)

  • Windows CE 2.1 Upgrade from Windows CE 2.0

    • 2.11 Introduced in 1998

  • Windows CE 3.0

    • Released 2000

  • Windows CE.net 4.0

    • Released 2002

  • Windows CE.net 4.2

    • Released 2003


Target hardware l.jpg
Target Hardware

  • Minimum hardware requirements

    • Memory Management Unit for paged virtual memory

    • Timer

    • Certified 32 bit processor (ARM cores, MIPS, PPC, SH, x86)

  • Reference Platforms

    • Priced from $200 for x86 platform

    • Provides “Board Support Package”

    • Many single board computers and reference designs


Os architecture l.jpg

Remote Connectivity

Windows CE Shell Services

WIN32 APIs

COREDLL, WINSOCK, OLE, COMMCTRL, COMMDLG, WININET, TAPI

IrDA

Kernel

TCP/IP

GWES

File

Manager

Device Manager

File drivers

Drivers

Device drivers

OAL

Bootloader

OS Architecture

OEM

ISV, OEM

Microsoft

Applications

Embedded Shell

OEM Hardware


Modular os l.jpg
Modular OS

  • OS divided into .exe/.dll modules (NK.exe contains kernel)

  • Modules further divided using .lib files

  • Modules run in Flash (uncompressed) or RAM (compressed in Flash, uncompressed in RAM)

  • ROM image sizes:

    • 400K minimum: executive and file system

    • 1200K: networking (IPv6, RTP, SMB/CIFS, RAS/PPP, WLAN, BT), no graphics

    • 4MB: +graphics, basic shell

    • 6MB: +hand writing recognition, etc.


Virtual address space l.jpg
Virtual Address Space

FFFF FFFF

03FF FFFF

COREDLL.DLL

Other ROM DLLs

NK “Slot”

C200 0000

Kernel Space

XIP DLL space

8000 0000

Large Memory Area

(memory mapped files)

0200 0000

non-ROM DLLs

4200 0000

Slot 32

Process 32

4000 0000

Process 31

Slot 31

3E00 0000

.

.

.

Free virtual space

Stack (reserved space)

Heap (reserved space)

Resources

Read write data

0800 0000

Read only data

Slot 3

Process 3

0600 0000

Slot 2

Process 2

Code

0400 0000

DLLs

Slot 1

Slot 0

0001 0000

0200 0000

Act. Process

0000 0000

reserved

0000 0000


Steps for adaptation to a custom platform l.jpg
Steps for Adaptation to a Custom Platform

  • Boot loader development

  • OEM Adaptation Layer (OAL)

  • Device driver development

  • Selection/development of application suite

  • Test and validation

  • Platform SDK generation


Bootloader l.jpg
Bootloader

  • Technically not required for production build

  • Performs minimal processor and memory initialization

  • Configures debug ports

  • Downloads OS image into RAM if debug (from TFTP server, serial, or parallel ports)

  • Vector to ROM if production or disconnected, otherwise RAM

  • Optionally provide OS update utility

  • Many examples provided in Platform Builder (dialup bootloader with security)


Oem adaptation layer l.jpg
OEM Adaptation Layer

  • Contains platform specific code

    • Performs platform initialization

    • ISR (support for nested interrupts)

    • Implements power management

  • Provides specified services called by Kernel

  • Statically linked at build time to kernel (NK.exe)


Oem adaptation layer 2 2 l.jpg
OEM Adaptation Layer (2/2)

  • Source examples provided for various reference platforms

  • Available from 3rd parties in Board Support Package (BSP)


Device classes l.jpg
Device Classes

  • Defined: Devices which share common attributes grouped to form a category or “class”

  • Enables congregation of common driver code (class/miniport model)

  • New device classes defined by Microsoft

  • Because primary calling module, GWES, not provided in source form


Device classes continued l.jpg
Device Classes (continued)


Device driver models l.jpg
Device Driver Models

  • Defined: Common mechanism for constructing interfaces between identified driver layers

  • Not an API, but a mechanism supported by a defined API

  • CE supports certain Windows 9x/NT driver models, other driver models unique to CE

  • ISV’s and IHV’s may define new driver models


Device driver models continued l.jpg

Stream-interface

NDIS 4.0

Printer Miniport (partial)

Native

Windows NT ACM

USB

Device Driver Models(continued)

  • Windows CE supported driver models


Device driver architecture l.jpg
Device Driver Architecture

Device Manager

Stream-interface

Stream-interface

Stream-interfaceDriver

MDD

Native Driver

DDSI

Card Services

PDD

Stream-interface

NDIS Wrapper

Stream-interface

USB Interface

NDIS

NDIS Miniport

USBD

USB Driver

Card Services

NDIS Wrapper

HCD


Device driver architecture continued l.jpg
Device Driver Architecture(Continued)

GWE Subsystem

DDI

DDI

Monolithic Device Driver

MDD

Native Driver

Defined by Microsoft

DDSI

PDD


Device driver architecture continued21 l.jpg
Device Driver Architecture(Continued)

  • Consists of DLL’s and object module libraries

  • Drivers run in user mode

    • Allows access to application level resources (MFC, COM, ATL, etc.)

    • Prevents kernel crashes due to driver exceptions

    • Supports software assisted driver debugging


Device manager l.jpg
Device Manager

  • Primarily dedicated to Stream-interface Drivers

    • Loading and unloading

    • Translation of application level calls

    • Power management notifications

    • Enumeration of PC Card devices

  • Exists in a separate process space

    • Implications for buffer pointers

    • Single driver instance shared by all calling applications


Stream interface driver model l.jpg
Stream-interface Driver Model

  • Used most commonly

  • Basis of certain driver models (ex.: USB and NDIS)

  • Supports installable devices

  • Standard Win32 file I/O interface

  • Exposed only through the Device Manager

  • Often used in combination with the Native Driver Model


Stream interface driver model continued l.jpg
Stream-interface Driver Model(Continued)

  • Required entry points (XXX = Device File Name) in approximate order of initialization:

  • XXX_Init

  • XXX_IoControl

  • XXX_Open

  • XXX_Read

  • XXX_Write

  • XXX_Seek

  • XXX_PowerUp

  • XXX_Deinit

  • XXX_Close

  • XXX_PowerDown


Native driver model l.jpg
Native Driver Model

  • Supports onboard devices only

  • Provides class/miniport layering

  • Model Device Driver (MDD) layer

    • Provided by Microsoft

    • Communicates with GWES and kernel

    • Handles interrupts

  • Platform Dependent Driver (PDD) layer

    • Contains code to access the hardware

    • Focus of changes for integration of CE with a custom platform


Other device driver models l.jpg
Other Device Driver Models

  • Services.exe, intended for non-device related modules

  • USB Driver Model

  • NDIS 4.0 miniport

  • Printer miniport

  • Audio Compression Manager

  • Many drivers implemented using a hybrid driver model (ex.: RS-232 serial driver)

  • Implementation of custom driver models possible

    • Driver Control Program (DCP) must be defined (ex.: USBD.dll)


Processing interrupts l.jpg
Processing Interrupts

  • Different for installable devices (ex.: PC Card and USB)

  • For onboard devices, first processed by an ISR in the OAL

  • Lower priority interrupts disabled while in ISR, with nesting of higher priority interrupts

  • Interrupt Service Thread (IST) is signaled

  • IST generally running at high priority, do not block on resources in lower priority threads



Accessing physical resources l.jpg
Accessing Physical Resources

  • Must request user mode address mapped to physical memory

  • May use functions available in CEDDK.LIB

  • Other driver models provide similar functions

  • Example source...


Accessing physical resources30 l.jpg
Accessing Physical Resources

#define UNCACHED_OFFSET 0x80000000

#define UNCACHEDMEMORY(address) (address |\

UNCACHED_OFFSET)

#define MY_DEVICE_FRAME_BUFFER 0xB0000

#define MY_DEVICE_FRAME_BUFFER_LENGTH 0x20000

PVOID pMappedMemory = MmMapIoSpace((PHYSICAL_ADDRESS)

UNCACHEDOFFSET(MY_DEVICE_FRAME_BUFFER),

(ULONG)MY_DEVICE_FRAME_BUFFER_LENGTH,

FALSE);

ASSERT(pMappedMemory != NULL);

...

MmUnmapIoSpace(pMappedMemory,

(ULONG)MY_DEVICE_FRAME_BUFFER_LENGTH);


Platform builder l.jpg
Platform Builder

  • Platform Configuration

    • Used to select modules in OS image

    • Configures link and locate

    • Wizard provided to begin with reference platform

  • Module Development

    • Supports device driver and application development

    • Built separately from OS image


Platform builder 2 3 l.jpg
Platform Builder (2/3)

  • Debugging

    • Configurable connections to platform (TCP/IP, ActiveSync, Serial, or custom)

    • Single step and conditional break points

    • Support for hardware-assisted debugging (useful for OAL)

    • Process, thread, module, and memory windows

    • Tracking of kernel state

    • Call profiling


Platform builder 3 3 l.jpg
Platform Builder (3/3)

  • Builds ROMable OS image

  • Provides emulation to load and test OS image

  • Supports creation of custom “Platform SDK”

  • Demo: Emulator, Break point, process viewer, Kernel Tracker, call profiling



Other tools l.jpg
Other Tools

  • eMbedded Visual C++ 3.0

    • Used for Pocket PC 2002 (CE 3.0 devices) and earlier

  • eMbedded Visual C++ 4.0

    • Used for Pocket PC 2003 (CE 4.0 devices) and later

  • Visual Studio.net

    • Used for managed code development (.net Compact Framework)

  • Both eVC products to be merged with Visual Studio

  • Free download status of eVC in question

  • Windows CE Test Kit (CETK, see downloads) for scriptable application and system testing


Real time capabilities l.jpg
Real Time Capabilities

  • 256 priority levels

  • Scheduler granularity of 1 millisecond

  • Thread Quantum defined independent of timer tick (set to 0 for run to completion)

  • Decouples thread quantum (time slice) from timer tick

  • Nested interrupts

  • ROM compression optional (avoids page faults)

  • Multiple XIP regions

  • Full kernel mode supported

  • Priority Boosting


Real time capabilities 2 2 l.jpg
Real-Time Capabilities* (2/2)

*Source: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnce30/html/realtimecapabilities.asp


Licensing options l.jpg
Licensing Options

  • Platform Builder cost $995/seat

  • Windows CE Royalty begins at $3

  • Shared Source Licensing

    • Allows non commercial derivatives

    • Allows debugging commercial products

    • Redistribution program available CE devices

  • See “Web Sites” for additional reference


Downloads l.jpg
Downloads

  • Platform Builder Evaluation Kithttp://www.microsoft.com/windows/Embedded/ce.NET/evaluation/trial/evalkit.asp

  • eMbedded Visual C++ 3.0eMbedded Visual C++ 4.0http://msdn.microsoft.com/vstudio/device/embedded/download.aspx

  • All other downloads (including CETK)http://www.microsoft.com/windows/embedded/ce.net/downloads/default.asp


Documents l.jpg
Documents

  • CE Real Time research docs

    • Real-Time Evaluation by Dedicated Systems: http://www.microsoft.com/windows/embedded/ce.net/evaluation/performance/dedicatedsys.asp

    • Real-Time and Windows Embedded:http://www.microsoft.com/windows/Embedded/community/experto/july2002/nframpton.asp

    • Windows Embedded Real-Time:http://www.microsoft.com/windows/Embedded/community/experto/july2002/jaokeefe.asp

    • Performance Test Methodologies for Windows CE .NEThttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncenet/html/perfmethod.asp?frame=true

    • Designing and Optimizing Microsoft Windows CE .NET for Real-Time Performance http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncenet/html/rtnetdesigning.asp


Web sites l.jpg
Web Sites

  • Product Overview

    • http://www.microsoft.com/windows/embedded/ce.net/evaluation/overview/default.asp

  • Shared Source License Information

    • http://www.microsoft.com/windows/embedded/ce.net/evaluation/sharedsource/default.asp

  • Runtime Licensing Model for CE .NET 4.2

    • http://www.microsoft.com/windows/Embedded/ce.NET/howtobuy/sku.asp

  • Development Community Web Sites

    • WindowsForDevices.com: http://www.windowsfordevices.com/

    • Pocket PC Developer Network: http://www.pocketpcdn.com

    • The Code Project: http://www.codeproject.com/ce/

  • Evangelist Web Sites

    • Pocket PC Passion: http://www.pocketpcpassion.com/

    • CE Windows.NET: http://www.cewindows.net


Conclusion l.jpg
Conclusion

  • Modular operating system

  • Various driver models with nested interrupts

  • Custom Kernel Image through PB

  • Flexible Real-Time performance characteristics

  • Low cost licensing

  • CE’s total integration advantage


ad