Title: Making%20Windows%20CE.net%20Work%20With%20Custom%20Platforms%20%20James%20Y.%20Wilson
1Making Windows CE.net Work With Custom Platforms
James Y. Wilson
2Brief 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
3Agenda
- Introduction to CE
- OS Architecture
- Steps to adaptation for custom platforms
- Tool-chain
- Real-time capabilities and limitations
- Licensing options
4Windows 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 Web pads
Gateways Internet appliances
PDAs Mobile/IP Phones
Set top boxes
5Available 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)
6Windows 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
7Target 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
8OS Architecture
OEM
ISV, OEM
Microsoft
Applications
Embedded Shell
OEM Hardware
9Modular 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.
10Virtual 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
11Steps 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
12Bootloader
- 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)
13OEM 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)
14OEM Adaptation Layer (2/2)
- Source examples provided for various reference
platforms - Available from 3rd parties in Board Support
Package (BSP)
15Device 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
16Device Classes (continued)
17Device 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 - ISVs and IHVs may define new driver models
18Device Driver Models(continued)
- Windows CE supported driver models
- Stream-interface
- NDIS 4.0
- Printer Miniport (partial)
- Native
- Windows NT ACM
- USB
19Device Driver Architecture
Device Manager
Stream-interface
Stream-interface
Stream-interfaceDriver
MDD
Native Driver
DDSI
Card Services
PDD
Stream-interface
USB Interface
Stream-interface
NDIS Wrapper
USBD
USB Driver
NDIS
NDIS Miniport
HCD
Card Services
NDIS Wrapper
20Device Driver Architecture(Continued)
GWE Subsystem
DDI
DDI
MDD
Monolithic Device Driver
Native Driver
Defined by Microsoft
DDSI
PDD
21Device Driver Architecture(Continued)
- Consists of DLLs 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
22Device 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
23Stream-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
24Stream-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
25Native 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
26Other 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)
27Processing 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
28Processing Interrupts
29Accessing 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...
30Accessing 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)
31Platform 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
32Platform 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
33Platform 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
34Platform Builder Demo
35Other 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
36Real 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
37Real-Time Capabilities (2/2)
SH4 198MHz Windows CE 3.0 Pentium 100 MHzWindows CE 3.0 Pentium 100 MHzWindows CE 3.0QFE
ISR Min us 0.9 1.9 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/defaul
t.asp?url/library/en-us/dnce30/html/realtimecapab
ilities.asp
38Licensing 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
39Downloads
- Platform Builder Evaluation Kithttp//www.microso
ft.com/windows/Embedded/ce.NET/evaluation/trial/ev
alkit.asp - eMbedded Visual C 3.0eMbedded Visual C
4.0http//msdn.microsoft.com/vstudio/device/embed
ded/download.aspx - All other downloads (including CETK)http//www.mi
crosoft.com/windows/embedded/ce.net/downloads/defa
ult.asp
40Documents
- CE Real Time research docs
- Real-Time Evaluation by Dedicated Systems
http//www.microsoft.com/windows/embedded/ce.net/e
valuation/performance/dedicatedsys.asp - Real-Time and Windows Embeddedhttp//www.microso
ft.com/windows/Embedded/community/experto/july2002
/nframpton.asp - Windows Embedded Real-Timehttp//www.microsoft.c
om/windows/Embedded/community/experto/july2002/jao
keefe.asp - Performance Test Methodologies for Windows CE
.NEThttp//msdn.microsoft.com/library/default.asp
?url/library/en-us/dncenet/html/perfmethod.asp?fr
ametrue - Designing and Optimizing Microsoft Windows CE
.NET for Real-Time Performance http//msdn.micros
oft.com/library/default.asp?url/library/en-us/dnc
enet/html/rtnetdesigning.asp
41Web Sites
- Product Overview
- http//www.microsoft.com/windows/embedded/ce.net/e
valuation/overview/default.asp - Shared Source License Information
- http//www.microsoft.com/windows/embedded/ce.net/e
valuation/sharedsource/default.asp - Runtime Licensing Model for CE .NET 4.2
- http//www.microsoft.com/windows/Embedded/ce.NET/h
owtobuy/sku.asp - Development Community Web Sites
- WindowsForDevices.com http//www.windowsfordevice
s.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
42Conclusion
- Modular operating system
- Various driver models with nested interrupts
- Custom Kernel Image through PB
- Flexible Real-Time performance characteristics
- Low cost licensing
- CEs total integration advantage