Blog:
Windows CE / Windows Embedded Compact 是您新项目的合适选择?是哪一个版本呢?

2015年8月3日星期一
Windows

Windows在 1996 年,微软引入了 Windows CE 这个产品,主要用于 Palm-PC/PDA。从今天来看,当时支持的功能是相当简单。甚至不支持 VGA 分辨率输出,无彩色显示,整个屏幕只被一个应用占据。这听起来像是非常古老的东西。当然,关于全屏单应用,一些大公司这些年来在改变这一点(iOS),另外一些公司则重新采用了这个方法。这个是文章的题外话。

从那时起,Windows CE 经历了许多变化。诸如实时调度器、.NET 等功能已经得到支持,以及越来越多的并行处理,当然,操作系统的名字也发生了变化。最初其称为 Windows CE(WinCE),然后是 Windows Embedded CE(仍旧为 WinCE),直到现在的 Windows Embedded Compact(WEC)。我将会使用 WinCE 代称所有的版本,当具体指某一个版本时,将会使用相应的名字。

WinCE 5.0 带有出色的内核和调度器,提供实时处理和许多来自 Windows PC 的很好的功能。当然,这也存在一些限制,比如最多同时支持 32 个进程,最高 32MB 内存等。然而,在曾经的一段时间内,这些限制都不是问题。有时候我会怀念过去的那些时光,特别是当我仅仅想要安装一个简单的打印机驱动时,却不得不下载超过 100MB 的安装文件。

WinCE 5.0 带有出色的内核和调度器,提供实时处理和许多来 Windows PC 的很好的功能。当然,这也存在一些限制,比如最多同时支持 32 个进程,最高 32MB 内存等。然而,在曾经的一段时间内,这些限制都不是问题。有时候我们怀念过去的那些时光,特别是当我仅仅想要安装一个简单的打印机驱动时,却不得不下载超过 100MB 的安装文件。

韬睿基于 Marvell PXA SoC 的计算机模块仍旧支持 WinCE 5.0,我们还甚至提供积极的技术支持,包括维护更新等。这依旧是一个十分优秀和稳定的操作系统,能够满足众多需求。

随着应用快速发展,WinCE 5.0 的限制必须得以克服。Windows Embedded CE 6.0 就应运而生。微软大幅提高了每个处理器支持的内存上限和运行的进程数量。即使内核发生了大量的变化,微软发布的新的操作系统,仍然能够针对前代系统提供很好的兼容性。这对应用和驱动的移植颇有帮助。当然,这其中依旧存在一些限制,最明显的一个就是缺少对多核构架的支持。

我们很多的模块都能够支持 WinCE 6.0 ,例如 Colibri Vybrid (VF50 和 VF61, 两者都是单核 Cortex-A SoC),Colibri 和 Apalis Tegra 模块,当然还有 Colibri PXA 模块。这意味着韬睿仍然在积极地开发这操作系统,并没有停止的计划。

因为在多核的芯片上使用单核操作系统,这并没有多少意义,那么我们就需要一个新的操作系统。Windows Embedded Compact 7 则填补了一个需求。这个系统还有其他方面的改善,例如支持 3GB 物理内存、OpenGL ES 2.0、NDIS 6.1等。绝大多数 WinCE 5 和 6 平台上的应用和驱动都可以直接运行,但是它们只运行在一个核上面,并没有发挥多核系统的优势。那么,这个时候还有什么限制呢?大容量的 RAM 和多核都已经得到支持,剩下什么呢?

WEC7 无疑是韬睿支持的 WinCE 版本之一。我们提供针对所有模块的 BSP,包括十分成功的基于 NXP®/Freescale i.MX 6 的 Colibri 和 Apalis 模块。我们没有针对 PXA 模块提供 WEC7,因为这些模块并不能从 WEC7 有太多受益。

回到正题,WEC7 之后又会是什么?到目前为止,我们还没有讨论 Arm 构架。到 WEC7 为止, 内核和应用都是使用 Armv4I 或者 Armv7 指令。对于 Windows Embedded Compact 2013,微软采用了 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 版本提供一些选择的理由,这或许能够帮助您做选择。

  • Windows CE 5 (Visual Studio 2008)
    这固然是一个很好的操作系统,但是在这个系统开始应用开发,却并没有多少意义,很有可能您会选择一个较新的硬件平台,但是不支持 WinCE 5 BSP。
  • Windows Embedded CE 6 (VS2008)
    是的,为什么不呢。如果你的硬件平台只为操作系统提供一个核,WinCE 6 或许是很好的选择。它支持 .NET 3.5。相对于更新的 WinCE 版本,这是一个更加经济的解决方案,因为韬睿提供的 WinCE 6 授权已经包含在 Colibri Vybrid 模块的售价中。如果使用新的 WinCE 版本,需要您购买另外的授权。我要提的另一点是,小内存有利于低成本产品,例如我们的 Vybrid 产品。
  • Windows Embedded Compact 7 (VS2008)
    如果你有一些原来的代码或者驱动需要在 WinCE 上运行,同时又想利用多核系统,那么您应该选择 WEC7。它同样允许您编译针对 Armv7 的应用,这可以略微提高性能。WEC7 在市场中已经存在数年,是一个十分稳定的操作系统。
  • Windows Embedded Compact 2013 (VS2012/VS2013)
    有两个主要的理由选择该操作系统。一个是 VS2012 / VS2013 开发环境。大多数公司已经在使用这两个系统。第二个重要的理由是,.NET 3.9 framework的多核支持。

不选择 WEC2013 的一个原因是,与之前系统的二进制应用和驱动的不兼容。如果你必须要在老的 WinCE 系统上运行二进制程序,那么您就不能选择 WEC2013。

如果您仍旧不确定针对我们的产品 WinCE 是否是正确的选择,或者应该选择哪一个版本的 WinCE,我们很乐意帮助您 support@toradex.com

作者: Roman Schnarwiler, CTO, Toradex AG

2 comments

Rose Philanthropist - 8 years 3 months | Reply

We were also debating between Linux with RT patch, vs WCE7. There are a lot of tools available for Linux but there is a lot of complexity in building the OS. We were trying to use Yocto to build our OS and that has a steep learning curve. We decide to go with WCE7, it has been relatively easy so far. We used Platform builder. We also found tools for monitoring our WCE devices such as Remote Task Monitor (http://www.remotetaskmonitor.com). Whereas for Linux we have "top" command to monitor processes, the Remote Task Monitor for WCE let us monitor processes remotely and we didn't need to be physically with the device. We also found Microsoft support pretty decent, although we didn't need it much. One time we had to ask them to update the socket driver for us.

Shella - 9 years 1 month | Reply

Nice explanation Mr. Roman. :)
But what you say for the life-cycle of the WinCE OS from a beginner's point of view. Don't you think its use and support is depreciated?

If suppose my product will come in market after 3-4 years then what should be the right choice of the OS, WinCE or Linux?

Hope to hear from you back.
Thanks.

Roman Schnarwiler - 9 years 1 month | Reply

Hello Shella,

We can definitely recommend Windows Embedded Compact also for new designs. As mentioned, WEC2013 might be the right choice for a complete new start because of the most recent development environment (Visual Studio 2013).
Microsoft uses WEC2013 as their realtime operating system with long term support availability. So yes, as a beginner with no experience it will be quite easy to write applications under WEC2013 and even if you would like to go into the market a few years from now it will still be supported.
Of course we can't say how the situation looks in 10 years, however, we will monitor it and keep advising our customers.
All in all, long term support shouldn't be the concern for your decision, you can focus on the other, more technical pros and cons of each operating system.

Do reach out in case of further queries. Thanks.

评论

Please login to leave a comment!
Have a Question?