×
嵌入式 > 嵌入式开发 > 详情

微软嵌入式操作系统的分析和对比

发布时间:2020-05-18 发布时间:
|

      摘要: 文章介绍了微软的操作系统">嵌入式操作系统产品线,分析了WinCE 6.0和.NET Micro framework技术特点。根据嵌入式系统的要求,还比较了微软和嵌入式Linux、 VxWorkss的差异和各自特色。

  关键词: 操作系统">嵌入式操作系统;WinCE;Windows Mobile;单片机;.NET Micro framework

  引言

  在操作系统">嵌入式操作系统领域,微软的Windows Mobile正在智能手机市场快速增长,“2007 Windows 硬件工程大会”及“2007 移动与嵌入式开发者大会”的资料显示,全球55个国家的110个运营商采用Windows Mobile,近50家设备制造商生产了100多款Windows Mobile手机和便携式设备。微软的其他嵌入式软件发展也非常快,51%的零售商考虑使用基于Windows Embedded的POS (销售点)系统,2005年有60%的瘦客户端运行着WinCE。微软最新发表的面向单片机的.NET Micro Framework在2006发布后,今年3月在美国的ESC(嵌入式系统大会)又发表了一个扩展版本。由此可见,微软的操作系统">嵌入式操作系统正在成为商业操作系统">嵌入式操作系统的重要选择。

  但是比较起不少已经有20多年历史的老牌操作系统">嵌入式操作系统公司,微软还是一个新兵,整个产品线还在发展和丰富之中。

  微软嵌入式产品发展历史

  在探讨微软的操作系统">嵌入式操作系统技术细节之前,让我们先了解一下其名称、相互关系和发展历史。微软从96年发表WinCE第一个版本,到目前为止,可以看到有两个主要操作系统">嵌入式操作系统品牌。其一是针对移动终端的操作系统Windows Mobile,在5.0 版本之前,Windows Mobile分为针对智能手机的版本Windows Mobile for SmartPhone,针对PDA 手机的版本Windows Mobile for Pocket PC Phone,针对PDA 的版本Windows Mobile for Pocket PC。

  其二是微软的操作系统">嵌入式操作系统平台Windows Embedded ,这个平台目前包括微软核心的嵌入式实时操作系统-Windows CE(简称WinCE), 它可以支持各种便携设备和广泛的嵌入式应用。嵌入式XP—Windows Embedded XP(简称XPE),是模块化的XP版本,支持各种嵌入式应用。嵌入式POS系统-Windows Embedded for POS(简称WEPOS),一个专门为零售终端定制的嵌入式XP版本。

  微软这些操作系统">嵌入式操作系统里面实际上只有两个内核,一个是WinCE 内核,包括Windows Mobile也是使用这个内核,目前Windows Mobile 5.0 和6.0版本使用的都是WinCE 5.x 版本的内核。该版本2004年推出,是目前广泛使用的一个产品。WinCE 目前的最新版本是6.0,2006年底正式发布。另外一个内核是XPE和WEPOS 使用的Windows XP的核心。

  由此可见微软在嵌入式系统的策略,即WinCE 和Windows Mobile 是具有硬实时的嵌入式操系统,目标是移动和通用的嵌入式设备,如手机、导航、PMP、机顶盒、工业控制设备和医疗仪器等。Windows Embedded XP 是一个非实时的可以嵌入的操作系统,目标是瘦客户机、零售机器、工厂生产线控制和技术外设存储和显示设备。另外,微软最新推出的.NET Micro Framework是针对微型设备和单片机市场的一个新产品,它补偿WinCE不能支持的更小型的嵌入式应用。[page]

  微软嵌入式平台核心-WinCE 技术特色

  WinCE 是一款典型的操作系统">嵌入式操作系统,具有层次化和模块化的体系结构。WinCE分为硬件、OEM(委托制造)、操作系统和应用软件四个清晰的层次,硬件层即WinCE 可以支持不同的微处理器和外设,如x86、ARM、XScale 等,OEM层是指引导程序(boot loader)、设备驱动等,操作系统层是内核模块、图形模块、文件和存储模块、设备管理和加载系统的服务模块组成,应用软件层是WinCE自身的应用软件,如MS Office、Media Player、IE和第三方应用软件。应用软件层和操作系统层有一个Win32 本地API和基于.Net Compact Framework的被管理代码。

  WinCE内核

  WinCE 是微内核操作系统,这是目前操作系统">嵌入式操作系统都在使用的先进的内核技术,例如,VxWorks、QNX和最新的L4内核都实现了微内核技术。微内核是指在内核里面只实现一些基本服务,如进程调度、进程间通信和中断处理等,其他的服务和功能都放在内核外。显然,微内核的好处是易于移植到不同的处理器和硬件平台,内核外的服务如设备驱动和文件管理模块是运行在不同的地址空间,这样相较于整个系统都是平板结构的实时内核(如uc/os-II、nucleus、threadx)要更加安全和可靠。微内核的核心也非常小巧,一般几K~几十K字节。当然事物永远是辨正的两个方面,微内核系统因为要经常在内核态和用户态之间转换,所以系统的某些性能和实时响应能力可能要比平板结构的实时内核要低(不同的性能指标取决于不同的微内核系统的设计)。

  同Windows一样,WinCE每个运行程序都是一个进程,WinCE 5.0 版本支持32个进程,每个进程有32M的虚拟地址空间,WinCE 6.0 则可以支持3.2万个进程,每个进程有2G的虚拟地址空间。WinCE 是一个基于抢占的多线程操作系统。在线程这一级,WinCE 可以实现类似操作系统">嵌入式操作系统任务的调度、通讯、同步功能。为了支持可以抢占的硬实时调度,WinCE 已经实现了优先级反转机制(priority inversion)。

  6.0版本的WinCE内核相较以前的5.0有了很大的改进,重要的一点就是把一部分关键文件、图形管理和驱动程序放到内核里面,好处是减少了模块在用户态和内核态切换的开销,还减少了应用程序访问这些模块调用的开销。WinCE 6.0的内核结构见图1。

图1 WinCE 6.0的内核结构[page]

  WinCE 的BSP

  操作系统">嵌入式操作系统是运行在不同的微处理器上,如手机和移动设备大量使用的ARM体系结构的CPU,市场上有三星ARM2410/2430、TI OMAP730/1710/2430和Marvel XScale体系的PXA270等,除此之外,还有数字电视、IP机顶盒系统使用的MIPS体系结构,如东芝、博通、IDT等公司的芯片。当然,x86在各种通用嵌入式系统方面也有大量的应用。

  微软的操作系统">嵌入式操作系统也是使用BSP(Board Support Package)的概念支持各种CPU和硬件平台的移植工作,在WinCE 5.0里已经有包括三星2410、Marvel PXA270等许多流行的BSP,微软的OEM厂商如研华、飞思卡尔、NXP等也提供他们移植的OEM BSP。WinCE 6.0将会在CE5.0支持ARM V4基础上支持ARM V6,包括三星、飞思卡尔的ARM11核的SoC都将得到支持。在x86方面,微软依托在桌面系统的强势,得到了众多IPC(工业PC)和EPC(嵌入式PC)厂家的拥戴和支持。

  在BSP结构方面,新的WinCE6.0的内核和OAL是完全独立的两个模块,好处是在修改BSP后,内核不需要重新构建了,减少了多次构建、测试和发布内核的过程,提高了系统的可靠性。这种结构还可以让微软发布针对OEM的内核,而OEM可以因为自身知识产权的考虑,以二进制方式向最终用户发布BSP(如图2)。WinCE自身包含OEM BSP 定制和发布工具,这样OEM可以很方便地发行自己的BSP SDK包。

图2 内核和BSP的结构

      WinCE 的设备驱动程序

  设备驱动程序是嵌入式操作系统中一个重要部分,它是外设和应用软件的接口,追随了微软的一贯风格。

       WinCE的设备驱动程序规范和丰富,需要特别指出的是,WinCE 5.0所有的驱动程序全部是采用动态加载方式,即在操作系统内核启动以后对硬件外设(如USB、LCD) 加载,驱动程序依然运行在内核空间。简单来讲,这种驱动程序是在用户态和我们熟悉的Windows 系统的DLL方式没有区别,其好处是程序员调试一个驱动的时候会很方便,和应用程序的调试没有差异,可以使用正常的函数调用,把驱动的动作和数据显示在屏幕上;再有,相对用户自己开发的驱动程序,可能有不稳定和可靠的地方,运行在用户态,整个系统将会更稳定些。

  但是问题和缺陷也显而易见,就是因为驱动的动态加载和内核的切换代表性能的损失,对于桌面系统这可能没有太大的影响,但是在嵌入式系统,用户对实时性能的要求要严格得多。为了解决这个问题,在新的WinCE6.0里面的驱动程序将分为内核模式和用户模式两种,内核模式侧重效率,用户模式侧重稳健和可靠。微软力求保证驱动程序的主体结构没有大的变化,微软资料显示大约有几天的时间可以完成一个一般规模的驱动的移植过程,微软公司和微软的增值代理都提供了相应的课程。[page]

  WinCE开发工具

  微软工具新的策略是使用一个标准的Visual Studio 2005平台支持全部的微软嵌入式操作系统系列的开发,历史上支持过WinCE和Windows Mobile 开发的工具有:

  *操作系统开发-Platform Builder,它的作用是构建操作系统,设有配置和调试工具,CE6.0以后这个工具就不单独存在,而是合并到Visual Studio 作为它的一个插件。

  *应用程序开发-eMbedded Visual C++,支持本地应用程序开发C, C++, MFC(微软基础类), ATL(COM的目标和Active X 控制),这个工具在CE5.0版本以后已经合并到Visual Studio 2005里面。

  *Visual Studio 2005-微软全新的开发工具已经包含了Platform Builder, 值得特别提到的是Visual Studio 2005支持微软托管的应用代码编写和调试,即.NET Compact Framework,它是NET Framework专门针对WinCE优化后的一个简化版本。在嵌入式设备上可以大幅提高软件开发生产力,对于软件越来越成为嵌入式设备的主要成本之一将会起到积极的作用,是一次编程多次使用的软件重用理想的实现。Visual Studio 2005为了方便嵌入式系统应用软件开发而设计的支持不同硬件平台的“软仿真器”也给用户留下很深的印象。

图3 基于NET Compact Framework的汽车外接显示装置

  面向微型设备的.Net Micro Framework

  前面提到的.NET Compact Framework虽好,但因为依托WinCE平台要求的硬件资源比较大,微软的 .NET Micro Framework 是微软面向嵌入式系统中微型设备和单片机(MCU)市场的一个新的产品,是WinCE, Windows Mobile和Windows XP Embedded 在嵌入式市场的一个补充。.NET Micro Framework应用可能是小型工业网关、家庭能源管理装置、遥控器,也可以是Windows Vista PC 的sideshow(枝节)设备,如笔记本电脑的副屏(可以播放MP3、显示日历、行程等)等,如图3所示。微软.NET Micro Framework 目前支持基于32位微处理器ARM7和9的硬件平台,已经移植好的参考硬件平台有飞思卡尔iMXS、DIGi Connet ME和EmbeddedFusion。

  .NET Micro Framework 把通用的I/O设备,如UI、GPIO、SPI、Comm等做好一个类库(见图4),其他和应用相关的硬件设备由合作伙伴(如DIGi)完成,值得注意的是,.NET Micro Framework还可以运行在一个小RTOS(实时操作系统)上,如DIGI平台运行的是Threadx RTOS, 微软认证的合作伙伴使用微软提供的porting kit把这些设备类库移植好,这样使得嵌入式工程师能在不了解单片机硬件的前提下开发单片机的应用。.NET Micro Framework 里面有一个重要的部件叫CLR—可以理解为是个运行代理,它的作用是个实时的编译器,负责执行被用户提交的管理代码,CLR还负责内存和线程管理,如图4所示类库以上的应用层都是被管理代码(managed code),下面还是C/C++本地代码(native code),这样整个.NET Micro Framework代码非常的小,大约是250~500K。(WinCE 大约是1~12M左右)。需要指出的是,.NET Compact Framework不是一个传统意义的实时多线程操作系统,但是它可以支持多线程的操作,可以满足一定范围上实时要求,如通过设置UI是主线程满足一定的显示面板输入响应的要求,通过看门狗定时器和中断方式满足和实时设备接口数据通讯的要求。.NET Compact Framework的编程方式更接近微软的桌面图形编程界面,如,同样使用delegate、callback处理外部事件。[page]
 

      .NET Micro Framework的SDK是开放给所有用户的,但是要得到porting kit需要得到微软的认证。信息产业部集成电路和软件促进中心(CSIP)是微软授权的.NET Micro Framework在中国的技术培训和合作伙伴。

  .NET Micro Framework面向的是一个对于微软来讲全新的市场,可以说这种开发方式是对这个市场久已习惯的嵌入式软件开发方式的一次革命性的改变,从技术发展趋势看,无疑是一个正确的方向。在最近的技术大会上,微软.NET Micro Framework产品经理和主要设计者Colin Miller非常有信心的给大家分享了微软.NET Micro Framework下个版本开发计划,比如支持TCP/IP、USB、 BT/ZIGBEE、CAN总线和文件系统等等。但是应该看到,由于嵌入式系统的特殊性和多样性,微软目前支持的平台还比较少,合作伙伴的设计和应用还待成熟和完善,.NET Micro Framework在国内的发展还需要一定的时间。

图4 .NET Micro Framework的结构图

  微软产品和其他RTOS比较

  嵌入式系统毕竟不是桌面系统,用户需求的差异和环境差异很大,平台的变化也多,用户的选择余地就大。为了方便用户比较和选择一个合适的嵌入式操作系统,微软官方网站上提供了第三方的评测报告供用户阅读和分析;国内外基于微软的嵌入式成熟应用也可以供参考;微软中国的市场和教育普及工作也对用户了解微软嵌入式操作系统大有帮助。下面仅对目前国内嵌入式系统比较流行的嵌入Linux 和VxWorks 进行分析,比较他们和微软嵌入式操作系统的差异和各自特色。[page]

  嵌入式Linux

  最近结束的LinuxWorld China 2007 大会上,Linux基金会执行总监Jim Zemlin展望未来时再次强调,嵌入式和移动应用是除标准、虚拟计算和桌面外的一个重要的发展领域。比较微软和其他的嵌入式操作系统,Linux和嵌入式Linux(经过嵌入式优化的Linux商业和非商业版本)的优势在于:1,开放性,Linux100%源代码公开;2,广泛性和成功的开发模式,全球化的社区开发和维护方式已经被验证是一种高效率和成功的软件开发模式;3,各种CPU和最新的硬件器件和系统的支持;4,丰富的开源资源和第三方应用软件。

  Linux的缺点是,第一,实时性。Linux本身并不是为嵌入式系统而设计的,从操作系统系统结构设计偏重于可靠性和网络的效率,虽然商业嵌入式Linux公司如MontaVista 在2.4内核上实现了可抢占的实时调度,开源社区也有了2.6 RT补丁,但是比较WinCE 和VxWorks 实时性都略逊一筹,来自南京大学的文章中有一个可以参考数据表格,见表1。


      第二,开发工具。Linux的开发工具一直是一个软肋,从开源社区分工讲。内核和工具链是两个完全独立的部分,内核的开发和维护人员主要依赖于命令行工具。可喜的是,开源的Eclipse框架已经成为包括嵌入式Linux 在内的传统嵌入式操作系统的集成开发环境(IDE),基于Eclipse的商业嵌入式软件如DevRocket、Workbench和Linuxscope也正在成熟。但是相对微软的Visual Studio 2005,应该说中国的用户更加熟悉微软的开发工具。

  第三,完整应用软件方案,嵌入式系统要求的是有针对性的应用软件方案,嵌入式Linux虽然已经有完整的操作系统组件,但是缺少针对具体应用的软件方案,举个智能手机的例子,微软的 Windows Mobile for SmartPhone基本含有了手机硬件驱动(BSP)、内核、TCP/IP、文件系统基本组件、手机软件和多媒体办公软件等丰富的应用软件,这些基本涵盖了整个智能手机所需要的全部软件。但是相比较而言,嵌入式Linux的方案就显得单薄多,虽然借助于包括Trolltech(奇趣) 的qtopia在内的手机应用软件或者Access 的整套手机Linux软件方案,Linux手机软件仍缺少完整性和成熟性,这点对于包括中国手机企业在内的2~3线的手机制造和设计公司带来一定的压力。

  第四,商业化产品和服务。比较微软,Linux和嵌入式Linux的商业公司规模小而且没有标准化,虽然社区具有丰富的开发和创意的资源,但是社区没有义务提供商业的服务和承诺。[page]

  风河的VxWorks

  VxWorks是传统嵌入式操作系统中的佼佼者,特别是在通信、国防和工业控制领域具有较强的优势。VxWorks是基于微内核技术的实时内核,从设计和实际的使用情况看,完全可以满足硬实时性的要求,这点较Linux有较强的优势。相较于WinCE,VxWorks的实时性要更好一点,设备管理和驱动要简练和高效些。VxWorks6.1的版本之后还提供基于MMU内存保护和错误管理的机制(目前CE和.NET MicroFramework 还不支持),使系统的可靠性更有保证。VxWorks系统的配置灵活,代码尺寸相较于WinCE和Linux要小得多,基本系统甚至比.NET Micro Framework还要小,这样适合更低配置和成本要求的嵌入式设备。

  VxWorks的网络功能强大,风河公司和第三方都有大量的网络协议和应用软件支撑,VxWorks的API 是POSIX 兼容,这样通信行业的标准代码就很容易移植进来了(Linux 有相同的特点),这可以说是WinCE的一个弱点。

  但是,VxWorks 在消费电子和手持移动设备方面应用比较微软操作系统甚至Linux都相对少得多,从技术和商业层面看,笔者认为主要是这样几个原因:1,VxWorks是从内核发展成为一个比较完整的嵌入式OS,但是API和图形系统并不是十分标准和流行,单靠VxWorks自己的产品和松散的第三方资源还很难形成完整和公认的消费电子中间件。2,VxWorks早期是采用开发授权加上版税的方式收取费用,这种方式不能为强调成本控制的OEM/ODM(委托制造/委托设计)厂商所接受,比如在过去的5年里,中国台湾OEM/ODM生产的家用无线网络产品多数都转到Linux平台,手机和GPS转到上市比较快的WinCE和Window Mobile平台。OEM/ODM不能接受为售价只有15~25美元的无线路由器再支付哪怕是1美元(甚至更少)的版税了。

  当然,风河公司已经充分意识到这个问题,并在过去几年改变了商业模式,比如以收取年费的方式取代版税模式,同时风河正式采用双OS的策略,进军嵌入式Linux 市场,推出风河通信和消费电子用Linux 平台,以期和微软抗衡,这是因为它的实质也是一个基于开源的嵌入式Linux版本。[page]

  结语

  从前面的分析我们不难看出,微软嵌入式操作系统产品线完整,开发工具成熟,产品的市场定位明确,可以为OEM/ODM提供从操作系统到应用的全面解决方案和到后台服务器的无缝连接方案。面对强手如林、需求独特的嵌入式世界,微软面临的挑战和困难要比其他领域大得多。中国是世界消费电子产品的生产和消费大国,手机、GPS、多媒体移动终端、电视、机顶盒这些嵌入式装置都是微软嵌入式操作系统的重要目标市场。最近,“2007 Windows 硬件工程大会”及“2007 移动与嵌入式开发者大会”和.NET Micro Framework大会在北京召开,说明了微软对中国嵌入式市场的重视,以及中国用户对微软嵌入式操作系统的关注。微软的嵌入式操作系统将为绚丽多彩的嵌入式世界增添一朵奇葩。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430单片机硬件知识-复位