WinCEnet

advertisement
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
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






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)




32 bit, preemptive, multithreaded
“Real-Time”
Used for implementation of PocketPC
devices (PDAs, Phone Edition, SmartPhone
devices)
Platform configurations for:
Industrial
controllers
Gateways
PDAs
Set
top boxes
Web
pads
Internet appliances
Mobile/IP Phones
Available Apps and Services

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)
Windows CE Versions

Windows CE 1.0


Windows CE 2.0



Released 2000
Windows CE.net 4.0


2.11 Introduced in 1998
Windows CE 3.0


Released 1997
2.01 (service pack for 2.0)
Windows CE 2.1 Upgrade from Windows CE
2.0


Released fall 1996
Released 2002
Windows CE.net 4.2

Released 2003
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
OEM
Microsoft
ISV, OEM
Applications
Embedded Shell
Remote
Connectivity
Windows CE Shell Services
WIN32 APIs
COREDLL, WINSOCK, OLE, COMMCTRL, COMMDLG, WININET, TAPI
Kernel
GWES
File
Manager
Device
Manager
IrDA
OAL
Bootloader
Drivers
Device
drivers
File drivers
OEM Hardware
TCP/IP
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
FFFF FFFF
C200 0000
03FF FFFF
COREDLL.DLL
Other ROM DLLs
NK “Slot”
Kernel Space
XIP DLL space
8000 0000
Large Memory Area
(memory mapped files)
4200 0000
4000 0000
3E00 0000
0800
0600
0400
0200
0000
0000
0000
0000
0000
0000
0200 0000
Slot 32
Slot 31
Free virtual space
.
.
.
Slot 3
Slot 2
Slot 1
Slot 0
non-ROM DLLs
Process 32
Process 31
Process 3
Process 2
DLLs
Act. Process
Stack (reserved space)
Heap (reserved space)
Resources
Read write data
Read only data
Code
0001 0000
0000 0000
reserved
Steps for Adaptation to a Custom
Platform
1.
2.
3.
4.
5.
6.
Boot loader development
OEM Adaptation Layer (OAL)
Device driver development
Selection/development of application
suite
Test and validation
Platform SDK generation
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

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)


Source examples provided for various
reference platforms
Available from 3rd parties in Board
Support Package (BSP)
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)
Device Class
(partial list)
Driver Model
WinXP/NT/95
Portability
Generic Streaming
Serial (COMx)
Network
Bluetooth Stack
Printer
Audio Compression
Audio
Video (includes
DirectX 8.0 accel.)
PC Card Socket Driver
Touch Panel
Mouse, HID
Keyboard
Battery
LED
Storage Card (Block
Device)
Stream-interface
Stream-interface and Native
NDIS 4.0 Miniport
Stream-interface
Printer Miniport
Stream-interface
Stream-interface and Native
Windows NT Display
Driver Interface
Native
Native
Native, USB
Native
Monolithic
Monolithic
Stream-interface
Not portable
Not portable
Windows NT/9x subset
Not portable
Windows NT/9x subset
Windows NT
Not portable
Window NT subset
Not portable
Not portable
Not portable
Not portable
Not portable
Not portable
Not portable
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)

Windows CE supported driver models



Stream-interface
NDIS 4.0
Printer Miniport
(partial)



Native
Windows NT ACM
USB
Device Driver Architecture
Device Manager
Stream-interface
Stream-interface
Driver
Stream-interface
MDD
Native Driver
DDSI
PDD
Card Services
Stream-interface
NDIS Wrapper
Stream-interface
USB Interface
NDIS
NDIS Miniport
USBD
USB Driver
Card Services
NDIS Wrapper
HCD
Device Driver Architecture
(Continued)
GWE Subsystem
DDI
DDI
MDD
Monolithic Device Driver
Native Driver
Defined by Microsoft
DDSI
PDD
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

Primarily dedicated to Streaminterface 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






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)
 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



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







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





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
Processing Interrupts
Kernel Mode
CE
Kernel
interrupt occurs
Exception
Handler
jump into
Interrupt
Service
Routine
(ISR)
disable all
interrupts (CE
2.12), or
disable current
and lower
priority (CE
3.0)
determine
ISR for
physical
interrupt
line
Time
Possible
preemption by a
higher priority
ISR, if interrupt
nesting enabled
CE 3.0 OAL.
OEM
Adaptatio
n Layer
(OAL)
Interrupt
Support
Handler
Platform
Dependent Driver
(PDD) Layer or
Stream-interface
Device Driver
Interrupt
Service
Thread (IST)
process
interrupt
minimally
return a
logical
interrupt ID
reenable all
interrupts
except the
current
signal
logical
interrupt ID
perform
majority of
interrupt
processing
access
hardware using
specialized
routines
complete
processing of
interrupt,
InterruptDone()
reenable current
interrupt,
OEMInterruptDone()
return status
information and/or
received data
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 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

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)

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)




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
Platform Builder Demo
Other Tools

eMbedded Visual C++ 3.0


eMbedded Visual C++ 4.0




Used for Pocket PC 2003 (CE 4.0 devices) and
later
Visual Studio.net


Used for Pocket PC 2002 (CE 3.0 devices) and
earlier
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









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)
SH4 198MHz
Windows CE
3.0
ISR Min [us]
0.9
Pentium 100
MHz
Windows CE
3.0
1.9
ISR Max
9.1
5.7
5.7
ISR Average
2.9
2.8
2.8
IST Min
14.8
12.9
9.6
IST Max
54.3
163.3
55.6
IST Average
38.2
28.7
26.4
Jitter Max
40
150
46
*Source: http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnce30/html/realtimecapabilities.asp
Pentium 100
MHz
Windows CE
3.0+QFE
1.9
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

Platform Builder Evaluation Kit
http://www.microsoft.com/windows/Embedded/ce.NET/evalua
tion/trial/evalkit.asp

eMbedded Visual C++ 3.0
eMbedded Visual C++ 4.0
http://msdn.microsoft.com/vstudio/device/embedded/downlo
ad.aspx

All other downloads (including CETK)
http://www.microsoft.com/windows/embedded/ce.net/downlo
ads/default.asp
Documents

CE Real Time research docs

Real-Time Evaluation by Dedicated Systems:
http://www.microsoft.com/windows/embedded/ce.net/evaluation/performance/dedi
catedsys.asp

Real-Time and Windows Embedded:
http://www.microsoft.com/windows/Embedded/community/experto/july2002/nframp
ton.asp

Windows Embedded Real-Time:
http://www.microsoft.com/windows/Embedded/community/experto/july2002/jaokeef
e.asp

Performance Test Methodologies for Windows
CE .NET
http://msdn.microsoft.com/library/default.asp?url=/library/enus/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/enus/dncenet/html/rtnetdesigning.asp
Web Sites

Product Overview


Shared Source License Information


http://www.microsoft.com/windows/Embedded/ce.NET/howtobuy/sku.as
p
Development Community Web Sites




http://www.microsoft.com/windows/embedded/ce.net/evaluation/shared
source/default.asp
Runtime Licensing Model for CE .NET 4.2


http://www.microsoft.com/windows/embedded/ce.net/evaluation/overvie
w/default.asp
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






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
Download