Increasing Develper Productivity With Windows CE 5.0

Download Report

Transcript Increasing Develper Productivity With Windows CE 5.0

EMB313
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, SH4, 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
Win32
MFC 8.0, ATL 8.0
.NET Compact Framework
ASP.NET Mobile Controls
.NET Framework
ASP.NET
Windows Media
DirectX
Multimedia
Location Services
MapPoint
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
BUILD
DEB
UG
EDIT
DOWNLOAD
Agenda
Unified Build
Build System Overview (brief)
Targeted Build
Source Control
Cloning
Dynamic Debugging from
FlatReleaseDir
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 WorkspaceView
IDE’s native sub-project type = sources/dirs
visual editors for sources / dirs files
ResourceView / ClassView for OS tree
“Mixed-Mode Support”
3 Tier Unified Build
Architecture
File View Feature Parameter
View
View
PRESENTATION LAYER
The VS style visual represenation
of the OS build tree.
WINCEROOT
Public
Platform
Private
WinceRoot
Favorites
Build Directory
BUSINESS LOGIC LAYER
The following C# Objects provide
the business logic.
Shortcut 1
Deptree
Shortcut 2
Dirs
Sources
Source Files
Dirs
Files
DATA LAYER
The following are on-disk files that
contain read or read/write data for
initializing the Object Model.
PBXML
Sources
Files
Makefile.def
Wince.
bat
CESysgen
Files
Wince Tree
Directory
Structure
Misc
Source
Files
Unified Build highlights
Shell Extension
New Project Wizard
Source and Dirs Editors
FileView/ClassView/ResourceView
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 3rd 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
= DllMain
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  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)
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, 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
[public\COMMON\oak\bin\i386\build.exe]
CR=0x800BC8E1
PT=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
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
WORKSPACE
BUILD
SYSGEN
IF
CLONED
LIBS
BUILD
CLONE
LIBS
MS PUBLIC
LIBS
MS PUBLIC
LIBS
LINKER
FINAL
MODULE
CLONED
LIBS
IF
CLONED
MODULE
CLONED
LIBS
LINKER
FINAL
CLONED
MODULE
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
Mobile2Market Contest and win up to $25000:
mobile2marketcontest.com
Join
Microsoft Solutions Partner Program:
partner.microsoft.com
Tools & Resources
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
blogs.msdn.com/
mikehall
blogs.msdn.com/
windowsmobile
vsdteam
netcfteam
Tools
Windows CE 5.0 Eval Kit
Windows XP Embedded Eval Kit
Windows Mobile 5.0 Eval Kit
Websites
Newsgroups
© 2005 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.