EMB 313 Increasing Developer Productivity With Windows CE
EMB 313 Increasing Developer Productivity With Windows CE 5. 0 Matt Young Windows Mobile Joint Development Program (JDP) Microsoft
Hardware/Drivers OEM/IHV Supplied Programming Model Data Device Building Tools BSP (ARM, SH 4, MIPS) EDB SQL Server 2005 Mobile Edition Relational Native Server Side Standard PC Hardware and Drivers Windows XP DDK Windows Embedded Studio Platform Builder Lightweight Managed OEM Hardware and Standard Drivers SQL Server 2005 Express Edition SQL Server 2005 Win 32 MFC 8. 0, ATL 8. 0. NET Compact Framework ASP. NET Mobile Controls . NET Framework ASP. NET Windows Media Direct. X Multimedia Location Services Map. Point Development Tools Visual Studio 2005 Internet Security and Acceleration Server Exchange Server Live Communications Server Speech Server Communications & Messaging Device Update Agent Management Tools Image Update Software Update Services Systems Management Server Microsoft Operations Manager
GOAL: Optimize Developer Productivity Cycle
Agenda Unified Build System Overview (brief) Targeted Build Source Control Cloning Dynamic Debugging from Flat. Release. Dir
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
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 Workspace. View IDE’s native sub-project type = sources/dirs visual editors for sources / dirs files Resource. View / Class. View for OS tree “Mixed-Mode Support”
3 Tier Unified Build Architecture
Unified Build highlights Shell Extension New Project Wizard Source and Dirs Editors File. View/Class. View/Resource. View Driver Resolver and Dependency Analyzer
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 3 rd parties
System Generation Complete header and source code files Projectspecific header files Complete system libraries Linked libraries Module definitions (. def) filtered. def files
Complete Build Process 1. 2. 3. 4. 5. 6. 7. 8. Compilation phase (compilation at MS) Link Phase (preproc) Copy & filter headers and libraries (cefilter) Post-process project (postproc) Platform sysgen Build platform Create release directory (buildrel) Create downloadable image (makeimg) Note: Steps 1 -4 are repeated several times during a complete build, once for each “project” in the _DEPTREES list.
“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
“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 = Dll. Main TARGETLIBS = $(_COMMONSDKROOT)Lib$(_CPUINDPATH)Coredll. lib INCLUDES = $(_COMMONSDKROOT)Inc SOURCES = ioport. cpp vgaports. cpp
“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 publiccommonoakmiscmakefile. 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)
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 timeconsuming
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
Source Control – Issues (4. 2) Deploying SC for Platform Builder has been problematic for our customers 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
Source Control – Solutions (5. 0) crc. ini [publicCOMMONoakbini 386build. exe] CR=0 x 800 BC 8 E 1 PT=0 publiccommonoakbini 386crcgen. 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 Clear. Case and some other SC systems
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
Cloning Solution A subset of OS Design Items can be deep-copied (cloned) into a workspace Replaceable library mechanism (linkerintercept) to implement cloning of OS modules
Cloning Process
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
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
After The Conference… Build Install Full-featured trial versions of Windows CE and/or Windows XP Embedded Build Cool stuff & tell us about it: msdn. microsoft. com/embedded/community Join Windows Embedded Partner Program: www. mswep. com Develop Install Windows Mobile 5. 0 Eval Kit including Visual Studio 2005 Beta 2 Enter Mobile 2 Market Contest and win up to $25000: mobile 2 marketcontest. com Join Microsoft Solutions Partner Program: partner. microsoft. com
Tools & Resources Websites Newsgroups Blogs Tools Build Develop msdn. microsoft. com/ embedded msdn. microsoft. com/ mobility microsoft. public. windowsxp. embedded windowsce. platbuilder windowsce. embedded. vc microsoft. public. pocketpc. developer smartphone. developer dotnet. framework. compactframework blogs. msdn. com/ mikehall blogs. msdn. com/ windowsmobile vsdteam netcfteam Windows CE 5. 0 Eval Kit Windows XP Embedded Eval Kit Windows Mobile 5. 0 Eval Kit
© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
- Slides: 26