最近要做一个Windows CE系统上的串行通讯程序,因为在此之前并没有接触过有关Windows嵌入式方面的应用开发,所以搭建开发环境成了摆在面前的第一道难题。本文将记录并总结我搭建Windows Embedded CE 6.0开发环境的步骤和过程中碰到的问题,希望给同为Windows嵌入式开发初学者的朋友们提供一个参考。
我最终确定的开发环境方案为:Windows XP SP3 + Visual Studio 2005 SP1 + Windows Embedded CE 6.0. 我目前的操作系统是Windows Server 2003, Visual Studio 2005 (以下简称VS2k5)和 Windows Embedded CE 6.0(以下简称CE6)都可以直接在server系统上安装,但是考虑到后期要用模拟器(Device emulator)进行调试,而使用模拟器有一个必要的组件Virtual Machine Network Driver for Microsoft Device Emulator是存在于Virual PC 2007中(不安装的话模拟器启动黑屏),但是Virtual PC 2007不能安装在Server操作系统中,其替代版本为Virtual Server 2005 R2 SP1。因此我在Server操作系统中用虚拟机(虚拟机采用了Sun的VirtualBox)创建了一个Windows XP SP3的虚拟机,在该虚拟机上搭建CE6开发环境。
第一步,安装VS2k5,安装完成后要安装VS2k5 SP1补丁(KB926601),否则后面的Platform Builder SP1无法安装。
第二步,安装Windows Embedded CE 6.0,官方下载地址为:
http://www.microsoft.com/downloads/details.aspx?familyid=7E286847-6E06-4A0C-8CAC-CA7D4C09CB56&displaylang=en
本文附件中提供一个离线安装的文件表(点击下载),把该文件表导入迅雷可以下载完整的离线安装包,大概有3.7G大小。CE6的安装界面如下图所示:
第三步安装Windows Embedded CE 6.0 Platform Builder Service Pack 1,官方下载地址为:
http://www.microsoft.com/downloads/details.aspx?FamilyId=BF0DC0E3-8575-4860-A8E3-290ADF242678&displaylang=en。如果没有安装Vs2k5 SP1补丁,需要先安装该补丁。
安装完成以上三步以后,打开VS2k5, 启动界面上我们可以看到Installed Products中增加了一个Platform Builder for CE6.0,说明CE6已经安装成功了,CE6是以add-on的方式安装在VS2k5中的。
第四步安装Microsoft Device Emulator 2.0,官方下载地址为:http://www.microsoft.com/downloads/details.aspx?FamilyID=dd567053-f231-4a64-a648-fea5e7061303&displaylang=en,2.0版本的模拟器是对VS2k5中默认安装的1.0版本的升级。
第五步是安装Virtual Machine Network Driver for Microsoft Device Emulator,这个组件保证模拟器的正常运行,如果不安装的话模拟器启动以后是黑屏,而且这个问题我也遇到过了,官方下载地址为:http://www.microsoft.com/downloads/details.aspx?FamilyID=dc8332d6-565f-4a57-be8c-1d4718d3af65&DisplayLang=en,这个下载已经被微软关掉了,推荐下载Microsoft Virtual PC 2007,官方下载地址为:http://www.microsoft.com/downloads/details.aspx?FamilyID=04d26402-3199-48a3-afa2-2dc0b40a73b6&DisplayLang=en,但是这里有一个问题,VPC2007能在Windows XP / Vista / Windows Server 2003 Standard上安装而无法在Enterprise上安装,Enterprise上只能装更为高级的Virtual Server 2005。所以在选择操作系统的时候要有所注意。因为我使用的Windows XP操作系认,所以这里直接安装了Virtual PC 2007。
接下来要用刚刚安装好的PB定制一个Windows CE 6.0系统,系统定制完成后可以加载到设备模拟器上,以便我们针对这个系统进行开发和测试。打开VS2k5,选择新建一个新安装的OS Design项目模板创建,进入向导页面。
在Board Support Packages中推荐选择Device Emulator: ARMV4I。这是很重要的一步,同时这里要提到一点,设备模拟器是ARM架构的,也就是说x86架构的CE系统是不能在模拟器上运行的,这个问题我也遇到过了,用CEPC: x86定制了一个系统,编译完成后附加到设备模拟器的时候报出错误: Invalid or missing ROM image. 不过选错了也没有关系,在用模板创建完成后仍然可以修改这些选项。
PB提供了一系列可供选择的设计模板,我选择的是PDA Device -> Mobile Handheld,然后一路下一步就可以完成创建,创建的最后一步确定后会弹出一个Catalog Item Notification的对话框,点击Acknolwlege确定,完成创建。Windows CE系统定制的话题会在以后的心得文章中介绍。在Vs2k5菜单中,选择Tools->Device Emulator Manager, 打开设备模拟器管理窗口,里面列出了现在可用的所有虚拟机,例如Pocket PC 2003, Smartphone 2003等,但是我们现在还找不到WINCE6_EMU的模拟器,接下来我们要对定制好的系统进行编译并生成SDK。
编译之前要提到一点就是取消KITL(no IMGNOKITL=1),如果不取消这一选项的话在非Debug模式下模拟器是不能启动的。右单击项目名称,选择Properties,在Build options中取消对"Enable KITL(no IMGKITL=1)"的选中。然后就可以进行编译了,编译的时间会相对长一些,取决于定制功能的多少。
编译成功之后,在RelDir对应的目录下生成了一个名为NK.bin的文件,这个文件就是给虚拟机使用的运行时镜像,解下来我们要把编译完成的系统附加到设备。在此之前要对连接属性进行一些设置。打开Vs2k5菜单,选择Target -> Connectivity options, 打开目标设备连接属性对话框,Target Device选择CE Device, Download和Transport都选择Device Emulator (DMA),Debugger选择None。针对模拟器运行参数的其他设置,比如屏幕尺寸,内存大小等等,都是要在这个对话框中进行设置的.
修改完配置后点击Apply并关闭窗口,在Vs2k5中选择Target->Attach device开始附加到设备,这个时间也会有几分钟,Output窗口中会显示添加的状态,如果输出窗口卡在某一个位置上,模拟器还是黑屏的话,有可能是前面的某一步配置出现问题。需要回过头来检查,模拟器正常启动后,就可以看到一个Windows CE系统的模拟器窗口。
接下来我们要创建并安装SDK,安装SDK的目的是在Vs2k5中提供对目标设备的开发支持,例如类库,模拟器等。在Vs2k5菜单中选择Project -> Add new SDK, 打开SDK属性页。在Emulator中,将Configuration修改为Device Emulator ARMV4I Debug,填写必要的信息后点击确定,然后在项目窗口中右单击刚才创建的SDK,选择编译。编译完成后生成一个msi安装文件,位于OSDesign项目文件夹下,SDKS/<SDKname>目录中。关闭Vs2k5,并击运行这个SDK并安装。
安装完成后,打开Vs2k5,选择菜单Tools -> Device Emulator Manager, 打开设备模拟器管理窗口,我们可以看到WINCE6_EMU下已经添加了我们刚才创建的系统,右单击这个项目选择Connect, 弹出模拟器窗口,CE系统启动成功。
至此已经完成了由PB定制CE6操作系统,生成SDK并安装到开发环境的整个步骤。安装完成后我们便可以在这个定制的CE6平台上开发调试相关的应用程序了。