蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88
全部博文(311)
分类: 嵌入式
2010-03-27 20:46:41
Andrew Huang
提要:
很多时候使用WinCE并不需要真实的硬件设备,有时用WinCE模拟器就够了.比如去演示应用,调试WinCE应用程序.用模拟器可能比真实硬件还要方便.而且现在WinCE上有很多游戏,很多人把在PC上把WinCE模拟器当成一台游戏机模拟器来用.现在拥有笔记本的人比拥有GPS定位设备更多.不少人直接开车直接使用笔记本的WinCE模拟器上运行GPS地图程序,流行一时.
本节内容如下
l WinCE模拟器的原理和调用
l 常见模拟器的使用(PPC2003,Win Mobile 5.0,Win Mobile 6.0)
l 改变模拟设备的外观(Skin).
l 模拟器与其它设备的通讯.
l 在虚拟机上使用WinCE
WinCE 模拟器的原理和调用
如果安装VS.2005 ,其中里面就直接带了模拟器的启动程序.DeviceEmulter 1.0.但是安装VS 2005太大了.而且很多人只是需要使用一个WinCE模拟器来运行程序,并不需要做相应开发.这种情况可以单独安装很小的模拟器启动程序.可以从MS网站下载vs_emulator.exe,然后安装(如果安装VS 2005就不需要这一步了).
安装后,在对应目录下会有如下程序.
启动模拟器的方法有两种.
一种是用DeviceEmulator.exe调用相应的内核映像文件.如PPC_2003_SE_CHS_ARMv4.bin ,就是PPC2003 for ARMV4中文版的映像文件.这种方法可以定义很多参数来调试模拟器运行时各种选项.这方法启动速度略慢,但可以控制较多选项.
二种是用dvcmumanager.exe打开以前运行映像文件保存的运行状态文件直接恢复运行.这一种启动速度快,但是只能按原来设置参数运行,无法调整.
DeviceEmulator.exe参数说明
模拟器可以能通过命令行设置参数,也能进入模拟器后在configure窗口做同样的配置.一般做法是写一个批处理文件,写上相应参数,直接调用.
l /memsize size
设置仿真的 RAM 大小,其中 size 以 MB 为单位。有效值为从 64 到 256(含)。如果未指定有效值,则 size 默认为 64。
l /s filename:
指定保存状态文件。如果没有指定任何 内核映像文件,则必须有 /s filename,仿真程序将从指定的保存状态文件还原。当该仿真程序退出时,它会将新状态保存到保存状态文件的最前面。
如果指定了 内核映像文件名但没有 /s filename,仿真程序会从内核映像文件冷启动,并禁用保存状态。
如果指定了 内核映像文件名和 /s filename,则仿真程序从 内核映像冷启动,并在退出时启用保存状态,将状态保存到指定的文件名。
l /c
创建并显示一个控制台窗口以显示 Windows CE 调试串行端口的输出内容,用户键入的击键正是传送到此控制台。该技术对于从 Platform Builder 观察调试输出和下载内核映像非常有用。
以下是c参数启动效果
l /n [macaddress]
启用 CS8900 网络适配器,其中可选的 macaddress 是一个十二位数字的十六进制数,指定卡将绑定到哪个主机适配器
l /p [macaddress]
启用 NE2000 PCMCIA 网络适配器,其中可选的 macaddress 是一个十二位数字的十六进制数,指定卡将绑定到哪个主机适配器。
l /r ROM_address
指定 ROM 文件基址,其中 ROM_address 可以是十六进制数或十进制数。
l /rotate angle
按度数顺时针旋转显示屏,其中 angle 可以是 0、90、180 或 270。允许使用其他整数值,但是要四舍五入到最接近于 90 的整数倍数的值。
l /flash [flash_file_name]
启用闪存仿真,其中的可选 flash_file_name 指定要用作闪存存储的文件的名称。
l /sharedfolder directoryname
将一个目录作为共享文件夹装入,其中 directoryname 为 Windows 目录。该目录被作为在Windows作为“/Storage File”装入,就行为就跟一个SD卡差不多。
l /skin skin_file_name
加载指定的外观文件,为一个xml格式文件。用于修改设备外观
l /video xx
指定 LCD 窗口的屏幕大小和位深度,其中 width、height 和 bit-depth 为十进制值。例如:640x480x16。注意用字母x来表乘数
l /u0 serialport
l /u1 serialport
l /u2 serialport
WinCE串行端口 0,1,2(仿真程序 COM1,COM2,COM3)映射到宿主操作系统的真实串口上,serialport指串口设备名,如COM1,COM5等.
l /z
将显示窗口(外观和 LCD 窗口)放大为正常大小的 2 倍
PPC2003的启动参数
"C:\Program Files\Microsoft Device Emulator\1.0\DeviceEmulator.exe" "PPC_2003_SE_CHS_ARMv4.bin" /memsize 256 /s PPC.dess /video 240x320x16
表示使用PPC_2003_SE_CHS_ARMv4的内核映象文件,内存是
Windows Mobile 5启动参数
“C:\Program Files\Microsoft Device Emulator\1.0\DeviceEmulator.exe" " PPC_WM5.bin" /memsize 256 /s PPC.dess /video 240x320x16
常见模拟器的使用
一般常见的模拟器有PPC 2003 for ARMV4(Pocekt PC 2003),Windows Mobile 5.和Windows Mobile6 等模拟器.其余映像文件来源于
电脑上运行的PPC2003,WM5,WM6三款中文系统模拟器(详细安装方法) 这个贴子的收集.
使用以下模拟器前提条件,要求安装了Microsfot Device Emulator 1.0以上版本,如果没有安装,请运行vs_emulator.exe进行安装.并且假设安装在C:/program files目录下,如果不是,请修改启动批处理文件的路径.
PPC2003的运行.
这里PPC_2003_SE_CHS_ARMv4.bin是ARM的内核映像文件,直接双击运行2003.bat即可启动PPC2003的界面
这是启动PPC2003的界面
Window Mobile 5的运行
这里的PPC_WM5.bin是Windows Mobile 5的内核印象文件,直接双击运行wm5.bat即可启动WM5.
这是启动WM5的界面
Window Mobile 6的运行
这一模拟器采用状态文件恢复运行.因此跟前面两种模拟器运行不一样,需要模拟设备管理
器恢复运行, 但是好象vs 2005自带模拟器运行不成功,需要使用自带几个组件注册后,才能用还原.双击运行”加载.bat”注册相应组件,然后选择启动,(其实就是模拟设备管理器)
直接运行.选择文件中的还原映像
恢复后的WM6界面
模拟器与主机通讯
模拟器跟一个真实设备相差无几.从宿主的操作系统上传输数据方法有好几种.
l 配置共享目录,双方通过共享目录交换文件,这是最简单最方便手段
l 用ActiveSync连接到模拟器,使用ActiveSync传输文件,一般用于开发.
l 利用把虚拟网卡绑定在宿主机真实网卡上,这样模拟器可以通过网络跟其它主机通讯
l 利用ActiveSync的DMA端口接入Internet网
配置共享目录,用共享目录模拟SD卡
WinCE的模拟器支持把宿主操作系统上某一个目录虚拟成一个SD卡设备,这样向这个目录拷贝文件就是等于向模拟器的SD卡拷贝文件,这一机制非常方便,有效.大部分应用用这一方法即可测试.
共享目录配置,在模拟器的文件à配置à常规(页标签)à共享文件夹
如果成功,会在资源管理器看一个SD卡的盘符,内容就是共享目录的内容
执行(开始菜单)à程序à资源管理器,
在资源管理器打开 我的设备 ,会出现SD的图标,这个内容实际上是共享目录
在虚拟机上使用WinCE
虚拟机与模拟器是两种不同软件,模拟器通常用来模拟某种特殊硬件,一般用于嵌入式开发.而虚拟机则是模拟一种虚拟PC机来,通常CPU是X86.最有名的虚拟软件是VMWare,微软也有自己的虚拟机软件 Virtual PC 2007.理论是任何安装在X86的操作系统都安装在虚拟机上.象VMWare就是如此,可以安装Linux,FreeBSD,Windows等,当然也在安装WinCE for X86.版本,VPC早期版本也是如此,现在MS限制操作系统安装.只能安装MS一家出品的操作系统.
在虚拟机上使用嵌入式操作系统,象WinCE之类,并无太大优势了.很多WinCE应用并不是针对X86.而且虚拟机最大方便是可以象真实机器一样使用做网络,比如在WinCE中,只要简单配置一下就即可上网.完全没有WinCE模拟器上复杂的配置.
缺点更明显,比如需要安装一个庞大的虚拟机软件,他控制很多当前操作系统的底层.对于WinCE,最方便的传输文件和调试手段是ActiveSync.很奇怪,MS在ActiveSync联接中,只用串口和USB口,完全不用速度最快的以太网口,我不太而知这是一种什么样的商业策略.在ActiveSync早期3.x版本,可以通过手工安装以太网代理来使用ActiveSync用以太网联接.在高版本已经完全没有这个可能.因此虚拟机来运行WinCE只是一种演示的补充,在开发上没太大帮助.
因为本人也从事嵌入Linux教学.机器上一般都安装了VMWare.因此.这里采用VMWare来运行WinCE 5.0/6.0两个版本.
如果熟悉VMWare ,可以很快的把WinCE 运行起来
在VMWare 运行WinCE 5.0
l 打开虚拟机映像
l WinCE 5运行界面
最后总结
在日常开发和使用中,用得最多就是WM5的虚拟机。它跟很多ARM开发板的WINCE5都是兼容的。
因此你最好在你的机器上准备如下开发环境,后面课程大部分用这个环境来讲解。
ActiveSync 4.5
DeviceEmulator 1.1
WM 5.0 官方虚拟机内核