emb313 increasing developer productivity with windows ce 5.0 matt young windows mobile joint...
Post on 24-Dec-2015
221 Views
Preview:
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
top related