emb313 increasing developer productivity with windows ce 5.0 matt young windows mobile joint...

26
EMB313 EMB313 Increasing Developer Increasing Developer Productivity With Productivity With Windows CE 5.0 Windows CE 5.0 Matt Young Matt Young Windows Mobile Joint Development Program Windows Mobile Joint Development Program (JDP) (JDP) Microsoft Microsoft

Upload: doris-lane

Post on 24-Dec-2015

221 views

Category:

Documents


1 download

TRANSCRIPT

EMB313EMB313

Increasing Developer Increasing Developer Productivity With Productivity With Windows CE 5.0Windows CE 5.0

Matt YoungMatt YoungWindows Mobile Joint Development Program (JDP)Windows Mobile Joint Development Program (JDP)MicrosoftMicrosoft

MManagementanagementTToolsools

CCommunicationsommunications& & MMessagingessaging

Device Update Agent

Software Update Services

Live Communications Server

Exchange Server

Internet Security and Acceleration Server

Speech Server

Image Update

LLocation ocation SServiceservices

MMultimediaultimedia

MapPoint

DirectX

Windows Media

Visual Studio 2005DDevelopment evelopment TToolsools

MFC 8.0, ATL 8.0

Win32NNativeative

MManagedanaged

SServer erver SSideide

LLightweightightweight

RRelationalelationalSQL Server 2005 Express EditionEDB

DDa

taata

PPro

gra

mm

ing

ro

gra

mm

ing

MM

od

el

od

el

DDevice evice BBuilding uilding TToolsools

HHardware/ardware/DDriversrivers

Windows XP DDK

Windows Embedded Studio

Platform Builder

OEM/IHV SuppliedBSP

(ARM, SH4, MIPS)OEM Hardware and Standard Drivers

Standard PC Hardware and Drivers

SQL Server 2005SQL Server 2005 Mobile Edition

ASP.NET Mobile Controls ASP.NET

.NET Compact Framework .NET Framework

Microsoft Operations Manager

Systems Management Server

GOAL: Optimize Developer GOAL: Optimize Developer Productivity CycleProductivity Cycle

EDIT

DOWNLOAD

BU

ILD

AgendaAgenda

Unified BuildUnified Build

Build System Overview (brief)Build System Overview (brief)

Targeted BuildTargeted Build

Source ControlSource Control

CloningCloning

Dynamic Debugging from Dynamic Debugging from FlatReleaseDirFlatReleaseDir

Unified Build VisionUnified Build Vision

““just one build system please…”just one build system please…”

The IDE becomes a thin client over the The IDE becomes a thin client over the command line buildcommand line build

expose build system “tribal knowledge”expose build system “tribal knowledge”

Enhanced, integrated documentationEnhanced, integrated documentationDialogsDialogs

catalog meta datacatalog meta data

linked helpedlinked helped

Don’t slow down power usersDon’t slow down power users

IDE Build = Command Line BuildIDE Build = Command Line Build

Unified Build SolutionUnified Build Solution

IDE build engine shells out IDE build engine shells out command line command lineBuild meta-data is parsed real-time from Build meta-data is parsed real-time from build system filesbuild system filesExpose the OS tree in the WorkspaceViewExpose the OS tree in the WorkspaceViewIDE’s native sub-project type = sources/dirsIDE’s native sub-project type = sources/dirsvisual editors for sources / dirs filesvisual editors for sources / dirs filesResourceView / ClassView for OS treeResourceView / ClassView for OS tree““Mixed-Mode Support”Mixed-Mode Support”

3 Tier Unified Build 3 Tier Unified Build ArchitectureArchitecture

File View FeatureView

ParameterView

WINCEROOTPublicPlatformPrivate

Wince TreeDirectory Structure

CESysgen Files

Dirs Files

Sources Files

WinceRoot

Build Directory

Deptree

Dirs

Sources

Source Files

MiscSource Files

Favorites

Shortcut 1

Shortcut 2

Makefile.def

DATA LAYER The following are on-disk files that contain read or read/write data for initializing the Object Model.

BUSINESS LOGIC LAYERThe following C# Objects providethe business logic.

PRESENTATION LAYERThe VS style visual represenation of the OS build tree.

PBXMLWince.

bat

Unified Build highlightsUnified Build highlights

Shell Extension Shell Extension

New Project WizardNew Project Wizard

Source and Dirs EditorsSource and Dirs Editors

FileView/ClassView/ResourceViewFileView/ClassView/ResourceView

Driver Resolver and Dependency Driver Resolver and Dependency AnalyzerAnalyzer

Goals of the Build SystemGoals of the Build System

Create binaries and Software Development Create binaries and Software Development Kit’s for devices based on Windows CE.Kit’s for devices based on Windows CE.

Support selecting, building, and managing Support selecting, building, and managing the dependencies of Operating System the dependencies of Operating System components.components.

Enable building vertical solutionsEnable building vertical solutions

Create a “cesysgen” directory in that…Create a “cesysgen” directory in that…contains drivers, libraries, programs, registry contains drivers, libraries, programs, registry settings, header files, and other components as settings, header files, and other components as selected by the OEM. selected by the OEM.

This “cesysgen” directory will serve as the basis This “cesysgen” directory will serve as the basis for developing platform code and for generating for developing platform code and for generating SDKs for distribution to 3rd partiesSDKs for distribution to 3rd parties

System GenerationSystem Generation

Complete header and source code

files

Complete system libraries

Module definitions (.def)

Project-specific

header files

Linked libraries

filtered .def files

Complete Build ProcessComplete Build Process

1.1. Compilation phase (Compilation phase (compilation at MScompilation at MS))

2.2. Link Phase (preproc)Link Phase (preproc)

3.3. Copy & filter headers and libraries (cefilter)Copy & filter headers and libraries (cefilter)

4.4. Post-process project (postproc)Post-process project (postproc)

5.5. Platform sysgenPlatform sysgen

6.6. Build platform Build platform

7.7. Create release directory (buildrel)Create release directory (buildrel)

8.8. Create downloadable image (makeimg)Create downloadable image (makeimg)

Note: Steps 1-4 are repeated several times during a complete build, once for Note: Steps 1-4 are repeated several times during a complete build, once for each “project” in the _DEPTREES list.each “project” in the _DEPTREES list.

““DIRS” fileDIRS” file

DIRS file is “node” in build treeDIRS file is “node” in build tree

Lists subdirectories to buildLists subdirectories to build

Build.exe does depth-first recurse Build.exe does depth-first recurse

““\” is continue line special char\” is continue line special char

Tip: Beware of extra spaces!Tip: Beware of extra spaces!

DIRS =\Display \Mouse \Keyboard \Ethernet

DIRS =\Display \Mouse \Keyboard \Ethernet

““sources” filesources” fileExtension to nmake environmentExtension to nmake environment

What to compileWhat to compile

Type of module (exe, dll, lib)Type of module (exe, dll, lib)

Include & link path, etcInclude & link path, etc

SOURCES file is base project type in IDE. (new)SOURCES file is base project type in IDE. (new)

Graphical SOURCES editor in IDE. (new)Graphical SOURCES editor in IDE. (new)

TARGETNAME = KbdmouseTARGETTYPE = DYNLINKDLLENTRY = DllMainTARGETLIBS = \$(_COMMONSDKROOT)\Lib\$(_CPUINDPATH)\Coredll.libINCLUDES = $(_COMMONSDKROOT)\IncSOURCES = \

ioport.cpp \vgaports.cpp \

TARGETNAME = KbdmouseTARGETTYPE = DYNLINKDLLENTRY = DllMainTARGETLIBS = \$(_COMMONSDKROOT)\Lib\$(_CPUINDPATH)\Coredll.libINCLUDES = $(_COMMONSDKROOT)\IncSOURCES = \

ioport.cpp \vgaports.cpp \

““sources” file (2)sources” file (2)

Simplifiy complexity of build environmentSimplifiy complexity of build environmentSpeeds up dependency checking for large projectsSpeeds up dependency checking for large projects““build.exe” is a front-end to “nmake.exe”build.exe” is a front-end to “nmake.exe”.\makefile .\makefile public\common\oak\misc\makefile.def public\common\oak\misc\makefile.defmakefile.def sets up global build settings (compiler, paths, makefile.def sets up global build settings (compiler, paths, etc…)etc…)makefile.def makefile.def .\sources .\sourcesRules are used to compile and linkRules are used to compile and link

SOURCES macros:SOURCES macros:TARGETNAME: base name. “foo” in foo.dllTARGETNAME: base name. “foo” in foo.dllTARGETTYPE: { PROGRAM || DYNLINK || LIBRARY }TARGETTYPE: { PROGRAM || DYNLINK || LIBRARY }SOURCES: list of source files (.c, .cpp, .asm, .s, .idl, etc…)SOURCES: list of source files (.c, .cpp, .asm, .s, .idl, etc…)CDEFINES: can add custom compiler optionsCDEFINES: can add custom compiler optionsTARGETLIBS: list of import .lib’s (TARGETLIBS: list of import .lib’s ( .dll’s) .dll’s)SOURCELIBS: list of static .libs (SOURCELIBS: list of static .libs ( .lib’s) .lib’s)

Targeted Build Targeted Build

The IDE did not expose an easy way for The IDE did not expose an easy way for customers to take the shortest path to customers to take the shortest path to building a single binarybuilding a single binary

Compile/Debug iterations were time-Compile/Debug iterations were time-consumingconsuming

Targeted Build SolutionTargeted Build Solution

Leverage command line to allow users Leverage command line to allow users to compile, link and copy to to compile, link and copy to flatreleasedir in one stepflatreleasedir in one step

Deptree change -> Makeimg in one Deptree change -> Makeimg in one stepstep

Platform Builder Project change -> Platform Builder Project change -> Makeimg in one stepMakeimg in one step

BSP change -> Makeimg in one stepBSP change -> Makeimg in one step

Source Control – Issues (4.2)Source Control – Issues (4.2)

Deploying SC for Platform Builder has Deploying SC for Platform Builder has been problematic for our customers been problematic for our customers

Many, Many, Many filesMany, Many, Many files

Some files are overwritten as part of buildSome files are overwritten as part of build

Embedded paths in project filesEmbedded paths in project files

Goal: Install once, sync Goal: Install once, sync dev’s dev’s

Goal: Manage QFE’s centrallyGoal: Manage QFE’s centrally

Goal: Able to collaborate on a projectGoal: Able to collaborate on a project

Source Control – Solutions (5.0)Source Control – Solutions (5.0)

crc.inicrc.ini

[public\COMMON\oak\bin\i386\build.exe][public\COMMON\oak\bin\i386\build.exe]CR=0x800BC8E1CR=0x800BC8E1PT=0PT=0

public\common\oak\bin\i386\crcgen.exepublic\common\oak\bin\i386\crcgen.exe

Removed Hard-coded paths from ALL project filesRemoved Hard-coded paths from ALL project files

QFE metadata moved: registry QFE metadata moved: registry disk disk

QFE’s ship with .ini for files that will be updatedQFE’s ship with .ini for files that will be updated

Targeted Build == less disk i/o overall – important for Targeted Build == less disk i/o overall – important for ClearCase and some other SC systemsClearCase and some other SC systems

Cloning GoalsCloning Goals

Allow modifications to the Wince OS Allow modifications to the Wince OS Public tree without side effectsPublic tree without side effects

Modifications to drivers bound to Modifications to drivers bound to workspace, not a BSPworkspace, not a BSP

Allow for easier path to exporting Allow for easier path to exporting customized drivers / appscustomized drivers / apps

Cloning SolutionCloning Solution

A subset of OS Design Items can be A subset of OS Design Items can be deep-copied (cloned) into a workspacedeep-copied (cloned) into a workspace

Replaceable library mechanism (linker-Replaceable library mechanism (linker-intercept) to implement cloning of OS intercept) to implement cloning of OS modulesmodules

Cloning ProcessCloning Process

SYSGEN

IF CLONEDMODULE

MS PUBLICLIBS

MS PUBLICLIBS

CLONEDLIBS

CLONEDLIBS

LINKER

FINAL MODULE

WORKSPACEBUILD

IF CLONED

LIBS

LINKER

FINAL CLONEDMODULE

BUILDCLONE

LIBS

Dynamic Debugging From _flatreleasedirDynamic Debugging From _flatreleasedir

Can build and debug modules from the Can build and debug modules from the Flat Release Dir without re-building, Flat Release Dir without re-building, re-downloading or re-flashing an re-downloading or re-flashing an OS imageOS image

Allow for IP-free support/debuggingAllow for IP-free support/debugging

Allow for more streamlined internal Allow for more streamlined internal development (build servers, etc)development (build servers, etc)

Allow for more rich third-party Allow for more rich third-party interactioninteraction

Summary – Increasing Summary – Increasing Productivity By:Productivity By:

Exposing the power of the command line Exposing the power of the command line build systembuild system

Fidelity between IDE Workspaces and Fidelity between IDE Workspaces and command linecommand line

Enhanced support for building and Enhanced support for building and debugging cyclesdebugging cycles

Source Control is made easierSource Control is made easier

After The Conference…After The Conference…

DevelopDevelop

BuildBuild

InstallInstall

BuildBuild

JoinJoin

InstallInstall

EnterEnter

JoinJoin

Full-featured trial versions of Windows CE Full-featured trial versions of Windows CE and/or Windows XP Embeddedand/or Windows XP Embedded

Cool stuff & tell us about it: Cool stuff & tell us about it: msdn.microsoft.com/embedded/community

Windows Embedded Partner Program:Windows Embedded Partner Program:www.mswep.com

Windows Mobile 5.0 Eval Kit including Windows Mobile 5.0 Eval Kit including Visual Studio 2005 Beta 2Visual Studio 2005 Beta 2

Mobile2Market Contest and win up to $25000: Mobile2Market Contest and win up to $25000: mobile2marketcontest.com

Microsoft Solutions Partner Program:Microsoft Solutions Partner Program:partner.microsoft.com

Tools & ResourcesTools & Resources

msdn.microsoft.com/msdn.microsoft.com/ embeddedembedded

microsoft.public.microsoft.public. windowsxp.embeddedwindowsxp.embedded windowsce.platbuilderwindowsce.platbuilder windowsce.embedded.vcwindowsce.embedded.vc

blogs.msdn.com/blogs.msdn.com/ mikehallmikehall

Windows CE 5.0 Eval KitWindows CE 5.0 Eval KitWindows XP Embedded Eval KitWindows XP Embedded Eval Kit

msdn.microsoft.com/msdn.microsoft.com/ mobilitymobility

microsoft.public.microsoft.public. pocketpc.developer pocketpc.developer smartphone.developer smartphone.developer dotnet.framework.compactframeworkdotnet.framework.compactframework

blogs.msdn.com/blogs.msdn.com/ windowsmobilewindowsmobile vsdteamvsdteam netcfteamnetcfteam

Windows Mobile 5.0 Eval KitWindows Mobile 5.0 Eval Kit

WebsitesWebsites

NewsgroupsNewsgroups

BlogsBlogs

ToolsTools

BuildBuild DevelopDevelop

© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.