Build in Windows Mobile
Build in Windows
1 Build System
Windows Mobile下的编译分为四个阶段:
1. The Compile Phase
2. The Sysgen Phase
3. The Release Copy Phase
4. The Make Run-Time Image Phase
在不同的阶段,它们分别调用不同的工具(.bat文件或 .exe文件)完成不同的工作,如图1.1所示:
Compile Phase
1. 编译器(Build.exe)和连接器(Linker)利用源代码文件生成静态库文件。
2. 一些本地化的工作(Localization tasks)把resource script (.rc) 文件编译成binary resource (.res) 文件。
Sysgen phase
1. 运行Cecysgen.bat来确定应该设置或清除哪些变量。
2. 编译系统过虑头文件,根据OS已导出(exported)的函数原型生成新的头文件。
3. 生成模块(modules)需要导入(Import libraries)的库。
4. 系统的配置文件经过虑后生成一个新的配置文件。
Release Copy phase
1. 把生成OS image需要的所有文件都拷贝到Release目录下。
Make Run-Time Image phase
1. 用Release目录下的文件生成OS image。
2 Build in Windows Mobile
2.1 初次编译整个BSP
利用New Build Window Wizard,可以在桌面上建立三个命令行的快捷方式:Update Loader - ×××、Base OS - ×××、Build All -×××,分别对应于三个批处理文件UpdateLoaderEnv.bat
、
BaseOSEnv.bat
、
BuildAll.bat
。
Update Loader Shortcut:
Update Loader Shortcut对应于Update Loader的编译。双击该快捷方式,运行UpdateLoaderEnv.bat
对编译环境进行设置后,在命令行提示符中输入:
blddemo clean –q
,再敲回车即可编译整个
Update Loader
。如图
2.1
图
2.1.1
Base OS Shortcut:
Base OS Shortcut对应于operating system的编译。双击该快捷方式,运行BaseOSEnv.bat
对编译环境进行设置后,在命令行提示符中输入:
blddemo clean –q
,再敲回车即可编译整个
operating system。但完成这个命令的前提是
%_PLATFORMROOT%\%_TGTPLAT%\Files目录下存在uldr.nb0文件。如图
2.2
图
Build All Shortcut:
Build All Shortcut对应于整个代码的编译,双击该快捷方式后,自动完成整个代码的编译,它先编译 Update Loader,然后再编译Operating System,是上述两部分工作的总和。
通常,初次Rebase一个BSP后,都应该运行该快捷方式,对整个代码进行编译。但如果初次Rebase后的代码中%_PLATFORMROOT%\%_TGTPLAT%\Files目录下已经存在 uldr.nb0文件,而又不需要对Update Loader进行调试,这是就可以运行Base OS Shortcut,中命令行中输入blddemo clean –q,再敲回车即可,这样就可以节省编译Update Loader的时间。
2.2 Rebase新基线后Operating System的编译
因为通常我们都是对Operating System部分进行调试,所以以下的讨论都是针对Operating System的编译,Update Loader部分的编译是类似的。
新的基线生成时,大部分模块的代码都做了根新。Rebase一条新基线后,我们需要在新的基线上工作,这时就要重新生成OS image。双击Base OS Shortcut,在命令行提示符下输入blddemo clean –q,再敲回车。下面对blddemo.bat这个批处理文件的参数做一点说明。
blddemo.bat有两个常用的参数:clean和-q
clean
使用这个参数会清除Cesysgen 目录,它们是%_PROJECTROOT%\Cesysgen and %_PLATFORMROOT%\Cesysgen。
以下两种情况需要使用这个参数:
1. 修改了%_WINCEROOT%\Public\CEBASE\OAK\Misc目录下的Cesysgen.bat文件。
2. 修改了会影响到Cesysgen.bat的环境变量,如以SYSGEN 或 BSP为前缀的变量。
如果确定以上两种情况都不存在,可以去掉 clean这个参数,这样可以节省清除和重建Cesysgen 目录的时间。
-q
使用这个参数表示编译系统不会编译Public目录下的代码,这样可以节省编译Public目录的时间。
一般情况下这个参数都会被使用,除非你修改了Public目录下的代码。
当然,blddemo.bat还有其它的可选参数,关于这些参数的说明可在Windows Mobile的帮助文档中找到,地址:
Adaptation Kit User's Guide > Build System Overview > Build System Tools
2.3 模块调试过程中的编译
模块调试过程中的编译有两种情况,一是源代码修改后,需要重新编译;二是相关的配置文件(如 .reg文件)修改后,需要重新生成OS image。
2.3.1 源代码的修改
Microsoft Platform Builder for Windows Mobile 5.0提供了一个功能,使得我们在调试时,可以用新生成的模块代替旧的模块而不需要重新生成OS image,而且可以用新的debug版的模块代替旧的retail版的模块,这样可以节省大量的时间。
下面以IMPACE的Camera Driver模块为例,说明如何操作:
1. 双击Base OS Shortcut,在命令行提示符下用cd 命令进入到需要编译的模块的目录。
在命令行提示符下输入以下命令,敲回车。
cd PLATFORM\IMPCE\SRC\DRIVERS\CAMERA
图
2. 如果需要生成一个debug版本的模块,执行这一步,否则,跳过。
在命令行提示符下输入以下命令,敲回车。
set WINCEDEBUG=debug // WINCEDEBUG和=之间不能有空格
图
3. 在命令行提示符下输入以下命令,敲回车,使编译完成后把相关的文件拷贝到Release目录下。
set WINCEREL=1 //一般可省略,WINCERE在%_TGTPLAT%.bat会设置为1
图
4. 在命令行提示符下输入以下命令,敲回车,编译当前模块。
Build // 如果要清除旧的.obj文件,可加参数 –c,但会多费点时间
Build.exe也有其它的一些可选参数,常用的一般是 -c ,关于Build.exe其它参数的说明,在Windows Mobile的帮助文档上有详细的说明,地址:
Adaptation Kit User's Guide > Build System Overview > Build System Tools
图
5. 在Platform Builder的File菜单中,选择Open。
图
6. 选择BSP的Release目录,打开相应的文件,如FLASH.bin。
图
7. 在Platform Builder的Target菜单中,选择Release Directory Modules。
图
8. 在弹出的菜单中,选择Add,再在弹出的菜单中输入或选择模块相应的模块,点OK。
图
9. 运行系统,开始调试。
2.3.2 配置文件的修改
在调试过程中,如果需要对配置文件做修改,来改善系统的性能,增加或减少OS image中模块,则可以直接在Release目录下修改经过虑后的该配置文件,然后双击Base OS Shortcut,在命令行提示符下输入makeimg,敲回车。
图
例如:
需要修改.reg文件,在Release目录下打开platform.reg,找到相应的项,修改完成后makeimg。
调试成功后,再在这些配置文件的原文件上做修改。