Download presentation
Presentation is loading. Please wait.
Published byDoris Lane Modified over 9 years ago
1
EMB313 Increasing Developer Productivity With Windows CE 5.0 Matt Young Windows Mobile Joint Development Program (JDP) Microsoft
2
M anagement T ools C ommunications & M essaging Device Update Agent Software Update Services Live Communications Server Exchange Server Internet Security and Acceleration Server Speech Server Image Update L ocation S ervices M ultimedia MapPoint DirectX Windows Media Visual Studio 2005 D evelopment T ools MFC 8.0, ATL 8.0 Win32 N ative M anaged S erver S ide L ightweight R elational SQL Server 2005 Express EditionEDB D ata P rogramming M odel D evice B uilding T ools D evice B uilding T ools H ardware/ D rivers Windows XP DDK Windows Embedded Studio Platform Builder OEM/IHV Supplied BSP (ARM, SH4, MIPS) OEM Hardware and Standard Drivers Standard PC Hardware and Drivers SQL Server 2005SQL Server 2005 Mobile Edition ASP.NET Mobile ControlsASP.NET.NET Compact Framework.NET Framework Microsoft Operations Manager Systems Management Server
3
GOAL: Optimize Developer Productivity Cycle
4
Agenda Unified Build Build System Overview (brief) Targeted Build Source Control Cloning Dynamic Debugging from FlatReleaseDir
5
Unified Build Vision “just one build system please…” The IDE becomes a thin client over the command line build expose build system “tribal knowledge” Enhanced, integrated documentation Dialogs catalog meta data linked helped Don’t slow down power users IDE Build = Command Line Build
6
Unified Build Solution IDE build engine shells out command line Build meta-data is parsed real-time from build system files Expose the OS tree in the WorkspaceView IDE’s native sub-project type = sources/dirs visual editors for sources / dirs files ResourceView / ClassView for OS tree “Mixed-Mode Support”
7
3 Tier Unified Build Architecture
8
Unified Build highlights Shell Extension New Project Wizard Source and Dirs Editors FileView/ClassView/ResourceView Driver Resolver and Dependency Analyzer
9
Goals of the Build System Create binaries and Software Development Kit’s for devices based on Windows CE. Support selecting, building, and managing the dependencies of Operating System components. Enable building vertical solutions Create a “cesysgen” directory in that… contains drivers, libraries, programs, registry settings, header files, and other components as selected by the OEM. This “cesysgen” directory will serve as the basis for developing platform code and for generating SDKs for distribution to 3rd parties
10
System Generation Complete header and source code files Complete system libraries Module definitions (.def) Project- specific header files Linked libraries filtered.def files
11
Complete Build Process 1. Compilation phase (compilation at MS) 2. Link Phase (preproc) 3. Copy & filter headers and libraries (cefilter) 4. Post-process project (postproc) 5. Platform sysgen 6. Build platform 7. Create release directory (buildrel) 8. Create downloadable image (makeimg) Note: Steps 1-4 are repeated several times during a complete build, once for each “project” in the _DEPTREES list.
12
“DIRS” file DIRS file is “node” in build tree Lists subdirectories to build Build.exe does depth-first recurse “\” is continue line special char Tip: Beware of extra spaces! DIRS =\ Display \ Mouse \ Keyboard \ Ethernet DIRS =\ Display \ Mouse \ Keyboard \ Ethernet
13
“sources” file Extension to nmake environment What to compile Type of module (exe, dll, lib) Include & link path, etc SOURCES file is base project type in IDE. (new) Graphical SOURCES editor in IDE. (new) TARGETNAME = Kbdmouse TARGETTYPE = DYNLINK DLLENTRY = DllMain TARGETLIBS = \ $(_COMMONSDKROOT)\Lib\$(_CPUINDPATH)\Coredll.lib INCLUDES = $(_COMMONSDKROOT)\Inc SOURCES = \ ioport.cpp \ vgaports.cpp \ TARGETNAME = Kbdmouse TARGETTYPE = DYNLINK DLLENTRY = DllMain TARGETLIBS = \ $(_COMMONSDKROOT)\Lib\$(_CPUINDPATH)\Coredll.lib INCLUDES = $(_COMMONSDKROOT)\Inc SOURCES = \ ioport.cpp \ vgaports.cpp \
14
“sources” file (2) Simplifiy complexity of build environment Speeds up dependency checking for large projects “build.exe” is a front-end to “nmake.exe”.\makefile public\common\oak\misc\makefile.def makefile.def sets up global build settings (compiler, paths, etc…) makefile.def .\sources Rules are used to compile and link SOURCES macros: TARGETNAME: base name. “foo” in foo.dll TARGETTYPE: { PROGRAM || DYNLINK || LIBRARY } SOURCES: list of source files (.c,.cpp,.asm,.s,.idl, etc…) CDEFINES: can add custom compiler options TARGETLIBS: list of import.lib’s ( .dll’s) SOURCELIBS: list of static.libs ( .lib’s)
15
Targeted Build The IDE did not expose an easy way for customers to take the shortest path to building a single binary Compile/Debug iterations were time- consuming
16
Targeted Build Solution Leverage command line to allow users to compile, link and copy to flatreleasedir in one step Deptree change -> Makeimg in one step Platform Builder Project change -> Makeimg in one step BSP change -> Makeimg in one step
17
Source Control – Issues (4.2) Deploying SC for Platform Builder has been problematic for our customers Many, Many, Many files Some files are overwritten as part of build Embedded paths in project files Goal: Install once, sync dev’s Goal: Manage QFE’s centrally Goal: Able to collaborate on a project
18
Source Control – Solutions (5.0) crc.ini [public\COMMON\oak\bin\i386\build.exe]CR=0x800BC8E1PT=0 public\common\oak\bin\i386\crcgen.exe Removed Hard-coded paths from ALL project files QFE metadata moved: registry disk QFE’s ship with.ini for files that will be updated Targeted Build == less disk i/o overall – important for ClearCase and some other SC systems
19
Cloning Goals Allow modifications to the Wince OS Public tree without side effects Modifications to drivers bound to workspace, not a BSP Allow for easier path to exporting customized drivers / apps
20
Cloning Solution A subset of OS Design Items can be deep-copied (cloned) into a workspace Replaceable library mechanism (linker- intercept) to implement cloning of OS modules
21
Cloning Process
22
Dynamic Debugging From _flatreleasedir Can build and debug modules from the Flat Release Dir without re-building, re-downloading or re-flashing an OS image Allow for IP-free support/debugging Allow for more streamlined internal development (build servers, etc) Allow for more rich third-party interaction
23
Summary – Increasing Productivity By: Exposing the power of the command line build system Fidelity between IDE Workspaces and command line Enhanced support for building and debugging cycles Source Control is made easier
24
After The Conference… Develop Build InstallBuildJoin Install Enter Enter Join Full-featured trial versions of Windows CE and/or Windows XP Embedded Cool stuff & tell us about it: msdn.microsoft.com/embedded/community msdn.microsoft.com/embedded/community Windows Embedded Partner Program: www.mswep.com www.mswep.com Windows Mobile 5.0 Eval Kit including Visual Studio 2005 Beta 2 Mobile2Market Contest and win up to $25000: mobile2marketcontest.com mobile2marketcontest.com Microsoft Solutions Partner Program: partner.microsoft.com partner.microsoft.com
25
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
26
© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.