2月12日,微软发布了.NET家族中的新成员——.NET Micro Framework(简称.NET MF)。而就在短短的几天之内,这款新品已经收到业界的广泛关注。
.NET MF面向的是CPU处理能力和存储能力极其有限的设备。虽然微软拥有Windows CE、Windows XP Embedded和.NET Compact Framework,可以完成绝大多数嵌入式开发,但对于更普遍的家用电器领域(如电视、手表、洗衣机等),这些平台还是显得太大了些。可以想象,给你的电冰箱装块硬盘是多么搞笑的事。而.NET MF的出现,则标志着微软又向百姓生活迈进了一步,让所有家电都“智能”起来,已经是一个不远的梦。因为
所需要的
仅
仅是
便宜的,ARM处理器
和
一些
RAM、Flash存储器。
够了。Anders Liu是搞技术的,至少目前还是,作评论和展望不是Anders的强项。目前很多关于.NET MF的介绍都是面向业界的新闻、评书性的,而本文中Anders Liu将从技术人员的角度上,对.NET MF进行简要介绍。本文主要介绍的是.NET MF的技术特性,暂时还不包含开发技术。因为Anders也是刚刚接触这个东西不久。
.NET MF是微软最新推出的嵌入式平台、专门用于处理能力和存储能力都更加有限的设备。既然微软已经拥有.NET Compact Framework(简称.NET CF),为什么还要再提供.NET MF呢?设备的限制是一个很重要的原因,.NET CF毕竟还是要求设备有比较强的处理和存储能力。两者重要的一个区别在于,.NET CF需要有Windows CE系列OS的支持才能得以运作,而.NET MF则提供了一个可引导的运行时环境。
在.NET MF中,操作系统倒成了可选的组成部分。在本文后面内容中,Anders Liu还会提及这一点。
既然.NET MF是可引导的,那么它实际上也相当于一个带有运行时环境的操作系统。那么,它又和Windows CE、Windows XP Embedded操作系统有哪些区别呢?下面的表格对比了几种平台的区别。
|
.NET Micro Framework |
Windows CE |
Windows XPe |
Example Devices |
Sensor Nodes, Aux displays, Health Monitoring, Remote Controls, Robotics |
GPS Handhelds, PDAs, Automotive, Set Top Boxes |
Thin Clients, ATMs, Kiosks |
Device Features |
Connected, Small, Wearable, Graphical UI |
Connected, Graphical UI, Server, Browser, RAS, DirectX |
PCclass performance, PC networking |
Footprint |
250-500KB managed code Full featured |
300KB+ without managed code 12MB with managed code |
40MB + Depending on features |
Power |
Very low power |
Low power |
Mains power |
CPU |
ARM7, ARM9, No MMU |
X86, MIPS, SH4, ARM, with MMU |
X86 |
Real-time |
Not Real-time |
Hard Real-time |
Real-time capable through 3rd party extensions |
Managed vs. Native Code |
Managed via .NET Micro Framework, native code through interop only. |
Supports both, managed code requires .NET Compact Framework |
Supports both, managed code requires .NET Framework |
表 1 各种嵌入式平台对比
(资料来源:http://msdn2.microsoft.com/en-us/embedded/bb278106.aspx)
从上表可以看出,无论是资源占用还是耗电,.NET MF都要优于另外两种OS。但是,我们也看到了,在实时性方面,.NET MF并不是一款实时的运行时环境。这可能需要我们注意的一个重要方面。
在工业应用中,实时性往往是评判一个嵌入式系统的重要因素,这就意味着,.NET MF并不适用于重要的控制领域。不过,一般工业用系统都不会面临硬件过分有限的困境,完全可以使用WinCE或XPe作为基础OS。
反观民用领域,嵌入式应用正在逐渐渗透人们的生活。而当面对普通消费者时,评判一个嵌入式系统的重要标准——AndersLiu认为——就应该是:低成本。这包括两个方面,一是低的造价(软硬件成本,价格),另外一方面就是易用(这可以理解为学习成本和时间成本)。毕竟老百姓买不起和机床一样价格的洗衣机,也不希望像操作机床那样操作微波炉。
因此,民用嵌入式设备往往通过较低的硬件配置来降低价格,并通过适量(通常比较少)的按键和显示内容来降低使用复杂度。而这一切,都是.NET MF得以大显身手的地方。
可以看出,微软关于.NET MF的定位还是相当明确的——面向民用低成本嵌入式市场。下图是一两年前流行过一阵的新闻图片,传闻Gates腕上的SmartWatch中安装的,就是.NET MF的原型。
<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="Picture_x0020_0" style="VISIBILITY: visible; WIDTH: 135pt; HEIGHT: 193.5pt; mso-wrap-style: square" o:spid="_x0000_i1026" type="#_x0000_t75" alt="01-08gates-ces-sm.jpg"><imagedata src="file:///C:%5CUsers%5CANDERS~1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image001.jpg" o:title="01-08gates-ces-sm"></imagedata></shape>
图 1 Bill Gates和Smart Watch
(资料来源:http://www.microsoft.com/presspass/press/2003/jan03/01-08ces2003overallpr.mspx)
下图给出了.NET MF的技术架构。相较于.NET Framework,.NET MF多出了CLR之下的PAL(平台适配层,Platform Adaptation Layer)和HAL(硬件适配层,Hardware Adaptation Layer,这两层使得.NET MF可以直接运行在硬件上,并提供基本的Timer、IO和内存管理等功能。而HAL也可以通过OS代替,在硬件资源相对充裕的情况下,这可以降低.NET MF的设计复杂度,并提供更多功能。
<shape id="Picture_x0020_1" style="VISIBILITY: visible; WIDTH: 415.5pt; HEIGHT: 311.25pt; mso-wrap-style: square" o:spid="_x0000_i1025" type="#_x0000_t75" alt="1.jpg"><imagedata src="file:///C:%5CUsers%5CANDERS~1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image002.jpg" o:title="1"><font size="3"></font></imagedata></shape>
图 2 .NET MF技术架构
(资料来源:.NET MF白皮书[1])
本文后面的部分将自下而上介绍.NET MF的各构成部分。
P.S. 因为最近工作比较忙,所以本文不能一次写完,将一部分一部分地贴出,还望各位看官见谅。本文主要参考.NET Micro Framework白皮书,下载地址:http://download.microsoft.com/download/3/1/9/319f7469-70bd-4e7c-a6cc-e5ad96939af4/net_micro_framework_whitepaper_v_1.0.doc。本文后面的部分将包括:HAL、PAL、CLR、库、应用程序开发。