解读vs2003、vs2005、vs2008开发Windows CE环境、默认SDK开发包及测试
以前做过一些嵌入式开发,那么从以前做产品、做项目设计到嵌入式的开发,零碎时间累计到现在也有一年载已。本人对技术总结有点懒散,常常学过的东西,并没有很快的总结或者写出来,以便以后查阅使用;经常项目需要时,临时抱佛脚,到处乱找以前做过的东西或总结的东西,实在惭愧。
在真正开始讲解之前,先给大家普及一下有关Windows CE的基础知识。
Windows CE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统、实时操作系统,是基于掌上型电脑类的电子 设备操作系统,它是精简的Windows 95,Windows CE的图形用户界面相当出色。 Windows CE中的C代表袖珍(Compact)、消费(Consumer)、通信能力(Connectivity)和伴侣(Companion);E代表电子产品 (Electronics)。与Windows 95/98、Windows NT不同的是,Windows CE是所有源代码全部由微软自行开发的嵌入式新型操作系统, 其操作界面虽来源于Windows 95/98,但Windows CE是基于WIN32 API重新开发、新型的信息设备的平台。Windows CE具有模块化、结 构化和基于Win32应用程序接口和与处理器无关等特点。Windows CE不仅继承了传统的Windows图形界面,并且在Windows CE平台上可 以使用Windows 95/98上的编程工具(如Visual Basic、Visual C++等)、使用同样的函数、使用同样的界面风格,使绝大多数的应 用软件只需简单的修改和移植就可以在Windows CE平台上继续使用。Windows CE并非是专为单一装置设计的,所以微软为旗下采用 Windows CE作业系统的产品大致分为三条产品线,Pocket PC(掌上电脑)、Handheld PC(手持设备)及Auto PC。
到目前为止,微软已从Windows CE这个基础版,已经衍生出了Windows Mobile、Pocket PC、SmartPhone等智能系统。并且支持多种平台开发和语言开发(Visual Basic、Visual C++、Visual C#、J2EE等其他语言)。
图(1)所示,通过时间线,可以看出Windows CE的发展历程。
图(1)
一、开发环境内核
首先,给大家介绍一下Visual Studio 集成开发环境中默认自带安装的Windows CE的SDK开发包各个版本:
vs2003[Visual Studio 2003]:默认安装的是Windows CE 4.2(这里简称wince4.2)
vs2005[Visual Studio 2005]:默认安装的是Windows CE 5.0(这里简称wince5.0)
vs2008[Visual Studio 2008]:默认安装的是Windows CE 6.0(这里简称wince6.0)
二、开发包及辅助工具
在这里,我给大家给三个部分说明:
1.如果你安装的开发环境针对默认的嵌入式环境而开发,那么不必安装其他版本的SDK。例如:
你所安装的开发环境(PC的开发环境)是vs2005,那么项目需求是(或者硬件设备所支持的是wince5.0)wince5.0系统(目标设备系统),这时候不必安装其他额外的SDK,找一个现成的wince5.0的模拟器安装一下,就可以仿真测试或真机联调。
2.如果你安装的开发环境所带WinCE内核与目标设备系统不一样,我将会在《解读vs2003、vs2005、vs2008开发非默认WinCE环境及SDK开发包安装》博文中进行一一说明。
3.除了上述安装的SDK等软件外,你需要安装Windows Mobile设备中心(或ActiveSync 4.5),用于与设备进行同步或调试。若需要进行非常规的开发,可安装其他补丁包或SDK。
三、测试环境:
第一种方式,连接真机调试,与真机(目标设备)联调。
1.首先打开我们的工程,按照图(2)中右键点击工程,点击“属性”。
图(2)
2.去掉设备中红框处复选框的“√”(这里为什么要取消选项呢?因为目标设备上已有最新的.NET Framework),如图(3):
图(3)
3.点击图(4)工具栏上“设备选项”按钮(左上红框处),查看选择默认设备与目标设备SDK是否一致,点击“确定”按钮。
图(4)
4.选择需要目标设备的SDK连接设备,图(5)(红框处)
图(5)
5.用USB线把我们的PC和设备连接,打开PC上的Windows Mobile设备中心。如图(6):
图(6)
6.点击图(6)中的“不设置设备就进行连接(C)”按钮,出现图(7)连接状态
图(7)
7.点击图(8)工具栏中“连接到设备”按钮,红框处。
图(9)
9.下面是设备中测试窗体,如图(10):
图(10)
第二种方式,通过模拟器仿真测试。
1.这里我们使用WinCE6.0的模拟器来测试,图(11)选择目标设备(红框处)。
图(11)
2.点击图(12)工具栏中“连接到设备”按钮,进行连接模拟器。
图(12)
3.与模拟器连接测试成功,如图(13),左边是连接状态,右边是仿真环境。
图(13)
4.一般我们尽量在工程属性中,设备选项选择部署.NET Framework的最新版本,以免导致出错(构筑第二道防线),如图(14):
图(14)
5.如图(15),我们的测试程序在仿真环境中运行。
图(15)
四、附加真机联调错误解决方案
1.如果在联机调试中出现下面错误:
无法启动调试。请检查以下各项之一。
1.尝试调试的应用程序使用的是调试器不支持的Microsoft .NET Framework版本。
2.调试器对应用程序要使用的Microsoft .NET Framework版本进行了不正确的假设。
3.您指定的用于调试的Microsoft .NET Framework版本不正确。
有关正确指定应用程序要用于调试的Microsoft .NET Framework的版本的信息,请参阅Visual Studio .NET调试器文档。
错误原因是WinCE的ARM的安装包.NET Framework版本不一致造成的,错误如下图所示:
解决方案:在真机联机调试的时候,在工程属性中,设备选项页里一定要选择“部署.NET Compact Framework的最新版本(包括Service Pack)(D)”,避免程序部署成功,程序并没有在设备中显示。
2.如果在部署中失败,出现如下错误:“错误1 部署和/或注册失败,错误为: 0x8973190e。 写入文件“\Windows\NETCFV2.wce5.armv4i.cab”时出错。错误 0x80070070: 磁盘空间不足。 Device Connectivity Component”,如下图错误:
解决方案:在目标设备上右击“我的设备”,右键菜单上选择“属性”,在系统属性中选择“内存”选项页,根据内存滑动条进行调整内存大小(默认的是比较小,例如3780),右拖内存数可变大。
至此,我是以vs2008开发wince6.0程序为例,做了一个简单的开发环境及相关测试部署过程,仅供大家参考。那么vs2003开发wince4.2程序和vs2005开发wince5.0程序,情况类似。我们编译并且测试通过的程序如何部署到真机或设备中去的呢?我们可将程序拷贝到SD卡、TF卡或其他存储卡中,也可以打包封装成MIS或EXE安装程序。