七月网

windows ce 5.0(Windows CE 5.0中文版下载)

七月网3440

一、wince5.0和6.0有什么区别

Windows CE6.0重新设计了Kernel,和Windows CE 5.0相比较支持的进程数从32个扩展到32000,每个进程的地址空间从32MB扩展到2GB,很多系统模块(如文件系统和设备管理器)将运行在kernel模式,OAL也从kernel独立出来,driver可以运行在kernel模式和user模式。

windows ce 5.0(Windows CE 5.0中文版下载)

Visual Studio 2005专业版将包括一个被称为Platform Builder的功能强大的插件,它是一个专门为嵌入式平台提供的“集成开发环境”。这个集成开发环境使得整个开发链融为一体,并提供了一个从设备到应用都易于使用的工具,极大地加速了设备开发的上市。

Windows Embedded CE 6.0加入了新的单元核心数据和语音组件, Windows CE 6.0大幅改变了核心定址以及资源分配的机制,旧版CE同时间只能有32个程序执行于各自分配的32MB虚拟存储器空间中,6.0版则是大幅放宽了限制,最大可同时执行32,000个程序,而且每个程序可拥有独立分配的2GB虚拟存储器,在此同时,核心服务、硬件装置的驱动程序、视窗绘图以及事件子系统、档案系统等服务都被转移到系统核心保留空间中。不过这样的改变也会带给使用者疑虑,毕竟过去NT 4.0就曾经上演过类似的戏码,将驱动程序从使用者模式转移到核心模式,虽然可以大幅改进应用的速度,但是一个体质不良的驱动程序,可能就会拖垮整个系统,因此在硬件驱动程序的开发上,就必需要有个有效标准来规范,最好还要导入如WHQL之类的驱动程序验证服务,以避免影响整个系统的稳定性。

Windows CE 6.0依旧把眼光投注在ARM架构中,新的BSP与编译器也都支持了ARM的最新体系,而6.0版也是微软首个导入ExFAT的操作系统, ExFAT在Windows CE 6.0中,担当了总管所有外接储存媒体的中界层的角色,广为产业界所称赞的是,这能够解除过去传统FAT档案系统的32GB单一容量限制。

ExFAT同样也解除了单一档案只能在2GB以下的限制,这对于硬件厂商以Windows CE发展大容量储存管理伺服架构,有着相当大的帮助。加上一些安全机制,我们可以把ExFAT视为Windows CE 6.0上的NTFS加强版。

VoIP也是Windows CE 6.0另一个持续加强的重点,除了在应用程序层的整合更进一步以外,操作系统核心也具备直接支持的能力,因此硬件开发上可以更容易的在Windows CE环境上进行各种网络的语音通讯服务。而因应这样的趋势,6.0版自然也把过去5.0版的缺失补正过来,在网络堆叠协定方面,直接支持了802.11i、WAP2、802.11e(无线QoS)、蓝牙A2DP/AVRCP的AES加密等等,为无线通讯建立了一个稳定、安全以及可靠的应用环境。而从使用者观点来看,Windows CE 6.0扩展了超越以往版本总和的承诺,这些功能包括了最新的多媒体能力,诸如Windows Media 10/11的支持、,对于网络多媒体装置的原生整合能力,在Platform Builder开发工具中,甚至也加入了行动媒体中心的支持,可以藉由Windows Media Connect 2.0大幅强化多媒体应用的支持能力,并且可以与其它微软的操作系统或硬件装置做同步统合的动作。这些功能包含了以下项目:

■强化DirectDraw,可支持电视使用的交错显示模式

■ Usb OTG功能加入,可作为Usb的控制端

虽然在核心部分做出这么大的更新,但是Windows CE 6.0的储存上并没有如微软其它操作系统般的飞涨(Vista甚至需要超过10GB的初始储存安装空间!),相较起5.0版,6.0在体积上也不过增加了5%左右,虽然这对嵌入式系统产业来说是理所当然,但对于微软可以说是另一项奇迹。

Windows CE 6.0带给开发者的好处

在开放原始码的历史中,微软要写下另一个新的里程碑,100%对产品开发者释放出原始码,且可允许厂商进行自订的变更或订做,而无须释放出经过修改的程序码,虽然在广义上并不能视为真正开放,但是为这些喜欢藏私留一手的厂商来说,无疑是增加竞争力的最佳手段之一。而作为开发工具的Visual Studio 2005 PRO将会作为Windows CE 6.0的整体套件之一,内建的许多开发工具与定义对于开发者来说相对便利许多。

Windows CE 6.0支持了Windows.NET Compact Framework 2.0作为应用程序管理开发以及Win32、 MFC、 ATL、 WTL和STL等程序开发界面提供给开发原生应用程序的开发者使用。具备了如此势力庞大以及完整的开发环境作为支持,开发者与制造商也可确保后续的支持不虞匮乏。

而在硬件方面,在不变更原有的硬件架构之下,导入Windows CE 6.0可以大幅改善原有程序的执行效率,并且也容许同时间有更多程序同步执行,由于每个程序都具备有独立的执行空间,特定程序当掉,也不会影响到其它应用程序或系统执行,提供给使用者比起以往旧版系统更强的稳固性与更大的弹性。而目前逐渐风行的多核心处理架构上,Windows CE 6.0也可以在不变更程序开发者原有程序模型的状况之下,提供最佳化的核心工作自动分配与指定,当然,如果有需求的话,程序开发者依然可以自行决定指定核心的方式。

Windows Embedded 6.0 R3是在Windows CE 6.0 R2的基础上,增加了下列技术:

Internet Explorer Embedded浏览器

其中Internet Explorer Embedded是由Windows Embedded中国研发团队单独开发的。而Mobile QQ是由腾讯公司开发整合的。

新增了Silverlight for Windows Embedded,此项功能是 Microsoft Silverlight技术不依赖于浏览器的本机代码执行,用于为基于 Windows Embedded CE 6.0 R3的设备打造丰富的用户界面。比如,在Expression Blend下,可以更容易的进行视图开发,通过XRCustom UserControlImpl类就可以简单创建一个自定义控制,用于控制高清视图的大小、颜色和动态画面等众多的常用操作。现在原始设备制造商能够独立设备上用户体验设计和核心功能开发,通过缩短应用开发时间帮助提高上市流程效率,从而实现简化的用户界面定制,并让设计人员和开发人员能够专注于他们的核心能力。现在可以由专门的开发人员来使用Silverlight、Microsoft Expression Blend和Internet Explorer Embedded技术开发高清内容。

作为Windows 7世代的产品,他提供了与Windows 7的连通性——Windows 7 Device Stage驱动端口。并且开发者和OEM厂商还以通过Microsoft Connection Manager(微软链接管理器)实现设备和PC间的连接。同时新增的office和PDF查看器也丰富了互连体验。

Flash Lite组件的支持,使得WinCE有了播放FLASh动画和视频的能力,增强了用户体验。

二、Windows CE是什么系统

WindowsCE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95,Windows CE的图形用户界面相当出色。\x0d\x0a其中CE中的C代表袖珍(Compact)、消费(Consumer)、通信能力(Connectivit)和伴侣(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。\x0d\x0aWindowsCE版本主要有1.0、2.0、3.0、4.0、4.2、5.0和6.0\x0d\x0aWinCE1.0:\x0d\x0aWINCE1.0是一种基于Windows95的操作系统,其实就是单色的Windows95简化版本。90年代中期卡西欧推出第一款采用WinCE1.0操作系统的蛤壳式PDA,算是第一家推出真正称得上手掌尺寸的掌上电脑厂商。作为第一代的WinCE1.0于1996年问世,不过它最初的发展并不顺利。当时Paim操作系统在PDA市场上非常成功,几乎成为了整个PDA产品的代名词,在这种情况下,微软公司被迫为最初WinCE的不断改进的同时,微软公司也通过游说、\x0d\x0a技术支持、直接资助等手段聚集了大量合作厂商,使WinCE类的PDA阵容越来越强大。\x0d\x0aWinCE2.0:\x0d\x0a随着Windows95的出现和Windows98的成功,另外一个巨人-微软站起来了,并迅速地在PC操作系统业界建立了微软帝国。PDA市场的发展潜力被众多分析家看好,嗅觉异常灵敏的“微软”自然不会放过这样一个巨大的市场,在其操作系统帝国已经非常稳定的前提下,又开始了在PDA市场上的全力冲刺,用\x0d\x0aWinCE2.0操作系统来打造与Palm非常类似的掌上产品。\x0d\x0aWinCE2.0不仅比CE1.0快的多,而且的彩色显示,又众多新型PDA采用新的WinCE2.0系统,大有取代Pilot的趋势,成为PDA操作系统新的标准。尽管CE2.0仍然要比Pilot的操作系统需要的空间要大的多,但它具有Windows的界面,会用PC的人小编估计没有多少人不会使用微软的操作系统。如果你熟悉Windows95,在使用WindowsCE的时候就熟门熟路了,就不需要重新学习。而且,两者技术上的相似性,第三方Windows应用软件开发商们,就可以很容易地把自己的应用软件转换成可供CE运行的版本,因此,WindowsCE的可使用软件的种类将会越来越多的。\x0d\x0aWinCE3.0:\x0d\x0aWinCE3.0是微软的Windows Compact Edition,是一个通用版本,并不针对掌上产品,标准PC、家电和工控设备上也可以安装运行,但要做许多客户化工作,当然也可以做掌上电脑。微软鼓励大家在任何硬件平台(WinCE3.0支持5系列CPU: x86, PowerPC, ARM,MIPS,SH3/4)上使用(为了和VxWorks,Linux等竞争),所以早期的WINCE运行在不同的硬件平台上。WinCE3.0 Licence费用为$20,10 Licence起,批 \x0d\x0a量时大致能降到$15/Licence。\x0d\x0a2000年微软公司将WinCE3.0正式改名为Windows for Pocket PC,简称Pocket PC。就是把Pocket Word和Pocket Excel等一些日常所需的办公软件的袖珍版装了进去Pocket PC,同时在娱乐方面的性能做很大的加强。当然对于微软的所有举动,捧场的厂商自然也不会少,加入Pocket PC阵营的现在就有HP、Compaq、Casio等一些著名厂商。当Compaq的iPAQ 3630的诞生和在市场的热销,支持和加入Pocket PC阵营的厂商就越来越多。2002年智能手机商机再现,不少PPC厂商希望推出整合手机功能的PPC,于是在2002年8月,专门为手机优化过的微软Pocket PC 2002 Phone Edition操作系统匆匆问世,2002年10月,国内第一款PPC手机--多普达686上市了,随后熊猫推出了CH860、联想推出ET180\x0d\x0aWinCE4.0:\x0d\x0aWinCE.Net(即WinCE 4.0)是微软于2002年1月份推出的首个以.Net为名的操作系统,从名字上我们就可以知道它是微软的.net的一部分。WinCE.Net是WinCE3.0的升级,同时还加入.Net Framework精简版,支持蓝牙和.Net应用程序开发。\x0d\x0aWinCE4.2:\x0d\x0aWindowsCE.NET 4.2是WindowsCE.NET 4.0/4.1的升级版,对Windows CE先前版本的强大功能进行了进一步的扩充和丰富,基于其开发的设备将从这些微小但重要的变化中获得更好的性能和更强的Windows集成功能。微软在WinCE4.2版时曾提供开放源代码,不过只针对研究单位,而程序代码较少,为200万行。\x0d\x0aWinCE5.0:\x0d\x0aWinCE5.0在2004年5月份推出,微软宣布WinCE5.0扩大开放程序源代码。在这个开放源代码计划授权下,微软开放250万行源代码程序作为评估套件(evaluationkit)。凡是个人、厂商都可以下载这些源代码加以修改使用,未来厂商OEM时,则再依执行时期(Run-time)授权,支付Win CE5.0核心每台机器3美元的授权费用,这也是微软第一个提供商业用途衍生授权的操作系统。\x0d\x0aWindows CE 6.0:\x0d\x0a2006年11月,微软公司其最新的嵌入式平台Windows Embedded CE 6.0正式上市。作为业内领先的软件工具,Windows Embedded CE 6.0将为多种设备构建实时操作系统,例如:互联网协议(IP)机顶盒、全球定位系统(GPS)、无线投影仪,以及各种工业自动化、消费电子以及医疗设备等。\x0d\x0a在Windows Embedded诞生十周年之际,微软将首次在“共享源计划(Microsoft? Shared Source programme)”中100%毫无保留地开放Windows Embedded CE 6.0内核,(GUI图形用户界面不开放)比Windows Embedded CE的先前版本的开放比例整体高出56%。“共享源计划”为设备制造商提供了全面的源代码访问,以进行修改和重新发布(根据许可协议条款),而且不需要与微软或其他方共享他们最终的设计成果。尽管Windows操作系统是一个通用型计算机平台,为实现统一的体验而设计,设备制造商可以使用Windows Embedded CE 6.0这个工具包为不同的非桌面设备构建定制化的操作系统映像。通过获得Windows Embedded CE源代码的某些部分,比如:文件系统、设备驱动程序和其他核心组件,嵌入式开发者可以选择他们所需的源代码,然后编译并构建自己的代码和独特的操作系统,迅速将他们的设备推向市场。\x0d\x0a微软还将Visual Studio 2005专业版作为Windows Embedded CE 6.0的一部分一并推出。这对微软来说又是一次史无前例的突破。Visual Studio 2005专业版将包括一个被称为Platform Builder的功能强大的插件,它是一个专门为嵌入式平台提供的“集成开发环境”。这个集成开发环境使得整个开发链融为一体,并提供了一个从设备到应用都易于使用的工具,极大地加速了设备开发的上市。\x0d\x0aWindows Embedded CE 6.0重新设计的内核具有32,000个处理器的并发处理能力,每个处理有2GB虚拟内存寻址空间,同时还能保持系统的实时响应。这使得开发人员可以将大量强大的应用程序融入到更智能化、更复杂的设备中。无论在路上、在工作还是在家里,都可以使用这种设备。\x0d\x0a在路上: Windows Embedded CE 6.0加入了新的单元核心数据和语音组件,这使得设备能够通过蜂窝通讯网络建立数据连接和语音通话,从而实现机器对机器的通讯应用场景,并构建相应的设备,如停车表、自动售货机和GPS设备等。\x0d\x0a在工作上: Windows Embedded CE 6.0包含的组件更便于开发者创建通过Windows Vista内置功能无线连接到远程桌面共享体验的投影仪。\x0d\x0a在家中: Windows Embedded CE 6.0充分利用了多媒体技术,以开发网络媒体设备、数字视频录像机和IP机顶盒等。\x0d\x0a最新功能\x0d\x0a目前最新的Windows CE为Windows CE 6.0,这个版本在内核部分有很大的进步:\x0d\x0a所有系统元件都由EXE改为DLL,并移到 kernel space.\x0d\x0a全新设计的虚拟内存架构\x0d\x0a全新的设备驱动程序架构,同时支持 User Mode与 Kernel Mode两种驱动程序。突破只能运行 32个工作元(process)的限制,可以运行 32768个工作元。每一工作元的的虚拟内存限制由32 M增加到全系统总虚拟内存。Platform Builder IDE集成到 Microsoft Visual Studio 2005。新的安全架构,确保只有被信任的软件可以在系统中运行。UDF 2.5文件系统。支持 802.11i(WPA2)及 802.11e(QoS)等无线规格,及多重 radio support.\x0d\x0a支持 x86, ARM, SH4, MIPS等各种处理器。提供新的 Cellcore components使系统在移动电话网络中更容易创建数据链接及激活通话。[1][2]在开发环境上,微软也提供兼容于.NET Framework的开发元件:.NET Compact Framework,让正在学习.NET或已拥有.NET程序开发技术的开发人员能迅速而顺利的在搭载Windows CE.NET系统的设备上开发应用程序。\x0d\x0a用于掌上电脑Pocket PC以及智能手机smart Phone上的Windows CE系统称为Windows Mobile,目前成熟的最新版本为Windows Mobile 6.5。\x0d\x0a1) WinCE与Linux有何区别?(商业模式,学习和开发难度,对硬件的支持,稳定性,对工程师未来发展的帮助,对研发中心未来发展的帮助)\x0d\x0a嵌入式Linux OS与Windows CE相比的优点:\x0d\x0a第一:Linux是开放源代码,遍布全球的众多Linux爱好者都是Linux开发者的强大技术支持者;Windows CE目前6.0内核全部开放,GUI不开放。第二:Linux的内核小、效率高;Windows CE相比,占用过多的RAM。第三Linux是开放源代码的OS,在价格上极具竞争力,适合中国国情。Windows CE需要版权费用。第四Linux不仅支持x86芯片,还是一个跨平台的系统。更换CPU时就不会遇到更换平台的困扰。第五,Linux内核的结构在网络方面是非常完整的,它提供了对包括十兆位、百兆位及千兆位的以太网络,还有无线网络、Token ring(令牌环)和光纤甚至卫星的支持,目前WINCE的网络功能也比较强大。\x0d\x0a嵌入式Linux OS与Windows CE相比的弱点:\x0d\x0a第一:LINUX开发难度较高,需要很高的技术实力,WINCE开发相对较容易,开发周期短,内核完善,主要是应用层开发。第二:LINUX核心调试工具不全,调试不太方便,尚没有很好的用户图形界面,WINCE的GUI丰富,开发工具强大;第三,系统维护难度大。Linux占用较大的内存,如果去掉部分无用的功能来减小使用的内存,但是如果不仔细,将引起新的问题。\x0d\x0a2) WinCE 5.0与6.0有何区别?\x0d\x0a100%毫无保留地开放Windows Embedded CE 6.0内核,微软还将Visual Studio 2005专业版作为Windows Embedded CE 6.0的一部分一并推出。Visual Studio 2005专业版将包括一个被称为Platform Builder的功能强大的插件,它是一个专门为嵌入式平台提供的“集成开发环境”。这个集成开发环境使得整个开发链融为一体,并提供了一个从设备到应用都易于使用的工具,极大地加速了设备开发的上市。Windows Embedded CE 6.0重新设计的内核具有32,000个处理器的并发处理能力,每个处理有2GB虚拟内存寻址空间,同时还能保持系统的实时响应,加入了新的单元核心数据和语音组件,6.0包含的组件更便于开发者创建通过Windows Vista内置功能无线连接到远程桌面共享体验的投影仪,充分利用了多媒体技术,以开发网络媒体设备、数字视频录像机和IP机顶盒等。\x0d\x0a3)请说出10个使用WinCE的产品(其中有5个产品是大家都知道的)。\x0d\x0a手机,指纹识别系统,汽车电子检测设备,智能家电,医疗仪器(例如:监护仪,心电检测仪等等),工业控制仪器(例如:人机界面显示的高精准电机控制,工业采集控制通信等),定位导行设备(例如:车载GPS导航仪),\x0d\x0a4)请说出10个使用Linux的产品(其中有5个产品是大家都知道的)\x0d\x0a摩托罗拉A系列(明),E系列(E6,E680等),爱国者MP5(如P881)\x0d\x0a5) WinCE与 Vxworks有何区别?(商业模式,学习和开发难度,对硬件的支持,稳定性,对工程师未来发展的帮助,对研发中心未来发展的帮助)\x0d\x0aWinCE商业模式:\x0d\x0aWindows Embedded CE 6.0使用了基于数量的特许许可证模式,设备制造商可以在设备开始供货时再购买运行许可证。微软将提供知识产权保护(根据许可协议条款)和为期10年的产品支持生命周期,确保产品的完整性,并保证厂商得到必要的支持和保护以获得成功。\x0d\x0aWindows CE休眠唤醒全面解析\x0d\x0aWindows CE作为一个广泛应用于移动便携设备上的操作系统,提供了完善的电源管理的功能。其中,休眠唤醒便是一个重要的功能。那么,休眠唤醒是什么原理呢,这首先要从硬件说起。这里呢,我就拿用自己得最熟练的三星平台的2440 CPU为例来和大家探讨一下。\x0d\x0a首先看2440 Datasheet里关于休眠部分的描述\x0d\x0aSLEEP ModeThe block disconnects the internal power. So, there occurs no power consumption due to CPU and the internal logic except the wake-up logic in this mode. Activating the SLEEP mode requires two independent power sources. One ofthe two power sources supplies the power for the wake-up logic. The other one supplies other internal logics,including CPU, and should be controlled for power on/off. In the SLEEP mode, the second power supply source forthe CPU and internal logics will be turned off. The wakeup from SLEEP mode can be issued by the EINT[15:0] or by RTC alarm interrupt.\x0d\x0a上面这段话大意就是,当CPU进入休眠模式后,整个CPU系统会进入低功耗模式,只有当外部中断0-15中任意一个中断被触发,或者实时时钟中断被触发时,系统才会被唤醒。我们结合2440 wince5.0 BSP中的相关部分来详细分析。\x0d\x0a(这里说句题外话,现在市面流传着2种类型的wince5.0的BSP,一种是基于三星官方发布的PQOAL结构的,另一种,是从4.2的BSP升级上来的,也就是把原来4.2下的 BSP经过修改,使得能够在PB5.0下编译通过。下面我要分析的就是后者,也就是从 wince4.2下升级过来的5.0 BSP.他的结构和4.2下面的基本相同。\x0d\x0a按我的观点,这两种BSP无所谓好坏,只要能实现产品功能的,就是好的BSP.不过从长远来看,微软主推的是PQOAL结构的BSP,以后官方发布的5.0和6.0的BSP,基本都是采用的这种结构。)\x0d\x0a使得系统进入休眠的方法有很多,比如在WINCE的桌面上,点左下角的图标,然后选择“挂起”。或者是在应用程序或驱动中调用SetSystemPowerState函数,都可以让系统进入休眠状态。实际上,这两种方法殊途同归,最终都是要去调一个 OEM层的函数: OEMPowerOff\x0d\x0a.

三、如何在 Windows CE 5.0 中开发和测试设备驱动程序

本文介绍如何开发和测试 Windows CE 5.0设备驱动程序。本文循序渐进地介绍如何创建流驱动程序,如何创建自定义 Windows CE Test Kit

(CETK)测试,以及如何编写应用程序来测试驱动程序。这要花费大约 60分钟来完成。

第二部分:测试流驱动程序测试代码

第六部分:确定谁拥有流驱动程序

在本练习中,您将使用 Platform Builder来添加作为设备驱动程序的项目。

在开始编写驱动程序之前,您应该了解设备驱动程序的用途。驱动程序将基础硬件从操作系统中抽象出来,使之更好地面对应用程序开发人员。应用程序开发人员无需

知道显示硬件或串行硬件的详细信息—例如,串行设备是用 Universal Asynchronous Receiver/Transmitter(UART)

实现的还是用 field-programmable gate array(FPGA)

实现的。在大多数情况下,应用程序开发人员根本不需要知道硬件是如何实现的。

Microsoft Windows为开发人员公开了调用硬件的应用程序编程接口

(API),他们不需要知道物理硬件的情况。例如,为了向串行端口写入数据,应用程序开发人员只需调用 COMx上的 CreateFile()(其中 x

表示您要打开的串行端口编号,例如 COM1代表串行端口 1),再调用 WriteFile()以将一些字节数据写入串行端口,然后调用

CloseHandle()以关闭串行端口。不管基础串行硬件是什么(也不管您运行的是哪个 Windows操作系统),API都会以同样的顺序执行。

相同的情况也适用于其他 API:如果您希望在显示表面画一条线,那么您只需调用 PolyLine()、MoveToEx()或 LineTo(

)。作为应用程序开发人员,大多数情况下您都不需要知道显示硬件的情况。此处调用的 API将返回显示表面的维数、颜色深度等等。

好消息是开发人员可以调用一个一致的、众所周知的 API集。这些 API

将他们的应用程序从基础硬件中抽象出来。这至关重要,因为应用程序开发人员无法知道应用程序是运行在便携式计算机上,还是运行在 Tablet PC

上,抑或运行在桌面计算机上。无论电脑以 1024×768还是 1600×1200

的分辨率运行,应用程序开发人员都可以在运行时查询屏幕分辨率和颜色深度,因此不需要构建只在特定硬件上运行的应用程序。

驱动程序只是一个动态链接库(DLL)。将 DLL加载到父进程地址空间;然后父进程就可以调用从该 DLL公开的任何接口。通常,父进程通过调用

LoadLibrary()或 LoadDriver()来加载驱动程序。LoadDriver不仅将 DLL加载到父进程地址空间中,而且还要确保 DLL

调用进程如何知道从您的 DLL或驱动程序公开了哪些 API或函数呢?父进程调用 GetProcAddress(),后者可以获取函数名称和所加载的

DLL的 hInstance。如果函数存在,调用返回该函数指针;如果没有从 DLL公开该函数,则返回 NULL。

流驱动程序也公开了一个众所周知的函数集。对于流驱动程序,您会希望能够将字节流写入设备中,或者从设备中读取字节流。因此,在前面使用的串行端口示例中,您可能希望从您的驱动程序公开如下函数集:Open、Close、Read

Write。流驱动程序还公开一些其他函数:PowerUp、PowerDown、IOControl、Init

您可以将现有的操作系统映像用于模拟器平台(Basic Lab MyPlatform平台最理想)。然后,您就可以将

DLL/驱动程序项目添加到该平台了。

在构建并下载了该平台之后(这表明操作系统启动并运行良好),您需要创建您的主干驱动程序。您可以使用 File菜单上的 Platform

Builder New Project or File命令创建一个 Microsoft Windows CE DLL。创建用于公开函数或资源的

DLL与创建用作驱动程序的 DLL之间没有什么不同;唯一的不同之处在于 DLL公开哪些函数,以及如何在平台上注册或使用 DLL。

此外,一种创建国际化应用程序的方法是,首先创建包含一组核心语言字符串、对话框和资源的基本应用程序,然后创建许多外部

DLL,其中每个都包含针对特定区域设置的对话框、字符串和资源。然后,应用程序就可以在运行时加载相应的语言资源。只需要添加 DLL

文件,您就可以将语言添加到应用程序中。在 Developing International

Software一书中描述了与此相关的主题以及其他一些有趣的主题,可以在 Microsoft Press网站上获得此书。

添加一个作为设备驱动程序的项目

用 Platform Builder打开现有的 MyPlatform工作区。

在 File菜单上,单击 New Project or File。

选择 WCE Dynamic-Link Library,给它一个合适的名称(例如,StreamDrv),然后单击

在下图所显示的页面中多少填写一些您需要的信息,然后单击 Next。

单击 A simple Windows CE DLL project,如下图所示。

此时,DLL只包含一个空的 DllMain

函数。您可以公开一些应用程序要调用的函数,并公开一些资源(可能使之成为识别语言/文化的应用程序的一部分),或者使之成为一个设备驱动程序。在本文中,您将使用

Windows CE Stream Driver Wizard创建您的主干流驱动程序。

在 Windows CE中,打开流驱动程序就像打开文件一样,只需根据唯一的三字母前缀(例如,COM)。

为您的驱动程序选择一个唯一的三字母标识符。在 Location

框中输入您之前创建的流驱动程序的完整路径。或者使用“browse”按钮定位到 Platform Builder安装中的 PBWorkspaces

目录,找到您前面创建的平台,然后找到流驱动程序的名称(在前面的示例中,此路径为 PBWorkspaces\TuxPlat\StreamDrv)。

在 Driver Filename框中输入驱动程序的名称。如下图所示,使用与您前面使用名称(StreamDrv)

相同的名称,以确保改写在 Platform Builder中创建的原始文件。

按 Go,将生成流驱动程序源代码。

第二部分:测试流驱动程序测试代码

现在您已经编写了用于 Windows CE的自定义流驱动程序的基本代码。此时,驱动程序还没有与任何硬件连接。

在编写完驱动程序之后,您需要为开发人员提供一种测试它的方法。Windows CE附带了 Windows CE Test Kit

(CETK),它提供了用于各种驱动程序类型的驱动程序测试,包含网络连接、蓝牙、串行端口以及显示。您编写的驱动程序是一种自定义的流驱动程序,它没有

公开与现有的驱动程序测试一样的功能,因此您需要为该驱动程序编写一个自定义测试。虽然您完全可以编写一个应用程序来演练驱动程序,但提供一个 CETK

模块或许更好些,在开发期间可以使用此模块,并且还可以将此模块提供给客户,供他们在装配硬件上测试驱动程序。

在这一部分的练习中,您将执行以下过程:

将自定义驱动程序的测试代码添加到 Tux DLL中

在 Platform Builder中,在 File菜单上单击 New Project or File。

选择 WCE TUX Dynamic-Link Library,键入 TuxTest作为项目名称,输入一个位置,单击

Workspace Project,然后单击 OK,如下图所示。(实际上,您可以选择任意一个项目类型;对于本文,单击

在下图显示的页面中多少填写一些您需要的信息,然后单击 Next。

阅读下图所显示的屏幕上的信息,然后单击 Next。

在最后一页上,您可以选择选取 Release Type下的

CETK,如下图所示。该选项关闭了某些二进制的优化,以提高调试工作效率。单击 Finish。

单击 View| File View,然后展开 Projects树显示 tux

ft.h—该文件包含 tux DLL所用的函数表。

test.cpp—该文件包含从该函数表中调用的测试过程。

TuxStreamTest.cpp—该文件包含 DLLMain和 ShellProc,后者是从 Tux.exe

将自定义驱动程序测试代码添加到 Tux DLL中

使用 CodeClip来获得 Tux_Custom_Test| TuxCode源代码。

用 CodeClip中的代码替代函数 TestProc中的内容。

您会注意到,Test.cpp中的代码加载了一个名为 Demo.dll的驱动程序。对于本文,您创建了一个名为 StreamDrv

的驱动程序。您需要修改源代码以加载您的 StreamDrv.dll驱动程序。

找到 Test.cpp中调用 LoadLibrary的源代码的位置,然后将要从 Demo.dll

中加载的驱动程序的名称修改为 StreamDrv.dll。

在 Platform Builder文件视图中,右键单击 TuxTest项目,然后单击 Build Current

您还需要从该目录中添加 Windows CE Test Kit组件。

在 Device Drivers下,找到该目录中 Windows CE Test Kit组件的位置,然后选择

Add the Windows CE Test Kit,将该组件添加到您的平台中。

注将该组件添加到您的平台上并没有将任何文件添加到最后的操作系统映像中;它将 Clientside文件添加到 build release

文件夹中。您可以从 Platform Builder下载 Clientside应用程序,并在目标设备上运行该应用程序。

现在您需要重新构建您的操作系统,以便合并这些变更。

在 Platform Builder中,选择 Build OS| Sysgen。

构建过程将会花大约 5分钟完成。

当加载驱动程序时,在流驱动程序的入口点设置一个断点来观察非常有用。

单击 File View,打开 StreamDrv项目,然后打开 Source files。

找到 DllMain,然后找到并单击 switch语句。

单击 Target| Attach,将操作系统下载到模拟环境中。

您会看到以下调试输出,断点将启用。注意,在加载操作系统的用户接口(UI)之前,这早就发生了。

4294780036 PID:23f767b6 TID:23f767e6 0x83fa6800:>>> Loading module

streamdrv.dll at address 0x01ED0000-0x01ED5000

'C:\WINCE500\PBWORKSPACES\DRVDEMO\RELDIR\EMULATOR_X86_DEBUG\STREAMDRV.DLL'

单击 switch语句,然后按 F9禁用断点。

现在,您已经构建了一个 Windows CE 5.0

操作系统,它包含一个自定义流驱动程序,并且您已经在操作系统引导顺序的过程中看到了驱动程序加载。

在这一部分的练习中,您将执行以下过程:

使用命令行工具查看从驱动程序公开的函数

使用远程系统信息(Remote System Information)工具检验驱动程序

检验您所创建的设备驱动程序的第一种方法是查看从该驱动程序公开的函数。Windows CE附带了一个名为 Dumpbin

的命令行工具,可以用于检验导入应用程序或模块的内容,或者从 DLL(或驱动程序)导出的内容。

使用命令行工具查看从驱动程序公开的函数

在 Platform Builder中,单击 Build OS| Open Release

Directory。该操作为当前的工作区打开 build release文件夹中的 Command Prompt窗口。

键入 dumpbin exports StreamDrv.dll

下图显示输出。您可以看到,所有需要的流驱动程序函数都是从驱动程序公开的;函数是从 DLL公开的(通过该项目的.def文件)。

键入 Exit关闭 Command Prompt窗口

StreamDrv.def文件的内容如下所示。

您可以检验驱动程序的第二种方法是通过远程系统信息工具。

通过远程系统信息工具检验驱动程序

在 Platform Builder中,单击 Tools| Remote System

选择 Windows CE Default Platform| Default Device,然后单击

此过程将远程系统信息应用程序连接到 Platform Builder正在使用的当前活动平台上。下图显示了结果。

您也可以使用加载模块列表来确定已加载了您的驱动程序。

在 Platform Builder中,使用 Target Control窗口(gi mod)或 View|

Debug Windows| Modules and Symbols。

第四部分:使用 Windows CE Test Kit

Windows CE Test Kit包含设备端组件和桌面组件。设备端组件叫做 Clientside.exe,通过从目录中添加 CETK

组件,您可以将设备端组件添加到您的工作区中。注意,将 Clientside.exe

应用程序添加到工作区中并没有将任何文件添加到最终操作系统映像中,但它却将应用程序复制到 build release文件夹中。

在桌面计算机上运行 CETK之前,您需要启动设备上的 Clientside.exe应用程序。没有链接工具(比如远程工具)的原因在于,CETK

也将运行在装配(零售)设备(比如 Pocket PC)上。

在这一部分的练习中,您将执行以下过程:

检验 Windows CE Test Kit用户接口

检验 Windows CE Test Kit用户接口

在 Platform Builder中,在 Tools菜单上单击 Windows CE Test

这一步启动 Windows CE Test Kit应用程序,如下图所示。注意,这不是一个标准的远程工具。Windows CE

附带的大多数远程工具都使用 Kernel Independent Transport Layer

(KITL),一种将工具从基础通信硬件中抽象出来的传输,以便这些工具可以运行在以太网、串行端口、1394、Usb或者其他传输上。

虽然对于 Windows CE 5.0,Windows CE Test Kit通常通过套接字连接,但是也已经更新了工具来支持 KITL。

在 Windows CE Test Kit中,单击 Connection| Start

这一步显示 Device Connection对话框,其中您可以选择是通过套接字连接还是通过 KITL连接。

确保清除了 Use Windows Sockets for the client/server communication

在远程工具(KITL)的标准用户界面中,选择 Windows CE Default Platform| Default

Device,然后单击 OK,如下图所示。

该过程在目标设备上启动 Clientside.exe,并连接到目标设备上。在完成连接之后,CETK枚举目标平台上支持的设备,并禁用 CETK

在 CETK连接到目标设备并枚举设备之后,UI如下图所示。注意,禁用了某些硬件类别,比如 Bluetooth、IR

将自定义测试添加到 CETK中之前,您可以运行一个标准测试,以查看测试工作如何进行。

在 CETK中,展开 Windows CE(x86)。

右键单击 Serial Port Driver Test,然后单击 Quick Start。

这一步只运行了这一个测试,还没有运行所选的其他测试。UI指示测试正在进行,如下图所示。

CETK提供测试过程和测试输出的更新。您也可以在 Platform Builder中检验调试输出,以便查看测试过程,如下例所示。

405910 PID:83d4ee4a TID:83ea5a8a*** Test Name: Set event mask and wait for

thread to close comm port handle

405920 PID:83d4ee4a TID:83ea5a8a*** Test ID: 1007

405920 PID:83d4ee4a TID:83ea5a8a*** Library Path:\serdrvbvt.dll

405920 PID:83d4ee4a TID:83ea5a8a*** Command Line:

405920 PID:83d4ee4a TID:83ea5a8a*** Result: Passed

405920 PID:83d4ee4a TID:83ea5a8a*** Random Seed: 15595

405930 PID:83d4ee4a TID:83ea5a8a*** Thread Count: 1

405930 PID:83d4ee4a TID:83ea5a8a*** Execution Time: 0:00:05.110

405930 PID:83d4ee4a TID:83ea5a8a***

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

指示模拟器上的串行端口测试已经失败(如下图所示),那么失败可能不是由于每个测试的完全失败而导致的。它可能表明,全部测试套件只有一部分已经失败,并且这部分实际上也是期望的行为。

右键单击 Serial Port Driver Test [Failed],然后单击 View

查看上图所示的结果,您可以看到,已经运行了 10个单独的测试。除了 Set and verify receive timeout

以外,所有这些测试都已经通过。

要获得更多信息,您可以单击个别测试。

通过使用 Platform Builder User-Defined Test Wizard,您可以创建一个自定义 CETK

测试。该测试将验证自定义流驱动程序(您也已经将其添加到平台中)的导出函数。

在这一部分的练习中,您将执行以下过程:

列出 CETK中的自定义流驱动程序测试

列出 CETK中的自定义流驱动程序测试

在 CETK中,单击 Tests| User Defined。

这一步启动 User-Defined Test Wizard。该向导的第一页只是一些信息。

单击 Add a New Test,然后单击 Next,如下图所示。

·在 Name of Test框中键入 Custom Stream Driver Test

·在 Tux Module(DLL)框中,定位到

C:\Wince500\PBWorkspaces\MyPlatform\RelDir\Emulator_x86_Debug目录,然后选择

test.dll或 TuxTest.dll(这依赖于您在 Platform Builder中所使用的 Tux

·在 Command Line框中,保留当前测试的默认设置。

下图显示信息如何出现在当前的向导页中。

单击 Copy the files to the directory for user-defined tests,然后单击

您需要将自定义驱动程序测试(您的 DLL)复制到用户定义的测试文件夹中。如果您要删除现有的工作区,那么自定义驱动程序测试仍然保持完好。

CETK应用程序不会用新的测试进行自动刷新。您需要重新同步桌面应用程序,以查看新添加的测试。

右键单击 Windows CE(x86),然后单击 Redetect Peripherals。

该过程添加了一个名为 User Tests的新驱动程序类别。您只添加了一个测试,因此,当您展开这个项目时,您只能看到 Custom

注已经将自定义流驱动程序测试的 DLL复制到下列位置: C:\Program Files\Windows CE Platform

Builder\5.00\CEPB\wcetk\user\x86.

在可用的测试列表中展开 User Tests。

右键单击 Custom Stream Driver Test,然后单击 Quick Start。

OK,关于windows ce 5.0和Windows CE 5.0中文版下载的内容到此结束了,希望对大家有所帮助。