Developing Windows CE 5.0 OAL Li-Ming Fan Escalation Engineer Microsoft GCR-GTSC.

Slides:



Advertisements
Similar presentations
Device Drivers Witawas Srisa-an Embedded Systems Design and Implementation.
Advertisements

Debugging Windows ® CE Applications And Systems David Streams Lead Program Manager Windows CE Tools Microsoft Corporation
Building Embedded Systems With Windows® CE Platform Builder 3
MHK200 Module 1: Introduction to Windows CE. MHK200 Overivew Windows CE Design Goals Windows CE Architecture Supported Technologies, Libraries, and Tools.
Real-Time Library: RTX
计算机系 信息处理实验室 Lecture 5 Startup and Shutdown
请点击以下链接下载 WinHEC 的演讲材料 Download WinHEC presentations here:
Handheld TFTP Server with USB Andrew Pangborn Michael Nusinov RIT Computer Engineering – CE Design 03/20/2008.
11/13/01CS-550 Presentation - Overview of Microsoft disk operating system. 1 An Overview of Microsoft Disk Operating System.
1 Hardware and Software Architecture Chapter 2 n The Intel Processor Architecture n History of PC Memory Usage (Real Mode)
Chapter 13 Embedded Systems
WINCE Developing a Board Support Package (BSP). Porting Wince to the TS-7300 We will look at the porting of Wince onto the Technologic Systems TS-7300.
CCNA 2 v3.1 Module 2.
GigE Knowledge. BODE, Company Profile Page: 2 Table of contents  GigE Benefits  Network Card and Jumbo Frames  Camera - IP address obtainment  Multi.
EMB313 Increasing Developer Productivity With Windows CE 5.0 Matt Young Windows Mobile Joint Development Program (JDP) Microsoft.
Ch1 Windows CE Introduction Jianjian SONG Software Institute, Nanjing University May, 2005.
Introduction Purpose Objectives Content Learning Time
Shell and Flashing Images Commands and upgrades. RS-232 Driver chip – ST3232C Driver chip is ST3232C Provides electrical interface between UART port and.
MDK-ARM Microcontroller Development Kit MDK: Microcontroller Development Kit.
EMB425 Using Advanced Platform Builder Debugger Features James Stulz Program Manager Windows CE Core Tools Microsoft Corporation.
EMB313 Increasing Developer Productivity With Windows CE 5.0
How To Write A Windows CE SDIO Client Driver
NET+OS 6.1 Training. BSP NET+OS 6.1 BSP Initialization Memory map New features Debugging Porting Issues.
EMB308 Developing a Windows CE 5.0 OAL
General System Architecture and I/O.  I/O devices and the CPU can execute concurrently.  Each device controller is in charge of a particular device.
How Hardware and Software Work Together
Introduction to Embedded Software Development School of software Engineering OS Development.
AT91SAM9261-EK WinCE 6.0 DEMO ATMEL AT91 Application & Support Group
EMB318 Improve Product Quality Using Windows CE Error Reporting (Watson) James Stulz Program Manager Windows CE Core Tools Microsoft Corporation.
Introduction Purpose This training course covers debugging an application on an SH target in the Renesas HEW (High-performance Embedded Workshop) development.
Windows CE 5.0 Memory Architecture Li-Ming Fan Escalation Engineer Microsoft GCR-GTSC.
EMB426 Windows CE Memory Architecture Steve Maillet CEO/Chief Software Architect EmbeddedFusion.
VxWorks & Memory Management
Windows CE 시스템 개발 개요. 임베디드시스템소프트웨어 -Windows CE 2 Overview  Selecting a Windows Embedded Operating System  The Windows CE Platform Development Cycle.
NET+OS 6 BSP How and why it was restructured Changes to memory map New features How to port to custom hardware.
A+ Guide to Software Managing, Maintaining and Troubleshooting THIRD EDITION Chapter 2 How an OS Works with Hardware and Other Software.
EMB423 Creating A Trusted Environment For Windows CE 5.0 Nat Frampton President Real Time Development
Introduction to Embedded Software Development School of software Engineering Introduction to Windows CE.
Lab 11 Department of Computer Science and Information Engineering National Taiwan University Lab11 - Porting 2014/12/9/ 26 1.
Overview of System Development. Overview Selecting a Windows Embedded Operating System The Windows CE Platform Development Cycle The Application Development.
EMB320 Windows CE 5.0 Image Configuration, Boot Loaders, And Security
ANDROID Presented By Mastan Vali.SK. © artesis 2008 | 2 1. Introduction 2. Platform 3. Software development 4. Advantages Main topics.
Windows NT and Real-Time? Reading: “Inside Microsoft Windows 2000”, (Solomon, Russinovich, Microsoft Programming Series) “Real-Time Systems and Microsoft.
Enabling Media Playback On Windows CE 5.0 Li-Ming Fan Escalation Engineer Microsoft GCR GTSC.
Introduction Purpose This training course covers debugging an application on an SH target in the Renesas HEW (High-performance Embedded Workshop) development.
Non-Volatile Object Store And Hive Based Registry Design For Windows CE 刘由顺 软件架构师 北京华夏互动文化传播有限公司.
EMB424 Implementing Fault Tolerant Systems in Windows CE 5.0 Nat Frampton President Real Time Development
Windows CE 시스템 개발 개요. 모바일운영체제 - Windows CE 2 Overview  Selecting a Windows Embedded Operating System  The Windows CE Platform Development Cycle  The.
EMB427 Writing Real-Time Applications On Windows CE 5.0 Nat Frampton President Real Time Development Corporation
Dissecting the Windows CE Build Process James Y. Wilson Principal Engineer, Windows Embedded MVP CalAmp, Inc. James Y. Wilson Principal Engineer, Windows.
Windows CE Development
SAM9260-EK WinCE DEMO AT91 SAM9 Product Group. Version 1.0 October 2006.
1.4 Hardware Review. CPU  Fetch-decode-execute cycle 1. Fetch 2. Bump PC 3. Decode 4. Determine operand addr (if necessary) 5. Fetch operand from memory.
Advanced x86: BIOS and System Management Mode Internals Boot Process Xeno Kovah && Corey Kallenberg LegbaCore, LLC.
Implementation of Embedded OS Lab3 Porting μC/OS-II.
CLI210 Introduction To Managed Development For Devices With Visual Studio 2005 Scott D. Smith Program Manager Visual Studio for Devices Microsoft Corporation.
Using Advanced Platform Builder Debugger Features Chenghui Lian Microsoft China Technology Center.
Commands 3/1/ Boot PROM Fundamentals All Sun systems have resident boot PROM firmware Provides basic hardware testing and initialization prior.
January 8, 2001 SPC Tutorial 1 Washington WASHINGTON UNIVERSITY IN ST LOUIS Agenda 9:00 SPC Hardware -- John DeHart 9:45 SPC Software -- John DeHart 10:30.
Windows CE 에서 ARM 프로세서의 동작 김대홍 소프트웨어 팀장 ㈜씨랩시스. Agenda ARM 소개 ARM 버전 별 특징 Windows CE 에서의 ARM Windows CE 5.0 에서의 ARM 디렉토리구조 Windows CE 에서의 특정 ARM 명령 지원.
Chap. 4 ARM Boot Loader Internals. 2 S3C2500 ARM940T Core module ARM9TDMI CoreIC.
Introduction to Operating Systems Concepts
Computer System Structures
CONFIGURING HARDWARE DEVICE & START UP PROCESS
AT91RM9200 Boot strategies This training module describes the boot strategies on the AT91RM9200 including the internal Boot ROM and the U-Boot program.
Operating Systems Lecture 3.
Lecture9: Embedded Network Operating System: cisco IOS
Instructor Materials Chapter 5: Windows Installation
Overview of System Development for Windows CE.NET
Lecture9: Embedded Network Operating System: cisco IOS
Presentation transcript:

Developing Windows CE 5.0 OAL Li-Ming Fan Escalation Engineer Microsoft GCR-GTSC

Agenda Windows CE 5.0 BSPs and Kernels Development Process OAL –Architecture and Design –Boot Sequence and Required OAL Functions –Kernel and KITL –Optional OAL Functions –Building –Power Management

Agenda Windows CE 5.0 BSPs and Kernels Development Process OAL –Architecture and Design –Boot Sequence and Required OAL Functions –Kernel and KITL –Optional OAL Functions –Building –Power Management

Windows CE 5.0 BSPs Windows CE 5.0 BSPs/CSPs FamilyBSP/CSPKernel ARM Intel Mainstone IIARMV4I Samsung SMDK-2410ARMV4I CSP Only - Intel Xscale LubbockARMV4I MIPS AMD DBAu1000MIPSII AMD DBAu1100MIPSII AMD DBAu1500MIPSII NEC Solution Gear2 Vr4131MIPSII NEC Solution Gear2 Vr5500MIPSII & II_PF, MIPSIV & IV_FP Broadcom VoIP ReferenceMIPSII SH SH4 AspenSH4 x86 x86 (CEPC)x86 x86 Emulatorx86 Geodex86 Intel Assabet and Lubbock (use Mainstone II) ARM Integrator (use Samsung SMDK2410) SH3 Keywest (deprecated) BSPs NO LONGER SUPPORTED

Windows CE 5.0 Kernels Kernels & OS builds in 4.2 = 9 –ARMV4, ARMV4I, ARMV4T –MIPSIIB/16, MIPSII, MIPSII_FP, MIPSIV, MIPSIV_FP –SH3, SH4 –x86 Kernels & OS builds in 5.0 = 7 –ARMV4I, ARMV4 –MIPSII, MIPSII_FP, MIPSIV, MIPSIV_FP –SH4, SH3 –x86

Agenda Windows CE 5.0 BSPs and Kernels Development Process OAL –Architecture and Design –Boot Sequence and Required OAL Functions –Kernel and KITL –Optional OAL Functions –Building –Power Management

BSP Development Process Test Hardware, Rom Monitor Develop Boot Loader Clone Reference BSP PowerManagement Develop OAL (Minimal Kernel) Add Device Drivers Package(CEC/MSI)

Boot Loader Architecture A typical development boot loader blcommon OEM code eboot … NE2000 RTL8139DP83815 bootpart flash FMD EDBG drivers

Bootloader Architecture Blcommon – generic boot loader framework OEM code – general board init and extensions Eboot – Ethernet functions (UDP, DHCP, TFTP) EDBG drivers – Ethernet drivers –3Com 3C90x, AMD AM79C97x, CS8900A, NS DP83815, NE2000, RealTek RTL8139, SMSC9000 & SMSC100 Bootpart – storage partition management FMD – flash management driver –Samsung/Sandisk (NAND), Intel StrataFlash (NOR)

Agenda Windows CE 5.0 BSPs and Kernels Development Process OAL –Architecture and Design –Boot Sequence and Required OAL Functions –Kernel and KITL –Optional OAL Functions –Building –Power Management

Windows CE 5.0 BSPs Reduce OS “bring-up” time on OEM hardware Avoid changing the "public" OAL interface Provide production features (power management, performance optimizations, IOCTLs, etc.) Maximize code re-use (and testing) Provide a consistent OAL architecture that can be easily extended/customized Increase BSP coverage in-the-box –One BSP for each supported CPU –Integrate BSPs into the IDE Catalog –Integrate BSPs into the Platform Wizard Enable third parties to create BSPs easily –Ship CSP drivers for many CPUs and SOCs –PB Tools - BSP Wizard and IDE tools –Enables faster, easier porting to OEM devices

PQOAL Design Collection of OAL software libraries organized by CPU architecture (or model) and by OAL “function” Common Code Directory Structure BSP configuration files are located in a single location (platform\ \src\inc) RTC Cache Library Interrupt Library IOCTL Library Startup Library RTC Library KITL Library OS Timer Library TimersCachesSerialportEthernetportUSBport OAL Kernel Hardware

Directory Structure Example platform\common\src inc ARM common cache memory ARM720T ARM920T Intel Samsung S3C2410 inc interrupt power RTC startup timer MIPS, SHx, x86 common platform\ cesysgen files intltrns 0409 … src bootloader kernel OAL kern kernkitl kernkitlprof inc common debug drivers PCMCIA Common code directoryBSP code directory

BSP Configuration Files BSP configuration files are located in a single location (platform\ \src\inc) –Simplifies porting/customization work –Consistent file naming scheme args.h – bootloader-OAL shared memory structure bsp.h – master bsp include file bsp_base_regs.h – board-level address definitions bsp_cfg.h – general BSP configs (device name, clock settings,…) image_cfg.h – memory layout address definitions ioctl_cfg.h – definitions used by BSP IOCTL routines ioctl_tab.h – IOCTL function table kitl_cfg.h – KITL transport name/device/driver table oemaddrtab_cfg.inc – (ARM/x86) VA-PA mapping table

Shared Design Chip/set Support Package (CSP) drivers will share include files that define hardware registers and layoutpublic\common\oak\csp\arm\samsung\s3c2410x\inc: s3c2410x.h s3c2410x.inc s3c2410x_adc.h s3c2410x_base_regs.h s3c2410x_base_regs.inc s3c2410x_clkpwr.h s3c2410x_dma.h s3c2410x_iicbus.h s3c2410x_iisbus.h s3c2410x_intr.h s3c2410x_ioport.h s3c2410x_lcd.h s3c2410x_memctrl.h s3c2410x_nand.h s3c2410x_pwm.h s3c2410x_rtc.h s3c2410x_sdi.h s3c2410x_spi.h s3c2410x_uart.h s3c2410x_usbd.h s3c2410x_wdog.h

Creating A BSP BSP wizard –IDE Tool to clone BSP or create a BSP definition –Can add/remove drivers to a BSP definition Export wizard –IDE Tool to export feature components from the IDE Catalog to other PB users –Creates a MS Windows Installer (MSI) file CEC editor –IDE Tool to create and/or edit.CEC files –A.CEC file defines the properties of an object/component in the IDE catalog –No more.bsp files Two methods to create a BSP –Use the command line method –Use the BSP Wizard –Both methods rely on cloning a sample BSP

Creating An OAL Create directory for OAL code in the BSP –platform\ \kernel\oal –Add to “dirs” file to build OAL with BSP Required OAL functions –Startup –Debug serial –OEMInit –System timer –Interrupt processing –Kernel input/output, KITL Optional OAL functions (Platform Dependent) –Real-time clock and timer –Parallel port I/O code –Ethernet port debug More information in PB docs –“How-to Create an OEM adaptation layer”

Agenda Windows CE 5.0 BSPs and Kernels Development Process OAL –Architecture and Design –Boot Sequence and Required OAL Functions –Kernel and KITL –Optional OAL Functions –Building –Power Management

Required OAL Functions Startup Debug Serial OEMInit System Timer Interrupt Processing Kernel Input/Output Example: Custom Kernel IOCTL KITL

StartUp First function called when target device boots Purpose is to initialize CPU to known state and to call the kernel initialization function (KernelInitialize for x86 and KernelStart on all other platforms) ARM example LEAF_ENTRY StartUp... ; Initialize CPU to a known state ; Set up OEMAddressTable for KernelStart... bl KernelStart... ; KernelStart should never return LEAF_ENTRY StartUp... ; Initialize CPU to a known state ; Set up OEMAddressTable for KernelStart... bl KernelStart... ; KernelStart should never return

CE 5.0 Boot Sequence Boot loader startup sequence Startup() EbootMain() BootloaderMain() OEMDebugInit() OEMPlatformInit() OEMPreDownload() Download Occurs OEMLaunch() Kernel startup sequence Startup() KernelStart() ARMInit() OEMInitDebugSerial() OEMInit() KernelInit() HeapInit() InitMemoryPool() ProcInit() SchedInit() FirstSchedule() SystemStartupFunc() IOCTL_HAL_POSTINIT

Debug Serial OEMInitDebugSerial() –Configures Speed, Parity, Stop bit length OEMReadDebugByte() –Retrieves a byte from the debug monitor port OEMWriteDebugByte() –Outputs a byte to the debug monitor port OEMWriteDebugString() –Writes a string to the debug monitor port

OEMInit Required task is to set up hardware and register interrupt for the system tick ISRs and HookInterrupt Setting Up the Interrupt Map –Define a mapping of Interrupt IDs Mapping can be dynamic at driver load time –Interrupt IDs’ are returned by the ISRs to the kernel and are used to link an incoming IRQ with a software IST

OEMInit: An Example Void OEMInit() { SetUpInterruptMap(); PCIInitBusInfo(); InitDebugEther(); OEMParallelPortInit() InitPICs(); InitClock(); if (MainMemoryEndAddress == CEPC_EXTRA_RAM_START) { MainMemoryEndAddress += IsDRAM(MainMemoryEndAddress, CEPC_EXTRA_RAM_SIZE); } pKDIoControl = OEMKDIoControl; } Void OEMInit() { SetUpInterruptMap(); PCIInitBusInfo(); InitDebugEther(); OEMParallelPortInit() InitPICs(); InitClock(); if (MainMemoryEndAddress == CEPC_EXTRA_RAM_START) { MainMemoryEndAddress += IsDRAM(MainMemoryEndAddress, CEPC_EXTRA_RAM_SIZE); } pKDIoControl = OEMKDIoControl; }

Interrupt Processing OEMInterruptEnable() –Performs hardware operations necessary to allow a device to generate the specified interrupt –Includes Setting a hardware priority for the device Setting a hardware interrupt enable port Clearing any pending interrupt conditions from the device OEMInterruptDisable() –Disables the specified hardware interrupt OEMInterruptDone() –Unmasked and reenables of interrupt processing

Interrupt Processing OEMGetInterrupt() –Used by the any device wanting and IRQ. Example PCI bus OEMRequestSysIntr() –Used in the OEMIoControl routine to implement IOCTL_HAL_TRANSLATE_IRQ and IOCTL_HAL_REQUEST_SYSINTR OEMTranslateIrq() –Used by the main ISR to translate a non-shareable IRQ into a SYSINTR OEMTranslateSysIntr() –Translates a SYSINTR to its corresponding IRQ

System Timer Make sure the system timer interrupt is registered with the ISR Program the system timer to generate an interrupt every 1ms –Can also support variable tick In the system timer ISR, update the global system tick counter CurMSec and CurTicks. If reschedule time is expired then return SYSINTR_Resched else SYSINTR_NOP

Agenda Windows CE 5.0 BSPs and Kernels Development Process OAL –Architecture and Design –Boot Sequence and Required OAL Functions –Kernel and KITL –Optional OAL Functions –Building –Power Management

Kernel Libraries LibraryDescription kern.exekernkitl.exekernkitlprof.exe basickernel kernel w/ dbg suppt kernel w/ profiling suppt Nk.libMicroprocessor-specific Kernel code that MS supplies XX Hal.libOAL that you implement for target HW XXX NkProf.libProfile version of the MS Kernel code X KITL.libKernel Independent Transport Layer (KITL) debugging services XX SMC9000Sample Ethernet debugging driver. Must have for KITL suppt XXX FullLibcMicrosoft C Run-Time Library XXX

Kernel Input/Output OEMIoControl is called by the kernel when a device driver or application program calls the KernelIoControl function Extend the Ethernet Debugging Interface BOOL OEMIoControl(...) { switch (dwIoControlCode) { case IOCTL_HAL_SET_DEVICE_INFO : case IOCTL_HAL_REBOOT:... default: return FALSE; } return TRUE; } BOOL OEMIoControl(...) { switch (dwIoControlCode) { case IOCTL_HAL_SET_DEVICE_INFO : case IOCTL_HAL_REBOOT:... default: return FALSE; } return TRUE; }

Example: Custom Kernel IOCTL #define IOCTL_MY_CONTROL1 \ CTL_CODE(FILE_DEVICE_HAL, 2048, METHOD_NEITHER, FILE_ANY_ACCESS) BOOL OEMIoControl(...) { switch (dwIoControlCode) { case IOCTL_MY_CONTROL1:... } RetCode = KernelIoControl( IOCTL_MY_CONTROL1,... ); #define IOCTL_MY_CONTROL1 \ CTL_CODE(FILE_DEVICE_HAL, 2048, METHOD_NEITHER, FILE_ANY_ACCESS) BOOL OEMIoControl(...) { switch (dwIoControlCode) { case IOCTL_MY_CONTROL1:... } RetCode = KernelIoControl( IOCTL_MY_CONTROL1,... );

KITL Kernel Independent Transport Layer Designed to provide an easy way for you to support any debug service OEM Function to implement is OEMKitlINit Including the KITL support in the operating system image Vmini not always necessary. EDBG driver can talk directly to desktop Passive KITL also available

Agenda Windows CE 5.0 BSPs and Kernels Development Process OAL –Architecture and Design –Boot Sequence and Required OAL Functions –Kernel and KITL –Optional OAL Functions –Building –Power Management

Optional OAL Functions Real-time Clock and Timer OEMGetExtensionDRAM()

Real-time Clock And Timer OEMGetRealTime() –Called by the kernel to get the time from the real-time clock OEMSetRealTime() –Sets the real time clock OEMSetAlarmTime() –Sets the alarm time OEMQueryPerformanceCounter() –Retrieves the current value of the high-resolution performance counter, if one exists OEMQueryPerformanceFrequency() –Retrieves the frequency of the high-resolution performance counter, if one exists

OEMGetExtensionDRAM() pNKEnumExtensionDRAM AND OEMEnumExtensionDRAM Example 2 Extended 4MB DRAM available at 0x Example 1 No extension DRAM available BOOL OEMGetExtensionDRAM(LPDWORD lpMemStart, LPDWORD lpMemLen) { return FALSE; // no extension DRAM } BOOL OEMGetExtensionDRAM(LPDWORD lpMemStart, LPDWORD lpMemLen) { *lpMemStart = 0x ; *lpMemLen = 0x ; // 4MB return TRUE; } BOOL OEMGetExtensionDRAM(LPDWORD lpMemStart, LPDWORD lpMemLen) { return FALSE; // no extension DRAM } BOOL OEMGetExtensionDRAM(LPDWORD lpMemStart, LPDWORD lpMemLen) { *lpMemStart = 0x ; *lpMemLen = 0x ; // 4MB return TRUE; }

Agenda Windows CE 5.0 BSPs and Kernels Development Process OAL –Architecture and Design –Boot Sequence and Required OAL Functions –Kernel and KITL –Optional OAL Functions –Building –Power Management

Building OAL and Kernel No longer necessary to SYSGEN OAL libraries Shared OAL code is built just before the BSP directory (platform\common) BSP kernel (kernkitl.exe) sources file: TARGETLIBS= \ $(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\nk.lib \ $(_TARGETPLATROOT)\lib\$(_CPUDEPPATH)\oal.lib \ $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_startup_s3c2410x.lib \ $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_abort_s3c2410x.lib \ $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_cache_s3c2410x.lib \ $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_memory_s3c2410x.lib \ $(_PLATCOMMONLIB)\$(_CPUDEPPATH)\oal_io_s3c2410x.lib \ $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_intr_s3c2410x.lib \ $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_timer_s3c2410x.lib \ $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_rtc_s3c2410x.lib \ $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_ioctl_s3c2410x.lib \ $(_PLATCOMMONLIB)\$(_CPUDEPPATH)\oal_other.lib \ $(_PLATCOMMONLIB)\$(_CPUDEPPATH)\oal_log.lib \ $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ddk_io.lib \ $(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\kitl.lib \ $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\fulllibc.lib \ $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_ethdrv_cs8900a.lib

Agenda Windows CE 5.0 BSPs and Kernels Development Process OAL –Architecture and Design –Boot Sequence and Required OAL Functions –Kernel and KITL –Optional OAL Functions –Building –Power Management

OAL Power Management Functions –OEMIdle – Puts the CPU in reduced power mode –OEMPowerOff – Puts the CPU in suspend mode

Tools & Resources msdn.microsoft.com/ embedded microsoft.public. windowsxp.embedded windowsce.platbuilder windowsce.platbuilder windowsce.embedded.vc windowsce.embedded.vc blogs.msdn.com/ mikehall Windows CE 5.0 Eval Kit Windows XP Embedded Eval Kit msdn.microsoft.com/ mobility microsoft.public. pocketpc.developer smartphone.developer dotnet.framework.compactframework blogs.msdn.com/ windowsmobile vsdteam netcfteam Windows Mobile 5.0 Eval Kit Websites Newsgroups Blogs Tools Build Develop

请在课程结束后填写课程培训反馈表,参加抽奖。 请填写资料袋内的蓝色大会满意度反馈表,到大会接待台领取 《 Windows Mobile 手机应用开发》工具书。 您还可以: 参加 Windows Mobile 动手实验室; 参观微软及合作伙伴展区; 体验基于 Windows Mobile 平台开发的最新硬件产品及解决方案。 大会注意事项