在CEPC开发中,可以利用仿真调试,但若涉及到串口开发,则还是需要在直接在目标机上调试,而且通过网络方式在目标机上调试,速度也比仿真快。虚拟机代替目标机的好处就不说了,直接把实现步骤列下来吧。
环境:主机是WinXP系统;我的机器内存是2G,只要保证能够跑的起来虚拟机又不是很大影响主机开发环境的运行就行了;Vmware是6.0的;Wince是4.2的;相应的ActiveSync是3.7版的;编程开发软件是EVC4.0。实现后的界面截图如下:
关键技术:1、ActiveSync同步建立;2、Vmware虚拟机中CE系统的网卡配置。
一、怎么建立ActiveSync同步
参考Platform Builder帮助,建立ActiveSync需要通过串口线建立伙伴关系。在虚拟机中与主机建立伙伴关系我还没想到用什么办法来实现(如果你有,不妨教教我),这里我我还是借助了主机与目标机已经建立的伙伴关系的相关信息。建立过伙伴关系的同行都知道,伙伴关系的相关信息保存在主机和目标机的注册表中,如果目标机CE配置的不是HIVE式注册表,则要将注册表的信息固化在NK中。具体位置如下:
CE系统注册表(示例):
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows CE Services/Partners]
"PCur"=dword:00000001
"Connectoid"="网络连接"
"AutoDisc"=dword:00000000
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows CE Services/Partners/P1]
"PName"="ASUSMOBILE"
"PId"=dword:73dc0bc4
[HKEY_LOCAL_MACHINE/Ident]
"Name"="WindowsCE42"
主机系统注册表(示例):
[HKEY_USERS/S-1-5-21-299502267-152049171-854245398-500/Software/Microsoft/Windows CE
Services/Partners/73dc0bc4]
"Schedule Option"=dword:00000000
"DisplayName"="WindowsCE42"
"DeviceType"="CEPC platform"
"Description"=""
"DataFolder"="C://Documents and Settings//Administrator//Application
Data//Microsoft//ActiveSync//Profiles//WindowsCE42"
"Processor"=""
"ProcessorType"=dword:000002ae
"OemInfo"="CEPC"
"TotalSize"=dword:00000000
"Version"=dword:04401404
"Capabilities"=dword:00000110
"ServerMajor"=dword:00000000
"ServerMinor"=dword:00000000
"PimsInstalled"=dword:00000000
注意:主机的注册表信息只是其中的一部分,认真解读比较注册表不难发现其中想关联的部分,也是伙伴关系正常连接的重要部分。我的做法是,先与独立的目标机建立好伙伴关系后,再用远程注册表编辑器(EVC工具中有)把CE系统中相应位置的注册表信息复制备份下来,并放在Platform Builder的platform.reg中,作为今后NK系统固定的伙伴关系,当然在编译虚拟机的NK核时就不用再另外单独建立伙伴关系了。
二、怎么配置虚拟机网卡驱动
这也是阻碍我实现“梦想”的主要障碍。有幸最近拜读sting feng的博客才解决这个问题,他的文章有关虚拟机CE系统网卡配置的有好几篇,真是高手!
http://blog.csdn.net/singlerace/archive/2007/08/21/1753104.aspx。步骤很详细,我就不再耍大刀了。
最后一个注意事项就是虚拟机网卡配置必须设置成“Host-only:和主机共享一个私有网络”。
OK了,在CE系统命令行中输入“repllog /remote”运行即可得到上图的效果了。