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所示:

图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 WindowsMobile

2.1初次编译整个BSP

利用New Build Window Wizard,可以在桌面上建立三个命令行的快捷方式:Update Loader -×××、Base OS -×××、Build All -×××,分别对应于三个批处理文件UpdateLoaderEnv.batBaseOSEnv.batBuildAll.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

 

图2.1.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.3.1

2.      如果需要生成一个debug版本的模块,执行这一步,否则,跳过。

在命令行提示符下输入以下命令,敲回车。

set   WINCEDEBUG=debug // WINCEDEBUG和=之间不能有空格

图2.3.2

3.      在命令行提示符下输入以下命令,敲回车,使编译完成后把相关的文件拷贝到Release目录下。

set  WINCEREL=1             //一般可省略,WINCERE在%_TGTPLAT%.bat会设置为1

图2.3.3

4.      在命令行提示符下输入以下命令,敲回车,编译当前模块。

Build       //如果要清除旧的.obj文件,可加参数–c,但会多费点时间

Build.exe也有其它的一些可选参数,常用的一般是-c ,关于Build.exe其它参数的说明,在Windows Mobile的帮助文档上有详细的说明,地址:

Adaptation Kit User's Guide > Build System Overview > Build System Tools

图2.3.4

5.      在Platform. Builder的File菜单中,选择Open。

图2.3.5

6.      选择BSP的Release目录,打开相应的文件,如FLASH.bin。

图2.3.6

7.      在Platform. Builder的Target菜单中,选择Release Directory Modules。

图2.3.7

8.      在弹出的菜单中,选择Add,再在弹出的菜单中输入或选择模块相应的模块,点OK。

图2.3.8

9.      运行系统,开始调试。

2.3.2配置文件的修改

在调试过程中,如果需要对配置文件做修改,来改善系统的性能,增加或减少OS image中模块,则可以直接在Release目录下修改经过虑后的该配置文件,然后双击Base OS Shortcut,在命令行提示符下输入makeimg,敲回车。

图2.3.9

例如:

需要修改.reg文件,在Release目录下打开platform.reg,找到相应的项,修改完成后makeimg。

调试成功后,再在这些配置文件的原文件上做修改。

Build in Windows Mobile相关推荐

  1. Memory Information on Windows Mobile(续)

    在<Memory Information on Windows Mobile>一文中,讲述了Windows Mobile 6 Professional SDK中的一个关于在今日插件中显示内 ...

  2. Windows Mobile下访问Sqlite的Native C++封装

    背景 当前移动设备开发领域,在本地数据存储方面,Sqlite几乎成了事实标准,Andriod (android.database.sqlite),iPhone (SQLite for iPhone S ...

  3. Windows Mobile 6.5.3 Developer Tool Kit

    目前,微软正在花大量的人力物力财力做Windows Phone 7,而且据说以后会给出硬件平台配置需求,目前的Windows Mobile 6.x系列机器无法升级到Windows Phone 7. 估 ...

  4. .NET Compact Framework s60v3(在S60上运行Windows Mobile程序)

    注:以下内容未经过本人测试,只是看到该消息,本人没有S60手机,无法测试真实性和可靠性,但希望能够将消息告诉给所有对.Net CF热爱的同志.这将是一缕曙光,使得S60上运行WM程序变为可能. 原贴如 ...

  5. windows mobile 编译(生成镜像)提速

    windows mobile 编译镜像总是让人难以忍受的耗时,当然我们不能每次修改一点东西就build All一次. 下面是自己工作中积累的[不同情况下使用的编译命令]来加速生成镜像的过程,不排除有错 ...

  6. 基于 Windows Mobile 的 Pocket PC 和 Smartphone 的开发工具简介

    Microsoft Corporation 2003 年 8 月 适用于:     Microsoft® eMbedded Visual Tools 3.0 - 2002 Edition     Mi ...

  7. Windows Mobile动手实验集锦

    Windows Mobile动手实验集锦 http://blog.csdn.net/zhangbosun/archive/2007/06/14/1652862.aspx 不过文章里提到的一些链接已经失 ...

  8. Windows Mobile 开发常见问题集(转自zsu_darkwind的专栏)

    Windows Mobile 开发常见问题集 1.Q:新建项目的时候选择哪个项目类型才能创建智能设备的应用程序? A:在Visual Studio的新建项目对话框中选择Visual C#或者Visua ...

  9. Windows Mobile远程控制软件Pocket Controller Pro简介

    Pocket Controller Pro是一款优秀的PPC/Windows Mobile远程控制软件,功能非常强大,安装完毕后,不仅可通过同步信道控制远程设备,此外还可以通过TCP/IP操控远程设备 ...

最新文章

  1. 【c语言】查找200以内既是3的倍数又是5的倍数的数
  2. 防止程序重复执行的单元
  3. springmvc进阶(5):mvc:default-servlet-handler详解
  4. Access数据库OleDbHelper
  5. html5与css3都要学吗,前端要学css3吗?
  6. springboot 不响应字段为空_面试官扎心一问:Tomcat 在 SpringBoot 中是如何启动的?...
  7. SMTP 服务器要求安全连接或客户端未通过身份验证的各个解决方案(C#)
  8. 324. Wiggle Sort II
  9. 句句真研—每日长难句打卡Day12
  10. Helm 3 完整教程(三):chart 的文件结构和字段详解
  11. 用鼠标获取任意窗口的句柄, 并把它当作干儿子
  12. 必须掌握的30种SQL语句优化
  13. eclipse as 项目编码修改
  14. SAGAN——Self-Attention Generative Adversarial Networks
  15. 曹汛:计算摄像学研究 | VALSE2017之十六
  16. IOS sqlite3 使用简单介绍 使用简单介绍
  17. Mkz-Cloud 部署之路
  18. AS 5637.1跟AS 3837是什么关系?
  19. 基于单片机心率监测的LED灯辅助睡眠系统设备-毕业设计
  20. 计算机人工智能分数,分数一般想学人工智能?这6所双一流大学是首选

热门文章

  1. JAVA之路——前端与后端的职业选择
  2. CARS: 华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020
  3. 【crunch bang】字体美化
  4. Windows 10资源管理器经常无故自动重启
  5. js强制进行QQ对话
  6. 手撕spring核心源码,彻底搞懂spring流程
  7. 2015年,火星人大闹美国
  8. linux下安装wine
  9. kali安装完整版渗透工具
  10. 信息安全行业入门与各类技术简介(扫盲贴)