嵌入式体系开辟,为什么选择Linux?
发布日期:2011-04-15
在已往的十年中,嵌入式体系的开辟孕育产生了很大的变革。已往嵌入式配置通常是一个孤单的、资源有限的体系,它们寻求的是在有限的价格上餍足肯定的结果性恳求。通常它们采取那些结果并不强大的CPU,这也是开辟者不得不尽大概地压缩嵌入式体系性能的缘故因由。如本日人们对嵌入式配置在智能化和互连性上提出了恳求,这使得嵌入式配置不再是孤单的,他们要通过互联网、无线或是其他的要领实现相互连接,同时它们也是软件生态体系(software ecosystem)的一部分。最初的嵌入式配置是单一用途的,它们拥有各自独特的表现要领和用户界面;如本日它们变成了我称之为“等同PC”的体系。它们必须运行很多雷同的应用步调,它们须要采取雷同的要领实现互连或是在某些环境下加强互连性。因此你可以看到在传统的及时利用体系(RTOS)之上创建应用步调的须要性。作为内部开辟(in-house developed)利用体系的调换要领,RTOS的出现使得创建嵌入式应用变得越发容易。
在2000年已往,大多数的嵌入式体系仍旧创建在内部开辟的利用体系(OS)底子之上,但在此之后,WindRiver和其他的贸易化RTOS产品垂垂赢得了越来越大的市场份额。
要是开辟者试图通过内部开辟创建某些嵌入式体系,就不得不创建从固件到应用步调的完备的软件栈(software stack)。垂直集成在给开辟者带来很大的控制本领的同时,也须要其在开辟和维护上举行大量的投入。在已往的五年中,在经历了环球性的经济危急之后,面市时间(time-to-market)意味着齐备,寻求附加值成为电子业告急的寻求。因此,要是你是一个工程经理,思量到你手中的资源,你是甘心甘心投资去创建一个自主产权的利用体系软件平台,还是去开辟那些可以给你的应用带来差别化的技能呢?我信托你会选择后者,由于开辟者通常渴望使他们的应用变得与众差别。这就使得内部开辟利用体系整合自主产权内核的要领垂垂被淘汰。
要是你利用VxWorks大概是pSOS,仍旧免不了要在创建应用软件和中间件上举行大量投入。这是由于围绕在这些利用体系周边的生态资源非常有限。比喻敷衍VxWorks,只有一种Webserver可供利用,而要是采取Linux,会有八九种Webserver供你选择;VxWorks只提供了一种网页欣赏器,而Linux有16种差别的网页欣赏器支持。通常环境下敷衍某种及时体系你只能选择一种文件体系——通常环境下为与windows兼容而选用FAT文件体系;而Linux包括八九种本地文件体系,它们可以与十多种外部文件体系兼容。
传统的RTOS与Linux相比另有一个很大的差别——传统的RTOS是一系列“办事”的聚集(libraries of services),开辟者须要一个结果就参加一个结果,要是开辟者不须要就将它们去失。但这就意味着创建在一个RTOS上的体系的每一个实行步调都是差别的,由于开辟者只是与那些须要的“办事”相讨论,你创建的是一组非常独特的办事聚集。这并不象是一个利用体系。而象Linux如许的利用体系提供了一个同一的平台,这使得那些智能配置不但可以得到更好的互连性,加强它们相互之间的差别性,同时也使它们得到了差别的生命周期。
以手机的开辟为例,一部智能手机在退出工厂时,它具有一系列确定的结果。但是在贩卖渠道中,人们通常渴望对它原有的结果举行修改,或是参加其他的结果。运营商渴望在他们贩卖的手机中表现出更多的差别化,他们渴望参加诸如游戏等更多的办事。而终极用户大概还渴望可以大概从第三方购买到更丰富的游戏(和其他办事)。要是开辟者的手机是一个单一用途的配置,它只能提供有限的办事,那么在它底子上创建办事和其他增值结果将好坏常困难的。但要是开辟者面对的是一部采取嵌入式Linux的手机,并相识API和干系的标准,他们就可以非常敏捷地创建起丰富的软件生态体系并敏捷霸占市场。产品长期的差别化与互连性痛痒干系,这包括它的网络互连性、与中间件的互连性,以及与外围生态环境的互连性。Linux作为一个“在互联网上生长起来的动物”,无论从哪方面讲都应该算是互连性最好的利用体系。
有人会将Linux与微软的Windows相比较,确实Windows具有很好的互连性,且具有非常全面的软件栈。但一旦开辟者用Windows创建了产品,他也就丧失了实现差别化的机会。仅仅将Windows OS加到你的产品中并实现商用好坏常敏捷的。以是要是你想得到面市时间上的上风,Windows会给你带来很多结果性上的上风。但是你得到结果性的同时,也就失去了差别化的机会。
固然,Windows另有其他一些技能上的标题,这紧张表如今可靠性和软件范畴方面。Windows的“体积”非常巨大。人们都在说Linux很大,确实与传统RTOS的70~80k的代码范畴相比,Linux的大小通常在几兆字节,而最小的Windows CE的代码范畴也有27MB(BIPLIP标注:应该是2~3MB)。出于政治和执法上的思量,微软是不克不及将Windows举行拆分的。
同时,Windows和别的RTOS还将遇到来自用户不绝增长的利用资源(runtime costs)方面的寻衅,由于他们收取高额的版税。嵌入式Windows的版权费约莫为每拷贝12~15美元。敷衍那些大批量的产品,其每件产品上可遭受的分摊资源非常有限,要是要向Windows付出如许的版税,很大概会导致亏本。别的贸易化的RTOS采取的也是如许一种收取版税的贸易模式。而Linux,其突出的一个长处便是免版税的。
Linux还具有很好的可靠性。传统的RTOS通常不具备强大的内存掩护结果,这使应用步调很容易被粉碎。
另一个影响嵌入式体系对利用体系选择的是贸易因素。在这方面传统RTOS提供商和微软的境遇是雷同的。传统RTOS提供商和微软都市在不与客户协商的环境下克制某一产品的提供,他们的贸易决定筹划是从他们公司自身的好处出发的,而不是站在客户的角度思量。Linux则能赐与利用者更多的选择。
要是采取一个开放源码的利用体系,开辟者可以大概主宰他们本身的运气,他们不必被一个提供商的决定筹划牵着鼻子走,他们总是有很多选择。纵然他们选择了MontaVista如许贸易化的Linux提供商,他们依然可以大概保有对开放资源举行客户化和利用的选择性,他们可以选择连续和MontaVista相助或是走开。
我们还过细到,实际中,与MontaVista所提供的贸易化版本的Linux形成竞争的除了Windows和别的RTOS,另有由用户自主开辟(roll-your-own)的Linux。但是创建和维护一个基于Linux的平台是很困难的变乱,而敷衍用户来说,这是一种无法创造附加值的变乱。我们一样通常办理着MontaVista的Linux环境中超过跨过4200万行的代码。嵌入式应用步调匀称的代码长度最多是50万行,很多布局是没有本领去办理4200万行代码的。
要是你着眼于源代码的开辟,纵然是针对单一目标的应用,其源代码的范畴也将以千万行计。为了完成内核的维护变乱,你须要每年投入10个工程师的力气;同时你还要淹灭35~40人年去创建整个嵌入式Linux利用体系。很多公司试图用两个工程师去维护一个自主研发的Linux项目,如许开辟者很快就会发明他们已经陷入窘境。
自主开辟Linux进程中会遭遇到的另一个标题是,你是在一个开放资源底子上开始变乱的,同时你须要投入大量的时间和精力在底子性资源的四周创建一个平台。但是Linux是开放源码的,其生长速率非常敏捷。因此大多数自主开辟的项目实际上是我们称之为“某临时间点(point-in-time)”的版本,由于开辟者只是选取了某临时段的源代码并基于它举行开辟,而并不想连续投资以保持与Linux同步的生长。而象MontaVista如许的提供商会保持大量底子性的投入跟踪Linux的最新版本,并将其参加到产品中来。
有人会说,大概是由于开辟者的范畴太小而没有富饶的预算去自主开辟Linux,那么让我们来看看那些大的嵌入式开辟者的选择又是怎样的。范畴较大概系OEM,他们拥有数以千计的开辟工程师,这些至公司大概应该有工程资源在内部开辟一个Linux平台。但同样,他们的预算也非常有限,他们也面对着增长附加值的寻衅,他们在Linux之外另有很多其他的标题须要办理。他们面对着差别的项目,而每个项目创建在差别的微处理惩罚处罚器的底子上,同时还须要差别的中间件和应用软件栈与之相配。因此很难说他们是否可以大概在同一公司内部差别的Linux版本方面花力气。
MontaVista创建了一个同一的底子资源,可以为那些大OEM创建一个我们称之为“战略平台”的同一的Linux平台。因此我们可以在雷同的源代码上创建针对MIPS、ARM、PowerPC或SH等差别处理惩罚处罚器架构的Linux。要想创建如许的Linux体系须要大量的底子性投入,而大多数嵌入式体系公司是不会在他们的产品之外投入一分钱的。
因此要是他们试图利用自主开辟的Linux时,他们将面对很大的危害,由于他们自主开辟的Linux的风致将受制于他们可以大概投入的资源的多少,纵然是一个至公司也不会象MontaVista如许投入这么多。我们整个的业务都市合在这方面。
要是你利用一个有知识产权束缚而非开放源码的利用体系,比如Nucleus,你是不克不及将其在你的布局内部广泛推行的。而要是你利用自主开辟的Linux,你仍旧将不得差别错误付那些针对差别应用的变种Linux,这仍旧会淹灭大量的工程资源。但要是你与一个象MontaVista如许的提供商相助,你会得到一个单一的战略平台。这便是要选择一个贸易化的Linux提供商的告急缘故因由。