开始WinCE7的第一个项目——虚拟机上的CEPC

转自http://developer.51cto.com/art/201104/257488.htm

近日,微软发布了Windows Embedded Compact 7(以下简称WEC7)的Public Community Technology Preview(以下简称PCTP)版本。一直盛传的WinCE7是否就因此改名为WEC7还不得而知,至少目前开发者们称其为WinCE7,也是延续着对WinCE的期望。

作为预览版本,PCTP已经提供了正式版的大部分内容,作为技术开发者,我们可以建立WEC7的项目来测试WEC7的各种新特性。

作为第一个WEC7项目,最好的就是虚拟机上运行的CEPC(以下简称Virtual CEPC)了,因为我们的开发工具本来就是PC,所以不需要任何外部硬件,就可以开始玩转WEC7了。本文的目的就是帮助大家在自己的PC上建立起WEC7的虚拟机CEPC项目,开始自己的WEC7之旅。

关于WEC7开发环境的安装,大家可以参考相关文章,这里就不再赘述。
下面就开始我们第一次的WEC7之旅:

一 系统要求
对于Windows 7的用户而言,需要安装下列软件及环境:
1. Windows 7专业版,Windows 7旗舰版或者Windows 7企业版(很遗憾Windows 7家庭高级版不在支持之列)
2. Windows Virtual PC
3. Visual Studio 2008
4. Windows Embedded Compact 7

Windows XP或者Windows Vista的用户需要:
1. Windows XP专业版,Windows Vista商业版,Windows Vista旗舰版或者Windows Vista企业版
2. Windows Virtual PC 2007
3. Visual Studio 2008
4. Windows Embedded Compact 7

这里需要提示一点,就是如果要建立CEPC项目的话,在安装WEC7的时候一定要选上x86 Architecture的支持。
这里就以Windows 7为平台,给大家介绍整个项目建立过程。在Windows XP及Windows Vista下面也是类似的。

二 制作CEPC系统镜像
要想在Virtual PC下面运行WEC7,首先你需要建立一个CEPC的项目来获得系统镜像。因此需要下面几个步骤
1. 在Platform Builder下建立一个基础的项目
2. 配置项目以符合Virtual CEPC的要求
3. 添加删除一些系统组件
4. 选择合适的Virtual PC键盘驱动
5. 编译项目

下面就对这些步骤一一做详细的介绍

在Platform Builder下建立一个基础的项目:
这个步骤对于使用过WinCE以前版本的开发者来说是非常轻松的工作。打开WEC7的开发环境Visual Studio 2008,选择“文件”菜单下新建一个项目。
在“新建项目”页中,选择“Platform Builder 2008”,然后在右边模板处,选择“OS Design”,名字我们叫做VCEPC。 

 

配置项目以符合Virtual CEPC的要求:
点击“OK”之后下一步到选择BSP的窗口,这里选择“Virtual PC: x86”。

开始WinCE7的第一个项目——虚拟机上的CEPC_第1张图片


接下来就会出现设计模板页,在本页中你可以选择想要用在模拟器中的模板。这里我们选择Enterprise Web Pad作为Virtual CEPC的基础模板。
在设计模板页里点开“PDA Device”目录,选择其中的“Enterprise Web Pad”。 

开始WinCE7的第一个项目——虚拟机上的CEPC_第2张图片


单击“Next”进入应用程序和媒体页,这里你可以选择任意你想要加入到项目中来的媒体组件及应用程序。 

开始WinCE7的第一个项目——虚拟机上的CEPC_第3张图片


为了演示,这里我们直接点击“Next”。随后进入到网路与通信设置页,这里我们选上“Wired Local Area Network”,以便以后我们通过虚拟网卡与本地PC连接。 

开始WinCE7的第一个项目——虚拟机上的CEPC_第4张图片

选择之后,点击“Next”,我们就来到了新建项目的最后一步,这里有一个选项可以让你在完成配置之后立即编译这个项目。因为后面我们还需要做一些修改,所以这里把这个选项留空。

开始WinCE7的第一个项目——虚拟机上的CEPC_第5张图片 


到这里,项目的新建工作就全部完成了。点击“Finish”。
这时根据你选择的系统组件,可能会弹出来一个安全警告窗口,只需要选择“Acknowledge”即可。
添加删除一些系统组件:
下面你可以根据自己的需要添加其他一些想要的系统组件。
比如,大家对WEC7的Silverlight for Windows Embedded(以下简称SWE)都很感兴趣,我们下面就添加SWE的支持到我们的项目里来。
在项目的开发环境中选择“Catalog Items View”配置窗口。(如果你的开发环境默认没有显示Catalog Items View,你可以在“View”菜单下选择“Other Windows”,然后选择“Catalog Items View”)然后打开“Core OS”->“Windows Embedded Compact” -> “Shell and User Interface” -> “Silverlight for Windows Embedded”。然后勾选“Silverlight for Windows Embedded”。成功之后选择“File”->“Save All”来保存修改。 

开始WinCE7的第一个项目——虚拟机上的CEPC_第6张图片

选择合适的Virtual PC键盘驱动:
下面我们还需要将键盘驱动加入到项目中来。这里根据你使用的Virtual PC版本不同,设置略有不同。
如同前面添加SWE支持的方法,在“Catalog Items View”中找到如下路径“BSP”->“Virtual PC”-> “Device Drivers”->“Keyboard”。
如果你使用的是Virtual PC 2007,选择“VCEPC Keyboard driver:VPC2007”;如果使用Windows Virtual PC,就选择“VCEPC Keyboard driver:WIN7VPC”。我们这里使用的环境是Windows 7配合Virtual PC,所以我们选择后者。 

开始WinCE7的第一个项目——虚拟机上的CEPC_第7张图片 
添加好组件之后,选择保存。
编译项目:
在开发环境的“Build”菜单中选择“Build Solution”就可以开始编译过程了。
在“Output”窗口中你可以看到编译过程中产生的信息。整个编译过程还是需要花费一些时间的,具体取决于你的PC的速度。
如果编译过程中出现错误,可以仔细对比前面的设置步骤并检查自己的系统环境是否符合需求,另外关闭杀毒软件也许可以解决一些编译问题。
编译好之后,你会在WEC7的安装目录下的如下路径找到系统镜像文件:“你的WEC7安装目录\OSDesigns\VCEPC\VCEPC\RelDir\ VirtualPC_x86_Release\NK.bin”。随后将介绍如何把这个VCEPC系统镜像在Virtual PC中加载起来。

三 配置Virtual PC(以下简称VPC)
在获得了CEPC的镜像之后,我们需要配置一下VPC,新建一个虚拟机以便运行CEPC的镜像。
首先运行VPC,这时会打开一个叫做“虚拟机”的文件夹。这个是Windows 7中不同的一点,VPC当作一个系统补丁安装,并且管理上不是一个单独的应用程序了。
在这个文件夹中,点击上方的“创建虚拟机”按钮,会弹出来“创建虚拟机”的向导窗口,这里选择好虚拟机文件夹位置,名称我们叫做“VCEPC”。 

开始WinCE7的第一个项目——虚拟机上的CEPC_第8张图片


下一步进入到内存和网络配置。这里可以指定使用的RAM大小,我们使用默认的512MB。 

开始WinCE7的第一个项目——虚拟机上的CEPC_第9张图片


点击下一步,将会进入到创建虚拟硬盘的窗口,这里,WEC7已经给我们准备好了一个虚拟硬盘文件,所以我们选择“使用现有虚拟硬盘”,然后位置为“你的WEC7安装目录\platform\VirtualPC\VM\hd0_sample.vhd”。 

开始WinCE7的第一个项目——虚拟机上的CEPC_第10张图片

点击“创建”之后,你会在“虚拟机”文件夹下看到一个叫做“VCEPC.vmcx”的文件,双击启动虚拟机,你会看到启动程序如下:

开始WinCE7的第一个项目——虚拟机上的CEPC_第11张图片  
在5秒之内按下键盘空格键会进入到启动菜单中: 

开始WinCE7的第一个项目——虚拟机上的CEPC_第12张图片

四 启动CEPC
1 配置Platform Builder
在配置好VPC之后,我们返回来看Platform Builder(以下简称PB)中的配置。系统镜像需要传输到VPC中才能运行,这种传输我们使用虚拟网卡的技术,通过网络(用过以前WinCE版本的朋友应该很清楚,过程类似于EBoot下载镜像的过程)把镜像传输给VPC,然后由VPC启动。所以前面VPC中使用的虚拟硬盘中,实际上已经包含了类似EBoot一样的启动代码。
在了解原理之后,下面的配置过程对于用过EBoot的朋友会非常简单。我们需要建立网络传输,首先设置一下PB。
在Visual Studio 2008中,选择“Target”菜单,然后选择“Connectivity Options”,然后选择“Add Device”。这时会弹出“Target Device Connectivity Options”对话框,在“New target device name”里输入VCEPC,在“Associated OS Design/SDK”中选择“Windows CE”,然后点击“Add”。
在“Target Device Connectivity Options”下有几个选项需要我们注意:“Kernel Download”,“Kernel Transport”,以及“ Kernel Debugger”。在“Target Device”下,选择你的目标设备名称,这里是VCEPC。“Kernel Download”中选择“Ethernet”,然后点击“Settings”按钮,会打开“Ethernet Download Settings”对话框。目前这个对话框还是空的,因为还没有找到接收传输的设备,我们就停在这里,继续操作我们的VPC。

2 设置VPC启动参数
刚才我们成功的在VPC中进入到启动菜单,这个菜单大家一定眼熟,因为看起来很像EBoot的菜单。实际上这个就是x86下的EBoot。
菜单项如下:
[1] Show Current Settings
[2] Select Boot Source
[3] Select KITL Device
[4] Network Settings
[5] Display Settings
[6] Debug Port Settings
[7] Save Settings
[0] Exit and Continue

我们首选需要配置启动源,所以选择第二项“[2] Select Boot Source”,在VPC的窗口下使用键盘输入“2”,进入Select Boot Source配置。
这里会有两个选项
[1] Boot Drive
[2] DEC21140 at PCI bus 0 dev 10 fnc 0
这里我们选择“2”。实际上DEC21140 at PCI bus 0 dev 10 fnc 0是一个虚拟网卡,用来共享你的物理网卡,从而与你的PC通信。选择好之后会有如下提示:
Boot Device is set to DEC21140 at PCI bus 0 dev 10 fnc 0
随后跳转到主菜单。
主菜单下,我们可以选择“Show Current Settings”来检查当前的配置,你会看到类似下面的内容:
Boot source:     DEC21140 at PCI bus 0 dev 10 fnc 0
KITL device:     DEC21140 at PCI bus 0 dev 10 fnc 0
KITL config:     enabled, interrupt mode, VMINI enabled
DHCP:            enabled
Display:         640 X 480 X 32 / Full Screen
Debug Port:      COM1 38400 baud

一般来说这里就可以了。但是我们需要注意一点,就是DHCP的问题。虚拟网卡会尝试使用DHCP来获得IP地址,如果你的路由器没有开启DHCP功能,它是拿不到IP地址的,这时候我们可以手动指定一个IP地址。在主菜单中选择“Network Settings”,随后选择“Set IP Address”,然后根据提示,输入你想要设置的IP地址,注意要与你的PC的IP地址保持在同一网段。比如你的PC的IP地址为192.168.1.2,那么你可以设置VPC的IP地址为192.168.1.3。然后选择“Enable/disable DHCP”,这时提示是否disable DHCP,输入y确定。
回到主菜单之后,我们可以再次进入“Show Current Settings”,这时我们就可以看到刚才设置的IP地址了。随后在主菜单中选择“Save Settings”来保存我们的设置。

3 启动CEPC镜像
在主菜单中,选择“Exit and Continue”,这时会进入等待引导下载镜像的过程,提示信息如下:
Send BOOTME Message (device name PC-0003FF9D5B30, attempt 1)
Send BOOTME Message (device name PC-0003FF9D5B30, attempt 2)
这里就是在发送BOOTME信息,“PC-0003FF9D5B30”就是你的设备名。
这时我们返回到刚才PB的“Ethernet Download Settings”对话框。现在我们就会在“Active target devices”列表中看到我们的设备名称(这里就是“PC-0003FF9D5B30”)及IP地址了。选择我们的设备名称,然后单击“Apply”确定。关闭“Target Device Connectivity”对话框。
下面就可以下载系统镜像到VPC当中了。
在Visual Studio 2008中,在“Device”下拉框中,选择我们的设备配置名,这里就是“VCEPC”。然后在“Target”菜单中选择“Attach Device”,这时我们会看到“Device Status”窗口,显示传输镜像的进度及状态。
在VPC端,我们也可以看到,传出过程的进度,在传输完成后,我们就可以进入到WEC7的界面中了。

开始WinCE7的第一个项目——虚拟机上的CEPC_第13张图片


现在,VCEPC的创建及使用过程就全部结束了。大家可以在自己的PC上实践WEC7,而不用依赖与其他的硬件,如开发板等。同时也可以在PC上测试自己的应用程序,特别是大家感兴趣的Silverlight等。
对于使用Windows XP配合Virtual PC 2007的朋友,就是配置Virtual PC 2007的过程不一样而已,总体思路是一样的。
好了,现在就马上行动,建立自己的第一个WEC7项目,体验一下WEC7吧! 

参考文献:
1. Mark McLemore,《Getting Started with Virtual CEPC》,2010-5

 

在实际操作中我主要碰到了以下几个问题,然后分享给大家:

1,不知道需要安装虚拟机,CE7是没有模拟器的。在装完wince7之后的帮助文档都在这个目录:C:\Program Files (x86)\Windows Embedded Compact 7\Documentation ,Getting Started with Virtual CEPC.docx这个文档里有地址下载虚拟机的地址 。

2,按照最上面说的在下载镜像的时候出现了一个错误:

ERROR: BootTransportPb: TFTP timeout occured!
ERROR: BootDownloadBin!ImageType: BootTransportRead Failed!

参照国外的一个论坛的方法就是禁用网卡的“UDP硬件校验和”(UDP CRC checksum)就可以解决了。

你可能感兴趣的:(windows,虚拟机,embedded,安装出错,com,模拟器,wince7)