搜索
bottom↓
回复: 5

Win CE和smartphone和pocket pc和windows mobile比较(zt)

[复制链接]

出0入0汤圆

发表于 2009-12-21 23:19:39 | 显示全部楼层 |阅读模式
Win CE和smartphone和pocket pc和windows mobile比较(zt)

作者:Charles Chen  来源:博客园  发布时间:2009-10-29 22:24  阅读:148 次  原文链接   [收藏]   
     最近一个项目需要开发一个智能设备的程序,因刚接触Smart Device设备开发,对很多概念性的东东还不很清楚,这里我转载了一篇文章,感觉说的很清楚了。转载:http://realsun.spaces.live.com/Blog/cns!1ppZRAiUYU46O5I5adnaxeog!141.entry?sa=896997641  

1.WINCE vs Window mobile

      WINCE是由一个实时的,占先式的内核和外围的一大堆驱动程序组成.其中内核是微软开发的,但是硬件部分和驱动可以由各个OEM厂商来开发. Platform Builder就是一个可以把这些东西整合在一起的工具,通过PB,我们可以定制自己的一个操作系统,通过选择不同的组件,操作系统的大小可以从250k到24M.然后开发人员就能够把这个OS的iamge文件部署到嵌入式系统中去.PlatForm Builder还可以定制出这个平台相应的SDK,供EVC等作上层开发的平台之用,当然它也可以完全取代EVC,作为一个IDE来开发上层的应用软件.
      那什么是Windows mobile呢,WINCE的可裁减性能够给开发人员带来很大的便利,但是也存在了兼容性的问题.比如一个程序设计了通过网络来访问数据库,但是底层的SDK并没有加入网络的功能,这样就不得不修改上层的软件.这样就造成了无法进行通用的独立软件开发.而Window mobile就解决了这个问题.他是ODM设定的具有统一特定属性的OS,smartphone 和 pocketPC实际上只是其中的两种profile的实现.这两种是微软规定的,程序员不必担心自己程序的兼容性问题.正是由于平台的统一性,所以有n多人来开发基于这两个平台的软件.
      [总结]Windows mobile是WINCE的子集,而smartphone和pocketPC是windows mobile的两种实现.

2.smpartphone vs pocketPC
      故名思义,smartphone偏向于通话的应用.而pocketPC则偏向于PDA的功能.
一个比较大的外观上的区别是,pocketPC带有触摸屏,所以一般都带有指点杆.
但是从功能上来说,因为内核都是WinCE系统.所以差别不大.
       两个系统的主要的差别在于电源管理的方式上.pocktPC只有两种状态,on和off,当你关机的时候,系统完全关闭(当然,时钟芯片还在运作),无法接到电话,收到短信.在系统打开的时候,如果长时间没有按键,则会进入待机,但是CPU一直在全速运转,只是把背光之类的关闭而已.但是smartphone则多了一个suspend的状态,在你关机之后,实际上CPU还在运转,当有电话接入就转到on的状态了.所以就电源使用效率来说,smartphone是一种效率比较低的做法.但是这样也有好处,就是反映时间快,pocketPC从suspend到on要花费数秒的时间,这对于实时通讯是不允许的.
       [总结]smartphone和pocketPC系出同门,只是对于不同的应用场合有不同的特性.

出0入0汤圆

 楼主| 发表于 2009-12-21 23:20:42 | 显示全部楼层
探索 Windows Embedded CE 6.0 的新功能
Paul Yao


本文基于 Windows Embedded CE 6.0 的预发布版本。文中包含的所有信息均有可能变更。
本文讨论:
Windows Embedded CE 6.0
嵌入式开发
内核创新
共享源码实现
本文使用了以下技术:
Windows CE


  目录
Windows Embedded CE 6.0 概述
API 部署方案
内核模式操作
内存体系结构
设备仿真器
CE 6.0 的蜂窝技术
基于位置的编程
安全性增强功能
开发工具
一流的工具
注册表文件编辑器
运行时映像查看器
共享源码和 Windows CE 开发
结束语

Windows CE 的第一个版本发行于 1996 年。从那以后,随着半导体元件的突飞猛进,出现了许多新类型的可移植嵌入式产品。据 Semiconductor Industry Association (SIA) 统计,1994 年,全球半导体销售额达到 1000 亿美元,2006 年这一数字有望上升到 2500 亿美元。在此期间,Windows® CE 团队充分了解在嵌入领域工作的开发人员的想法,不断推动产品和技术的更新换代。


Windows Embedded CE 6.0 概述
就之前的五个版本而言,Windows CE 是各种嵌入式设备的基础。而最新版本的 Windows Embedded CE 6.0 传承了推陈出新的特点,提供了一整套新增功能,其中有些新功能您需要掌握,而其他的只需知道即可。(请参阅提要栏“深入探索 Microsoft 嵌入技术的创新”。)
深入探索 Microsoft 嵌入技术的创新
对于一个成功的产品,即使其规模很小,其新版本的构思、规划、开发和交付过程也都是一项庞大的工作,操作系统则更是如此。就 Windows CE 而言,它涉及一个 700 多人的开发团队。Microsoft 在规划新功能时,会通过多种方式征求客户的反馈意见。最为人所熟知的反馈机制就是 Beta 版软件程序,预发布软件藉此提供给客户。但 Beta 版软件程序并不是获得反馈意见的唯一方法。在设计和规划阶段还会安排客户寻访和设计评估,以便将客户的意见注入到产品开发过程中。
在产品规划初期,Windows CE 规划团队会遍访世界各地的客户,了解他们当前和预期的产品开发需求。这些寻访会安排在前一产品版本发布后不久,因为创新是一个持续的过程。基于这些寻访,该团队将创建一个开发计划草案并在内部进行评估。
开发计划草案就绪后,会在设计评估环节对计划进行验证,这时会有数百名 Microsoft 外部人员聚在一起各抒己见。我曾于 2005 年 6 月参加了一次针对 CE 6.0 计划的设计评估活动。在这次为期一周的活动伊始,参与者签署了保密协议 (NDA),以便双方开诚布公地对计划进行讨论。实际的设计评估过程非常有趣。首先由开发团队的成员介绍几个方面的主要功能。每次演示的最后都有一段问答时间,每位参与者使用在登记时收到的无线投票器进行投票。每次投票后,结果会立即显示出来,供每个人查看和讨论。
一周结束时,每位参与者都可能针对开发团队应如何确定工作的优先次序提出了数百条意见。而正是开发团队在将难解之题呈现给那些依赖于产品未来版本中某些功能的客户时所获得的新意见,才是这类活动价值的最佳衡量标准。


对哪些特定功能感兴趣完全取决于您所使用的工具类型。如果您是无头工业控制器的设计师,您可能会与创建下一代缝纫机应用程序的软件开发人员有不同的需求。而你们两个所感兴趣的,对于移动电话应用程序的开发人员很可能毫无意义。您明白了吧。
尽管 Windows CE 是许多种工具的基础,您往往认为它分为两大阵营:Windows Mobile® 驱动的设备和自定义嵌入式设备(即任何其他设备)。但一个平台可能既支持标准设备又支持自定义设备吗?答案是肯定的,Windows Mobile 和自定义嵌入设备通过巨大的技术资产组合链接在一起,这其中包括小而强大的多线程内核、丰富的编程 API 系列(Win32、MFC 和 .NET Compact Framework)以及一组功能强大且可扩展的开发工具。
Windows Embedded CE 6.0 (CE 6.0) 引入了能突破先前内核局限性的新内核,同时从微小的 CPU 中榨出了更多的性能。在本文中,我将首先介绍与新内核相关的 CE 6.0 操作系统新功能:新的 API 部署方案、新采用的内核模式以及内存体系结构。然后,我还将介绍 CE 6.0 的其他新功能。
最后,我将介绍用于配置、构建和测试各种 Windows CE 配置的新工具。有关工具的讨论直接面向负责创建自定义 Windows CE 配置的嵌入式应用程序开发人员。但如果您是 Windows Mobile 开发人员并打算跳过这后半部分,我劝您还是看一看,尤其着重阅读有关 Windows CE 共享源码的内容。它是任何想要了解 Windows CE 秘密的人所必备的资源,这些秘密只有通过源码才能揭示出来。


API 部署方案
Windows CE 的一个优势是,它是基于 Windows 桌面版本的功能和优化开发出来的。对于从 Windows CE 的第一个版本开始直到 Windows CE 5.0 的每个版本而言,Win32® API 都是使用类似于 Windows NT® 早期版本的客户端/服务器体系结构来部署的。
例如,在 Windows NT 3.5 中,所有 GUI 函数都驻留在单个的进程 csrss.exe(客户端服务器运行时子系统)中。调用 CreateWindow 或 TextOut 等函数时,会通过称为本地过程调用 (LPC) 的进程间通信机制来触发 CSRSS 进程。由于重量型 Windows NT 进程间如此之多的上下文切换会导致性能降低,因此 Windows NT 4.0(发布于 1996 年)正式弃用了此体系结构。在那时,所有以前的用户模式 API 库都被转换为内核模式。
Windows Embedded CE 6.0 的发布也引发了类似的变化。就所有先前版本而言,Windows CE 还一直使用客户端/服务器机制来将调用方连接到目标 Win32 函数。这两种变化有其相似之处,但重要的是要注意 Windows CE 实现与 Windows NT 实现的不同点。其中一个不同点是,Windows CE 使用比 Windows NT 轻得多的进程,因此性能成本没有那么高。另外,与 Windows NT 不同,Windows CE 是可配置的。而且通过使用进程来部署系统 API 的这种方式,实现了通过特定设备对整个操作系统资源的需求量来控制 ROM 和 RAM 的需求量。例如,一台设备可以配置为仅通过一个 API 进程(即系统内核 (nk.exe))来运行。其他需要 GUI 支持的设备也需要运行 GUI (gwes.exe) 进程。
尽管新模型的确提供了一些性能方面的改进,然而引发变革的真正动因是要清除可能妨碍下一代设备开发的局限性。这些 Windows CE 程序员所熟知的局限性包括进程总数 (32) 的限制以及前几代 Windows CE 内核中过小的虚拟地址空间 (32MB)。
在第一个内核部署后的十年间,世界发生了太多的变化。如今的设备可以拥有能力更强的硬件:更快的 CPU、更大的存储空间、彩色的 LCD 显示屏等等。今天的设计不再需要以往模型的低内存占用,因此重新设计迫在眉睫。随着 CE 6.0 的出现,系统 API 从其自身用户模式的进程中转移出来而被放入内核模式的 DLL 中。图 1 总结了 Windows CE 5.0 和 CE 6.0 之间的变化。
  Figure 1 Windows Embedded CE 6.0 中主要模块的变化

Windows CE 5.0 进程 Windows Embedded CE 6.0 DLL 说明
nk.exe(OAL 和内核) nk.exe (OAL)
kernel.dll(内核) 从 CE 6.0 开始,OEM 代码从 CE 内核代码中分离
filesys.exe filesys.dll 注册表、文件系统和属性数据库
device.exe device.dll 管理内核模式设备驱动程序
device.exe udevice.exe  新增到 CE 6.0 中,用于管理用户模式设备驱动程序的独立进程
gwes.exe gwes.dll 图形和窗口化事件子系统
services.exe servicesd.exe 系统服务的宿主进程
services.exe services.exe 用于配置服务的命令行接口

在这一操作系统结构重组期间,另一项重要的变更也在进行:OEM 代码从操作系统代码中分离出来。以前,硬件设计师需要创建一组称为 OEM 适配层 (OAL) 的低级别例程,而且该组件会被静态地链接到操作系统内核。OAL 和内核作为一个可执行文件 nk.exe 出现。在 CE 6.0 中,这两个组件现在被内置到两个单独的模块中:内核 (kernel.dll) 和 OEM 适配层 (nk.exe)。


内核模式操作
要运行 Windows CE,CPU 必须支持两个级别的权限。较高级别的权限称为内核模式;较低级别的权限称为用户模式。为代码或数据分配的任何内存都将被分配给这两种模式之一。将代码置于用户模式有助于整个环境更可靠、更安全地运行。然而,这些益处的获得是有代价的,因为用户模式和内核模式代码混合运行的速度通常比系统完全运行于内核模式下时要慢一些。
在先前版本中,Windows CE 既可以配置为完全内核模式操作,也可以配置为同时使用内核模式和用户模式的混合模式操作。而对于 CE 6.0,则只支持混合操作模式,所有应用程序将加载到用户模式内存中,所有 OS 组件则加载到内核模式内存中。如图 2 所示,某些组件具备用户和内核两种模式。这种部署有助于最大程度降低跨权限边界调用所花费的成本,但会增大操作系统映像。
  Figure 2 用户模式和内核模式系统库

组件 用户模式 内核模式
核心系统库 coredll.dll k.coredll.dll
设备驱动程序帮助程序 ceddk.dll k.ceddk.dll
凭据提供程序 credsrv.dll k.credsvr.dll
IP 网络帮助程序 API iphlpapi.dll k.kphlpapi.dll
多媒体计时器 mmtimer.dll k.mmtimer.dll
进程、线程和内存帮助程序 toolhelp.dll k.toolhelp.dll
Windows Sockets ws2.dll k.ws2.dll
Windows Sockets 服务提供程序接口 wspm.dll k.wspm.dll



内存体系结构
新的内核带来了全新的内存体系结构,这一结构消除了先前对可用进程数和地址空间大小的限制。以前的内核最多支持 32 个进程,每个进程占用其各自的进程槽。而 CE 6.0 将进程数量限制提高到 32K。(这是基于内核句柄存储限制而算出的理论最大值。CE 6.0 可以支持最大 64K 的内核句柄,而一个进程至少需要两个句柄,其中一个用于进程本身,另一个用于进程的线程。实际的最大值会低一些,因为其他类型的内核对象会占用内核句柄表中的空间。)
在 CE 6.0 之前,每个 Windows CE 进程有 32MB 的虚拟内存地址空间。而在 CE 6.0 中,每个进程有 2GB 的地址空间。除了地址空间的容量更大以外,进程地址空间的结构也有所不同。在 CE 6.0 之前,一个虚拟地址空间分为 32 个槽,进程地址空间之间不重叠。而在 CE 6.0 中,每个进程都获得了其各自真正私有的进程地址空间。这一变化使得 CE 6.0 进程地址空间看起来与 Windows 桌面版本(例如 Windows XP)中的进程地址空间非常类似。
您一定想知道新的内存体系结构会对现有软件产生怎样的影响。一般而言,大多数的变化都限定于设备驱动程序。尽管进程地址空间的容量增大了许多,但运行良好的应用程序并不应发觉,因为内存是使用相同的分配 API 进行分配的,而且数据仍然使用 32 位虚拟内存指针进行存储。新的内存体系结构的确会简化某些操作,尤其是对于需要分配很大内存块(例如大于 10MB)的应用程序(例如,可能需要容纳从数码相机传感器读入的高分辨率图像)。以前,大数据块必须通过共享内存分配函数(例如,MapViewOfFile)进行分配。从 CE 6.0 开始,只需调用 VirtualAlloc 就可轻松实现大数据块的分配。
除了进程地址空间容量的增大外,这一内存体系结构所引入的另一个变化是真正私有的进程地址空间。在 CE 6.0 之前,一个进程通常可以非常容易地查看另一进程的地址空间。在这种如今已被弃用的分槽式地址方案中,当前运行的进程被映射到进程槽零。这是通过将所有指针调整为指向零到 32MB 范围内的引用内存来实现的。当前运行进程可以通过调用 MapPtrProcess 等函数,来从另一个进程获得指针并直接访问在进程槽中的该内存(槽 1 对应 32MB-64MB 范围、槽 2 对应 64MB-96MB 范围,依此类推)。实现私有进程地址空间后,任何应用程序进程都无法查看其他应用程序进程的地址空间。而您需要使用标准的 Win32 共享内存 API 来允许两个进程读写相同的内存。
这一新体系结构之所以可能会对设备驱动程序产生最大影响,其中一个原因是,现有 Windows CE 设备驱动程序通常使用诸如 MapPtrProcess 的函数在应用程序地址空间中直接进行读写。在 CE 6.0 中,那些仍需在应用程序地址空间中访问数据的驱动程序需要在内核模式下运行。这是通过链接一组合适的内核库 (k.coredll.dll) 而非用户模式的库来实现的。
但在某些情况下,设备驱动程序可能需要在用户模式而非内核模式下运行。例如,对于某个驱动程序,您可能不想授予其完整的内核模式权限。这样的驱动程序在 CE 6.0 中可以通过使用用户模式设备驱动程序进程 (udevice.exe) 来运行。
现在,让我们看一下 CE 6.0 提供的某些新功能。其中有一些是开发人员工具的增强功能,而另外一些是可以加到所创建的自定义嵌入式设备中的新功能。


设备仿真器
在科幻小说家的故事中,有许多都讲到了能表现得如同人一样的机器。但却很少有故事写来赞美能模拟其他机器的机器是何等伟大。能够模拟移动电话行为的桌面系统不是很神奇吗?
这样的模拟实际上并不新鲜。它的历史实际上与计算机的历史一样悠久。20 世纪 60 年代,新推出的 IBM 360 可以模拟其上一代产品 IBM 1401。20 世纪 70 年代,DEC-10 模拟 MITS Altair 来调试第一个 Microsoft BASIC 解译器。当然还有今天的 Microsoft Virtual PC,它使得模拟实现虚拟化。
Windows CE 见证了三代仿真器。第一代仿真器通过直接调用大致相当的 Windows NT 函数来支持 Windows CE。这是一个好的开端,但给人们留出了巨大的期待空间。第二代仿真器作为自定义嵌入式平台出现,它采用硬件虚拟化技术,运行与真实设备相同的低级别指令。它能力超卓,但由于其采用 I86 指令集而构建,因而对于致力于部署到非 x86 处理器的开发人员而言也存在缺点。第三代仿真器随附于 CE 6.0,它提供 ARM V4I 指令集的指令级仿真。此仿真器作为“设备仿真器”随附于 CE 6.0 平台生成器。
最新一代的仿真器支持 ARM V4I 指令集。尽管 x86 指令集在桌面系统中占尽优势,但却未能在嵌入领域同样独领风骚。嵌入领域的王者属于英国 ARM Holdings, Ltd. 公司设计和许可的指令集。以该机器指令集级别进行仿真的益处在于二进制兼容性。您无需针对仿真器构建 x86 可执行文件,再针对实际设备构建另一组 ARM 可执行文件,而只需创建一组二进制文件,即可运行这两者。除了更加便捷外,它还进一步提升了测试的可信度,因为您在任何地方都使用相同的可执行文件进行测试,而不必担心安装脚本错误或者编译器/链接器程序错误。


CE 6.0 的蜂窝技术
为了实现计算机之间的通信,CE 6.0 提供了连接移动电话网络所需的接口。以前,Windows CE 不支持拨打电话和发送 SMS(文本)消息。而在 CE 6.0 中,Microsoft 提供了一组用于连接移动电话网络的精选组件。
CE 6.0 中提供了 cellcore.dll,这个动态链接库进一步扩展了 Win32 API,用以支持各种移动电话服务,例如启动数据连接、发送 SMS 消息等等。CE 6.0 所提供的另一个重要组件是无线接口层 (RIL) 驱动程序 ril.dll。该组件为应用层与移动电话硬件的连接提供了低级别接口。以前,要想在 Windows CE 上构建移动电话,就必须开发自己的接口层。然而这并非易事,只有少数坚忍不拔的先驱者曾这样做过。
CE 6.0 的其他支持元素还包括用于无线应用协议 (WAP) 的低级别组件,其中包括内核模式驱动程序 (wapdrv.dll) 和用户模式 API (wap.dll)。请注意,CE 6.0 所提供的浏览器不 P 浏览,而是一些仅支持 HTML 的浏览器。Windows Mobile 驱动设备所附带的 Pocket Internet Explorer®(支持 WAP)与 CE 6.0 所附带的仅 HTML 版本不同。
为了能够创建这样的无线数据终端,需要为 SMS 消息传递提供丰富的支持。这是很重要的,因为移动电话网络使用 SMS 服务来发送各种服务通知,例如,语音邮件、传真和电子邮件。因此,CE 6.0 提供了一组丰富的 SMS 服务提供程序,以便能够接收 SMS 广播消息、通知消息和状态消息。


基于位置的编程
在计算机实现移动之前,人们对计算机位置的确定兴致索然。一旦大型计算机进入配有空调的机房,就无需再考虑其位置。随着如今袖珍系统和车载自动移动计算机的出现,人们突然对计算机位置这一主题倍加关注。
Microsoft 在 Windows Mobile 5.0 中引进了对全球定位系统 (GPS) API 的支持。现在,CE 6.0 中也提供了这些相同的 API 和支持它们的驱动程序。


安全性增强功能
在过去的几年中,寻找各种方法来提高所有计算机系统安全性一直是一个重要的课题。毕竟,安全性是 Windows Vista™ 的重要课题之一。CE 6.0 团队也将安全性作为其工作的重点。
在讨论 CE 6.0 中的改进功能之前,值得介绍一下 Windows CE 中已有的安全功能。Windows CE 驱动设备对于允许加载和运行哪些应用程序和 DLL 的严密控制能力构成了 Windows CE 安全性的核心。通过 OEMCertifyModule 函数,设备可以防止任何未授权代码的运行。识别授权模块的一种常见方法是使用数字证书。设备安全性可以在各种不同的配置中设置。例如,在一种配置中,可以拒绝任何未知模块(无有效证书)对系统的所有访问。或者,也可以禁用这一机制,使所有模块都拥有所有系统服务的完全访问权。
另一个核心安全功能是加密 API,它允许应用程序使用各种加密算法来将数据块加密和解密。加密算法以带有 CALG_ 前缀的符号名称来标识,例如,CALG_DES 和 CALG_AES。此外,这些核心安全功能还有对安全套接字层 (SSL) 的支持(提供安全的 HTTP 连接)以及通过点对点隧道协议 (PPTP) 对虚拟专用网络 (VPN) 的支持。为了与服务器系统进行安全连接,Windows CE 还支持多种身份验证机制,其中包括 Windows NT LAN 管理器协议和更可靠的 Kerberos 身份验证协议。
来自 Windows CE 先前版本的其他功能还包括:凭据管理器、智能卡支持、数据保护 API (DPAPI)、公钥证书 (PKI) 支持以及本地身份验证子系统 (LASS)。那么,CE 6.0 的新增安全性功能有哪些呢?
正如本文前面所提到的,用户模式代码与内核模式代码是严格分离的。在 CE 6.0 中,对于受保护服务器库 (PSL) 和从用户模式传递到内核模式的 I/O 控制 (IOCTL) 参数,将执行增强的验证检查,从而提高了内核模式的安全性和稳定性。
凭借对安全加载程序的支持,系统的周边安全也会大大改进。安全加载程序可以确保系统中只运行受信任的代码。在 Windows CE 5.0 中,操作系统提供了加载程序挂钩,但 OEM 必须自己编写安全加载程序。而 CE 6.0 附带有内置的安全加载程序。加载程序的信任决策是基于证书而做出的,也就是说系统中所运行的所有代码都必须有签名。安全加载程序(如果启用)会检查代码签名,如果签名由受信任的证书签署,则允许该代码运行。如果不是这样,模块的加载就会失败。OEM 对信任哪些证书拥有控制权限,因而也就能控制系统中要运行的代码。
实现了安全性改进的另一个方面是 Windows CE OS 设计(或新平台)向导。如果平台配置了某项可能危及设备安全的功能时,系统会发出安全警告。例如,图 3 显示了当平台中包括对象交换 (OBEX) 协议时会出现的通知。系统还会提供有关潜在危险的详细说明,以帮助平台开发人员在平台开发过程的早期解决这些潜在问题。

图 3 设计向导发出的安全警告 (单击该图像获得较大视图)
添加到 CE 6.0 安全性的最后一个功能是对安全引导加载程序的支持。该功能可以在所下载的操作系统 (NK.BIN) 映像得以在系统中安装并运行前,确保其包含有效的数字签名。


开发工具
在 CE 6.0 之前,Windows CE 团队发布了称为“平台生成器”的独立产品。到了 CE 6.0,平台开发工具均集成到 Visual Studio® 2005 中。毫无疑问,Visual Studio 对于客户端和 Web 开发而言,都是重要的开发工具;现在它还可以用来支持 Windows CE。在开发自定义 Windows CE 平台时,可以使用一些对应用程序开发人员有益的功能,例如 IntelliSense®、语法检查、语法突显、大纲视图和函数完成。
“平台生成器”的某些术语有所调整,可以更好地适应 Visual Studio 模式。Windows CE 5.0 工作区现在是 CE 6.0 中的解决方案。Windows CE 5.0 项目(IDE 定义的应用程序或 DLL)现在是 CE 6.0 中的子项目。
起初,我在准备配置和构建新的 CE 6.0 平台时,对于 Visual Studio 2005 的启动有些陌生,但我很快便知道了 Windows CE 5.0 设置和命令是如何映射到 Visual Studio 的。两个版本中,用于创建新 Windows CE 平台的命令很相似。对于 Windows CE 5.0,应当选择“文件”|“新建平台...”菜单项。对于 CE 6.0,应当选择“文件”|“新建”|“项目...”菜单。随着 CE 6.0 工具的安装,新的项目类型会添加到 Visual Studio“新建项目”窗口。项目类型称为“平台生成器”。图 4 显示了这项更改以及“OS 设计”的新项目模板。

图 4 “新建项目”窗口和平台生成器项目类型 (单击该图像获得较大视图)
选择项目位置和名称并单击“确定”后,“Windows CE OS 设计向导”即会启动。除了所创建内容采用新名称(“OS 设计”而非“平台生成器工作区”)外,新的 CE 6.0 向导与旧的 Windows CE 5.0 向导是相同的。
对于体验过 Windows CE 5.0 平台生成器的所有人而言,除了少数的改进之外,“OS 设计向导”的其余部分都是熟悉的。与早期版本一样,定义新平台的第一步是选择一个或多个板卡支持包 (BSP)。然后,向导会提示用户选择一个设计模板,作为平台初始配置。某些 Windows CE 5.0 设计模板的名称有所变更;有些时候,较早的设计模板会作为其他形式的设计模板出现。Windows CE 5.0 中称为 Tiny Kernel 的模板在 CE 6.0 中被重命名为 Small Footprint Device,但换句话说,它代表无头 Windows CE 驱动平台所用的一组最低配置的操作系统功能。
Windows CE OS 设计向导会创建一个 OS 设计 (.pbxml),即为一个 Visual Studio 项目。该 OS 设计会被添加到解决方案 (.sln) 文件中。向导结束后,新创建的解决方案文件随即打开。Windows CE 设计解决方案打开时,Visual Studio 会将其菜单改为人们所熟悉的平台生成器菜单:“生成”和“调试”(参见图 5 和 6)。“目标”菜单也会有所变化。

图 5 “生成”菜单

图 6 “调试”菜单
如果您刚刚接触 Visual Studio,下面两个提示可以帮您入门。“解决方案资源管理器”窗口有着关键的作用;如果其未打开,可通过“视图”|“解决方案资源管理器”来调用。逐级浏览此窗口内容可获得许多详细的配置信息。
上下文(或弹出)菜单在 Visual Studio 中也起着重要的作用;可通过选择相应对象并单击鼠标右键来调用这些菜单。例如,从“解决方案资源管理器”窗口选择某个 OS 设计解决方案并选择“属性”菜单项后,即可打开 OS 配置窗口。


一流的工具
软件开发领域最有限的资源就是人们的时间。好的工具能够提高人们的工作效率,因此人们在开发工具上的投资永远也不会停止。既然作为嵌入式开发核心的 Windows CE 平台生成器已经集成到 Visual Studio 2005 中,而且 Visual Studio 拥有其自己专门的开发团队,因此平台生成器团队可以将更多精力放在添加一流的新工具上,而不用花费精力来维护 IDE。
您马上就会体验到该团队为您带来的未来绝妙的工具了,CE 6.0 中引入了两项新功能。一个是图形注册表文件编辑器,通过它可以轻松地编辑注册表项和注册表值并添加到 .reg 文件中。另一个很棒的工具是用于透视 nk.bin 文件的运行时映像查看器。该工具甚至允许您将两个不同的 nk.bin 文件进行比较。最后就是共享源码。尽管从技术角度来讲这并不属于工具,但对 Windows CE 开发人员有益的开放源码现象让我兴奋不已。


注册表文件编辑器
配置 Windows CE 组件的一个重要环节是创建系统注册表的设置。以前,注册表 (.reg) 文件必须以其原始文本形式编辑,如图 7 所示。Visual Studio 提供了新的注册表文件编辑器(如图 8 所示),用起来更加得心应手。必要时,通过单击注册表编辑窗口底部的“源代码”按钮,仍然可以编辑注册表文件的纯文本版本。但其默认的编辑模式类似于开发人员所使用的常用注册表编辑工具。
  Figure 7 Windows CE 组件的典型注册表文件
复制代码
IF BSP_NONLED !

; HIVE BOOT SECTION

[HKEY_LOCAL_MACHINE\System\Events]
    "SYSTEM/NLedAPIsReady"="Notification LED APIs"

; END HIVE BOOT SECTION

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\NLed]
   "Prefix"="NLD"
   "Dll"="nleddrvr.dll"
   "Flags"=dword:8                      ; DEVFLAGS_NAKEDENTRIES
   "Order"=dword:0
   "IClass"="{CBB4F234-F35F-485b-A490-ADC7804A4EF3}"

ENDIF BSP_NONLED !


图 8 Visual Studio 注册表文件编辑器 (单击该图像获得较大视图)


运行时映像查看器
另一个很棒的开发功能是运行时映像查看器。按照惯例,Windows CE 映像被编写成 nk.bin 文件。过去,很难知道特定 nk.bin 文件中的内容。而且几乎不可能将两个 nk.bin 的内容进行比较,因此需要大量的故障排查工作,试错、猜测并破坏内存来找到早已忘记的更改的细节。映像查看器针对这些问题提供了帮助。
图 9 显示了使用 Device Emulator BSP 和 Small Footprint Device 设计模板生成的 Windows CE 映像内容。您可以在 Visual Studio“属性”窗口中选择模块并查看结果,来了解任何可执行模块(*.exe 和 *.dll)文件的标头信息。通过映像查看器可以查看 .bib 文件 FILES 一节所包含的任何文件的内容。

图 9 使用运行时映像查看器查看 nk.bin (单击该图像获得较大视图)


共享源码和 Windows CE 开发
对于 CE 6.0,Microsoft 延续了从 Windows CE 3.0 开始的一项计划,即共享源码计划程序。Microsoft 从开放源码运动得到启示后,开始着手向希望下载 Windows CE 平台生成器评估版本的所有人提供重要部分的 Windows CE 源代码。
其他的开放源码项目也为构建 Windows CE 应用程序的开发人员带来了切实的益处。其中最著名的可能要算是作为 .NET Compact Framework 扩展的 OpenNETCF 项目。OpenNETCF 项目现提供下载。
Microsoft 直接发起了若干源码项目,例如蓝牙项目。该项目通过提供托管代码类来简化蓝牙技术在基于 Windows CE 的应用程序中的使用。另一个项目是网络摄像头驱动程序。在当时,还没有任何公开的网络摄像头驱动程序,这一项目引发了针对网络摄像头的设计。Microsoft 发起的第三个项目是数字视频录像机 (DVR) 项目,旨在为创造 Windows CE 驱动的视频录像机提供支持。


结束语
Windows CE 开发领域正在日臻完善。无论您感兴趣的是应用程序开发和 Windows Mobile 驱动设备、设备驱动程序开发还是低级别 BSP 编程,您都会不断发现能使开发过程更加便捷高效的创新。新内核消除了在可用进程数和进程地址空间方面恼人的限制。与 Visual Studio 集成使已经融入 Visual Studio 2005 中的所有效率增强功能得以淋漓尽致地发挥作用。
如果您以前就喜欢 Windows CE,那么您还会继续喜欢下去。如果您不熟悉 Windows CE 环境,现在可能已经猜到它有许多潜能等待您去挖掘。如果要参见有关可能性的讨论,请访问 Windows 嵌入式开发人员兴趣组。


Paul Yao 是数据安全公司 Utimaco Safeware 的业务联盟经理。Paul 也是 MSDN 杂志的特约编辑并与他人合著了八本书籍,其中包括已经出版的第一本有关 Windows 编程的书籍。Paul 是 Windows Embedded Developers Interest Group (WE-DIG) 及 Paul Yao 公司的创始人。

出0入0汤圆

发表于 2010-1-9 21:16:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-31 10:30:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-22 10:30:59 | 显示全部楼层
回复【3楼】FlashNuk  
-----------------------------------------------------------------------

好哇

出0入0汤圆

发表于 2011-4-5 15:25:05 | 显示全部楼层
我现在才知道Windows mobile是WINCE的子集
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 06:04

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表