引言
在嵌入式操作系统领域,微软的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不能支持的更小型的嵌入式应用。
微软嵌入式平台核心-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的内核结构
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的结构