lizhibing 2010-01-13
随着嵌入式系统开发日益复杂,使到开发成本也在不断增加之中。因此,大力降低开发的复杂性,实现低成本开发对于嵌入式厂商来说显得意义非凡。一般来说,嵌入式设备是软件和硬件高度集成的设备,其中软件平台是由软件开发工具和开发集成环境构成。如果开发平台选择失误,重新选择往往意味着要浪费大量的人力、物力以及时间,更重要的是会延误产品的上市时间,这无疑是一个沉重的打击。
近日,我公司新一代嵌入式设备面临着开发平台的选择。公司多次组织开发部门和相关技术人员进行讨论。在会议上,Windows Embedded和嵌入式Linux两种平台的支持者争执不下,观点针锋相对。那么,究竟哪一种开发平台更能有效地降低开发的复杂性、降低产品成本和加快上市速度呢?在这个问题上两大阵营是经常发生“公说公有理、婆说婆有理”的口水大战,我们不妨来个全面的比较。本文详细分析嵌入式平台选型的要点,然后结合讨论会上的发言,分析许多开发人员关心的一个问题:究竟Windows Embedded 和嵌入式Linux相比较,谁的开发成本更具有竞争力?
第一局:开发总成本大比拼
(1)免费嵌入式Linux VS 商业化平台工具
在嵌入式平台领域中,微软的地位无疑是非常重要的。但Linux不但继承了Unix的技术特色,更因为开放源代码而在商业机制上与一贯封闭的微软相对垒,更是赢得了众多支持者的口碑。免费开源的嵌入式Linux现在是嵌入式领域的热点话题,很多小型厂商为了节省开发成本都在采用免费的嵌入式Linux开发产品。他们认为Linux是免费的,因此开发成本会低很多,虽然他们也承认必须要花费不少的资源和时间去将它变成一个可用的商业产品。或者有人认为可从风河、MontaVista和红帽子等供应商处买到商业版Linux,但事实上商业版Linux可不便宜,在很多同等情况下和Windows Embedded的费用相差不大。
对于一个嵌入式产品来说,从开发到批量上市的费用大致由三个方面构成:开发平台和开发工具费用、产品License许可证费用、以及开发过程中的各种隐性费用。在产品License许可证费用上,Linux是免收使用许可费的,Windows Embedded是要收取使用许可费的。抛开在技术上的区别,从开发平台费用来看可以分为:免费的嵌入式Linux、商业版嵌入式Linux和Windows Embedded。从平台费用的经济性上看,Open Source的Linux无疑是最吸引人的,因为它是免费的,而其它商用平台(如Windows Embedded、VxWorks)和商业版Linux都需要支付一定的费用。
嵌入式开发平台从商业模式上可以分为两类:In-House平台(由各生产厂商自行研发和维护)和商业化的平台。对于完全免费的嵌入式Linux平台,由于各自应用的领域和需求的不同,必然要求开发者在基础版本上自行修改和维护,最终形成各自不同的版本,这样就和In-House的嵌入式开发工具没有什么区别了。在这一点上开发者需要有非常清醒的认识,就是厂商开发的是面向最终用户的嵌入式设备,而不是花大量的时间和成本在修改和维护Linux平台上。所以,虽然很多人会觉得免费的Linux可以节省成本,但实情上却是需要花费更多的隐形维护成本。
因此,经过激烈的争辩和分析后,在我们公司的讨论会上一致的结论是:针对我们公司的技术实力而言,免费的嵌入式Linux暂时不具备商用化的快速开发、高可靠性、低成本维护等商业要求。当然,这个结论对许多嵌入式设备开发厂商同样具有参考意义。因为对于一个嵌入式产品开发来说,是要清醒的认识到总开发成本TCD(Total Cost of Development),而不能只看产品的入门许可证费用,这也是选择嵌入式软件开发平台的一个基本准则。
(2)Linux VS Window Embedded的开发成本比较
从前文我们可知,对总开发成本TCD的评估可以帮助嵌入式厂商评估花在软件开发中的总体成本。在这里参考和引用知名市场研究机构Embedded Market Forecasters提出的一个模型和数据:TCD=TTM x NOE x CPMM。其中:TTM(Time to Market)是产品从开发开始到上市所用的时间,以月为单位;NOE(Number of Engineers Used)是开发该产品所需要的开发人员数量;CPMM(Cost Per Man-Month)是每个开发人员每个月所需要的费用。调查数据表示:Windows Embedded平台的平均TTM为8.1个月,而嵌入式Linux平台的平均TTM为14.3个月,前者比后者快了43%。从对开发人员的需求数量来看,Windows Embedded 平台中每开发一个产品所需的平均开发人员数量为7.9人,而嵌入式Linux平台需要14.2人,前者比后者节省44%。再把两种平台开发人员的平均月成本CPMM都假定为相同。从而得出一个结论:就是Windows Embedded平台成本大约只是Linux的四分之一,而且开发周期更短。报告的主要作者Jerry Krasner博士对差别如此之大所作的解释是:Windows Embedded更为成熟、功能更加丰富、采用基于组件的设计方法、具有集成化的工具集、支持并行开发工作流程。
这个结论一经发布,可谓一石激起千层浪。嵌入式Linux的支持者纷纷出来辩论,并对其提出质疑。因为热衷于嵌入式Linux的人们认为开发平台的评估方法应该是准确地衡量开发工作中的全部因素。虽然TTM和TCD的确是很重要的因素,但如果只是拿一两个指标来衡量,其结果一定是片面的。对于Windows Embedded是否更具TCD(总开发成本)优势这个结论我们先不予置评,但TTM和NOE这两个数据却是真实的调查数据,对我们选择开发平台时有一定的参考价值。
第二局:组件化和硬件兼容性大比拼
(1)组件化技术可大大降低开发成本
大量的嵌入式开发项目已证明复用技术是提高开发效率,降低开发成本,并改善软件质量的有效方式之一。所谓复用技术,其核心是组件化、构件化。经过多年发展和积淀,成熟的嵌入式开发平台大多支持基于组件(Components)的开发方法,从而使到不同产品、不同开发项目之间能实现大范围的软件组件重复使用,从而加快开发速度,降低开发成本。
据微软Teched 2009技术大会的资料介绍,Windows Embedded Standard 2011是针对Windows 7平台的模块化系统。为了适应嵌入式产品的定制化需求,微软将Windows 7拆分成一万多个独立的功能组件,允许用户根据自己的需求在自定义设备映像管理时选择最佳功能,以定制尺寸更小的操作系统。因此,通过提供大量成熟而实用的组件的方式,使得Windows Embedded Standard 2011平台具有了“配置化”的开发特点,有效的降低了对开发人员的技术要求。据统计数据显示,相对于其它开发平台而言,这可以节省40%~60%的人力成本,并且可缩短50%~80%的软件开发周期。此外,Windows Embedded的应用程序开发接口是Win32 API,与桌面Windows的基本一致,这大大的方便桌面Windows开发人员向Windows Embedded嵌入式开发过渡。
同时,微软Windows Embedded操作系统还为许多特殊功能需求和外围设备提供了一系列广泛的硬件驱动支持和功能组件支持,包括:工业自动化系统和机器人、互联网IP电话、家庭网关、消费电子产品、网络机顶盒、GPS设备、游戏机、零售终端收银机POS和自动柜员机ATM等。因此,Windows Embedded的成本优势主要是体现在优化端对端的开发,快速配置、构建和部署等功能组件上。而且,Windows Embedded还有大量的第三方应用软件支持。无论是针对特殊需求优化的功能组件,还是针对硬件驱动支持来说,嵌入式Linux都相对的缺乏,这都需要更多的完善。
(2)硬件兼容性和可移植性
微软Windows Embedded的策略是推出广泛的组件化、硬件兼容性和可移植性,以使嵌入式设备开发商在从大量的功能和特性选择时具有更大的灵活性和选择权。硬件兼容性和可移植性选择包括:CPU处理器、硬件外围设备、硬件驱动程序等。其中CPU处理器选择是最为重要的,同时硬件外围设备驱动程序也是非常关键的。原因是CPU处理器的选择往往会限制操作系统的选择,而操作系统的选择又会限制或影响硬件驱动程序的选择。
当今的嵌入式系统开发是处于高度分化状态中,因为有着多得让人眼花缭乱的CPU处理器和硬件外围设备可供选择。但处理器和硬件外围设备的多样化也困扰着嵌入式系统的开发者,这一障碍导致开发商必须要小心选择软件开发平台和开发工具环境。而作为通用性强的嵌入式平台Windows Embedded是能满足甚至超过了这些需求。例如,Windows Embedded支持多种处理器家族,包括X86、PowerPC、arm、MIPS和SH等系列,而且微软为每个支持的处理器家族提供了完整的系统库。另外,Windows Embedded可以通过OEM适配层OAL适配到任何硬件外围设备上。其中OAL是驻留在Windows Embedded内核和硬件之间的代码层,原始设备制造商使用OAL代码把Windows Embedded适配到自己的硬件上。在硬件外围设备驱动程序上,微软提供了许多参考的样例。开发人员通过参考样例可迅速地完成硬件外围设备驱动程序的开发,不但可以节省开发时间,还能降低开发的技术难度。
第三局:平台生态环境成本大比拼
(1)开发工具生态环境成本考虑
当开发人员围绕一个平台进行开发时,就跟它相关的生态环境密切相关。平台生态环境是指所有参与这个开发平台的合作伙伴,例如芯片厂商、开发工具提供商、以及在平台上做应用开发的厂商。目前,嵌入式Linux很少有第三方厂商的支持,不管是开发工具还是应用程序,开发商必须开发所有的东西,这对于今天分秒必争的嵌入式市场来说是不现实的。而微软Windows Embedded的第三方开发资源和可重复利用的资源很多,使到应用程序的开发速度会较快,也使到产品上市周期会比Linux快很多。
另外,与嵌入式Linux相比,Windows Embedded不但是一个成熟的商业产品,更重要的是微软推出功能强大的辅助开发工具,这能帮助客户实现快速开发和减少投入市场的时间。而嵌入式Linux则相对的缺乏成熟的开发工具和生态环境。因为对开发人员来说,微软已经帮他们完成了80%的软件开发工作,例如提供很多的库和基本的软件框架,客户只需把与他们实际应用相关的软件部分填进去就可以了,这使得客户在微软Windows Embedded平台上更容易完成开发工作。虽然使用Windows Embedded是需要先花费一笔授权许可费,但天下没有免费的午餐。因此,在谁先进入市场谁就能获得更大利润的今天,选择一个功能强大,同时又有使用方便的开发工具的生态环境显得至关重要。
(2)从应用和学习成本考虑
众所周知,开发一个产品的隐形成本究竟是多少,是与开发者已有的资源密切相关的。例如,开发者熟悉工具的学习成本就是一个非常关键的考虑因素。从学习和研究的角度来看,Linux能让开发者了解到最彻底的东西,因为开发者有全部的源码。而Windows Embedded只给封装好的各种API,通常学到的是表层的内容。但与Linux相比,Windows Embedded的主要优点是应用简单和容易学习。因为微软提供了方便的IDE和开发工具,无论是对于OS的定制、裁减、交叉编译,还是应用程序的开发都相对简单。