ByToradex Roman Schnarwiler
在 1996 年,微软引入了 Windows CE 这个产品,主要用于 Palm-PC/PDA。从今天来看,当时支持的功能是相当简单。甚至不支持 VGA 分辨率输出,无彩色显示,整个屏幕只被一个应用占据。这听起来像是非常古老的东西。当然,关于全屏单应用,一些大公司这些年来在改变这一点(iOS),另外一些公司则重新采用了这个方法。这个是文章的题外话。
从那时起,Windows CE 经历了许多变化。诸如实时调度器、.NET 等功能已经得到支持,以及越来越多的并行处理,当然,操作系统的名字也发生了变化。最初其称为 Windows CE(WinCE),然后是 Windows Embedded CE(仍旧为 WinCE),直到现在的 Windows Embedded Compact(WEC)。我将会使用 WinCE 代称所有的版本,当具体指某一个版本时,将会使用相应的名字。
WinCE5.0 带有出色的内核和调度器,提供实时处理和许多来 Windows PC 的很好的功能。当然,这也存在一些限制,比如最多同时支持 32 个进程,最高 32MB 内存等。然而,在曾经的一段时间内,这些限制都不是问题。有时候我们怀念过去的那些时光,特别是当我仅仅想要安装一个简单的打印机驱动时,却不得不下载超过 100MB 的安装文件。
韬睿基于 Marvell PXA SoC 的计算机模块仍旧支持 WinCE 5.0,我们还甚至提供积极的技术支持,包括维护更新等。这依旧是一个十分优秀和稳定的操作系统,能够满足众多需求。
随着应用快速发展,WinCE 5.0 的限制必须得以克服。Windows Embedded CE6.0 就应运而生。微软大幅提高了每个处理器支持的内存上限和运行的进程数量。即使内核发生了大量的变化,微软发布的新的操作系统,仍然能够针对前代系统提供很好的兼容性。这对应用和驱动的移植颇有帮助。当然,这其中依旧存在一些限制,最明显的一个就是缺少对多核构架的支持。
我们很多的模块都能够支持 WinCE 6.0 ,例如 Colibri Vybrid(VF50 和 VF61, 两者都是单核 Cortex-A SoC),Colibri/ApalisTegra 模块,当然还有 Colibri PXA 模块。这意味着韬睿仍然在积极地开发这操作系统,并没有停止的计划。
因为在多核的芯片上使用单核操作系统,这并没有多少意义,那么我们就需要一个新的操作系统。Windows Embedded Compact 7 则填补了这个需求。这个系统还有其他方面的改善,例如支持 3GB 物理内存、OpenGL ES 2.0、NDIS 6.1等。绝大多数 WinCE 5 和 6 平台上的应用和驱动都可以直接运行,但是它们只运行在一个核上面,并没有发挥多核系统的优势。那么,这个时候还有什么限制呢?大容量的 RAM 和多核都已经得到支持,剩下什么呢?
WEC7无疑是韬睿支持的 WinCE 版本之一。我们提供针对所有模块的 BSP,包括十分成功的基于 Freescale i.MX 6 的 Colibri/Apalisi.MX6模块。我们没有针对 PXA 模块提供 WEC7,因为这些模块并不能从 WEC7 有太多受益。
回到正题,WEC7 之后又会是什么?到目前为止,我们还没有讨论 ARM 构架。到 WEC7 为止, 内核和应用都是使用 ARMv4I 或者 ARMv7 指令。对于 Windows Embedded Compact2013, 微软采用了 Visual Studio 中支持 ARMv7T2 (thumb-2) 代码生成的最新编译器。这种代码主要包含 16位指令,从而降低了应用的大小,更重要的是,由于每条指令获取的代码变少,指令获取的速度也相应地提高。WEC2013 还带有不少其他的改善,例如提升网络协议处理速度、.NET 3.9 多核支持,最重要的一个更新或许是,开发环境更新至 Visual Studio 2012/2013。
在技术许可的情况下,我们为所有的模块提供 WEC2013 BSP。有些条件必须满足,如 ARMv7 架构和 32位浮点单元。如果支持 NEON,那么浮点计算将不成问题。所以在Tegra T30、 i.MX6 和Vybrid 产品上我们支持 WEC2013。
那么现在剩下一个大的问题,目前选作 WinCE 还是否合理?回答是肯定的。如果你在寻找一个功能丰富的实时操作系统,同时想要简单易用的应用开发和调试环境,WinCE 是正确的选择。但是应该选择哪一个版本呢?如果你向市场部同时询问,他将会说最新最棒的那个。当然,这可以作为一个选择,但通常并不是那么简单。我就这一点尝试做些总结,针对韬睿支持的各个 WinCE 版本提供一些选择的理由,这或许能够帮助您做选择。