嵌入式领域与PC领域有很大的不同,嵌入式系统都是针对具体应用的专用系统,其软硬件需要面向应用来设计,并且由于嵌入市系统领域极其广泛,不同领域所采用的技术各不相同,所以长期以来,嵌入式领域一直没有形成PC和Server领域的标准化和垄断性,Intel,Microsoft都不是霸主,仅常用的CPU就有数十种之多,常见的有Arm,MIPS,PowerPC等系列芯片,嵌入式操作系统也有数十种,Vxworks,QNX,Symbian,PSOS,Linux,WinCE等等。
归结起来,嵌入式设备有如下特点:
1.成本敏感,资源有限多数嵌入式系统具有成本敏感性,它的硬件和软件都必须高效率地设计,量体裁衣、去除冗余。好的嵌入式系统是完成目标功能的最小系统,这样的产品才更具有竞争力。所以,多数嵌入式系统中的硬件资源是很有限的,如处理器速度较低 ,存储器空间较少等。这些都对嵌入式软件系统提出了更高的要求。
2.多种硬件平台嵌入式处理器众多,常用的也有数十种,各自具有一定的优缺点和适用范围。这要求嵌入式操作系统支持多种的处理器。
3.低功耗对于使用电池的移动计算设备来说,需要具备低功耗的特点。
4.安全性和可靠性高很多嵌入式应用,如工业控制,航天和网络设备都要求具有高安全性和高可靠性。有的要求在恶劣环境中,系统仍然能够正常工作。
5.部分要求实时许多嵌入式应用要求具有实时处理能力。如航天,工控等。
6.多数软件固化存储多数嵌入式设备软件固化存储在Rom或Flash中,较少使用磁盘。以提高其可靠性并减小体积。
以上都对嵌入式OS提出了独特的要求,让我们逐条分析评价Linux和WinCE/Windows的优缺点。
1.支持多种硬件平台由于嵌入式设备硬件平台的多样性,CPU芯片的快速更新,嵌入式操作系统要求支持常用的嵌入式CPU,如X86, ARM, MIPS, POWERPC等,并具有良好的可移植性。另外还需要支持种类繁多的外部设备。Linux支持以上几乎所有的主流芯片,并且还在不断的被移植到新的芯片上。而在这方面,WinCE显然差得很远。
2.占有较少的硬件资源由于多数嵌入式系统具有成本敏感性,处理器速度较低 ,存储器空间较少,这要求嵌入式OS体积小,速度快。Linux体系结构比较灵活,易于裁减,可以小到2M flash,4M RAM。而WinCE对资源的要求更高。
3.高可定制性由于不同的嵌入式应用对系统要求各不相同,这要求嵌入式OS具备高可定制性,能够根据需要方便的增加和减少各项功能模块。这一点对于嵌入式领域至关重要,而Linux由于图形系统不在内核中,且支持模块机制,内核可根据需要加入或去掉功能。其外围工具拥有众多选择,更由于可以自由修改源代码,具有极强的可定制性。而WinCE/Windows根本无法做到这一点。
4.具有实时处理能力实时应用分为硬实时和软实时两大类,嵌入式OS需要明确是否支持实时和支持哪一类实时应用,需要提供最坏情况响应时间为多长。Linux和WinCE/Windows最初设计时都没有考虑实时应用,但众多的实时Linux项目已使Linux具备了硬实时和软实时处理能力,硬实时有RT-Linux和RTAI,而2.6中加入了可抢占核心,使得Linux具备了软实时处理能力,此外还有Timsys和Montavista等实时Linux实现。Linux自由开发模式的优点得到了充分的体现。Windows虽然也有第三方提供类似于RT-linux的实时功能,但由于微软未提供这方面的支持,也由于Windows可靠性不能满足要求,很少有人在实时领域使用Windows。但RT-linux已经在美国航天部门,印度军方等得到了广泛应用。还有Montavista,Timsys的实时Linux都有很多成功案例。
5.具备强大的网络功能现在,越来越多的嵌入式设备需要具备网络功能。这要求嵌入式OS支持常用的网络协议和可靠的网络功能。Linux的网络功能经过几次改进,其效率,功能都很突出。且具有众多的网络工具,支持几乎所有常见的网络协议。这些使得Linux在网络设备中倍受青睐,很多防火墙,低端路由器等中使用的都是Linux。而未闻WinCE/windows在这方面有什么应用。
6.高安全性和高可靠性嵌入式设备往往对安全性和可靠性要求很高,这要求作为基础软件的嵌入式OS具有高安全性和高可靠性。如骨干网的路由器,交换机等。Linux的可靠性是经过实践检验的,并进一步向高端发展,冲击Vxworks, Unix的市场。安全性方面Linux病毒极少,并拥有众多安全增强,有的安全增强Linux达到了B1级别(红旗RFSOS通过了国家GB17859第三级,等同于TCSEC B1级)。而Windows病毒众多,漏洞不断,虽然微软大力宣传其通过了CC标准EAL4级,但是需要说明的是,EAL4仅仅说明Windows在多大程度上满足了它的安全目标,显然更为重要的是这个目标是什么,事实上,它通过的是CAPP的EAL4级,仍然相当于TCSEC C2级,Win2000的可靠性比起98等来说有了明显提高,但尚不足以向高端冲击,其安全性问题也会大大影响它的可靠性,这二者是紧密联系的,不能孤立讨论。
7.具有完善的嵌入式GUI和嵌入式浏览器面向用户的嵌入式终端设备如Smart Phone等,都要求嵌入式OS具有功能完善,控件丰富的嵌入式GUI,并支持功能强大的嵌入式浏览器。在这方面WinCE有完善的解决方案,Linux也有QT/Embedded等GUI,Opera等嵌入式浏览器,拥有众多的选择。
8.实现嵌入式日志文件系统,具备断电保护能力。这些功能Linux和Windows都能达到。
9.能够提供完善的开发工具集。Linux下的开发工具众多,但不如Windows开发工具易用。不过Windows的开发工具不是为嵌入式领域设计的,功能也不完善。
10.能够快速启动启动速度二者差不多,但很多嵌入式设备并不需要图形界面,且由于Linux有源代码,在硬件固定的情况下可以加速启动,这时Linux就比WinCE/Windows启动快多了。
通过以上分析,可以很清楚地看到,总体比较而言,在嵌入式领域Linux比WinCE/Windows具有明显优势。正因为如此,嵌入式Linux比WinCE/Windows应用领域要广泛的多。WinCE的优势在于PC衍生产品,如Pocket PC,高端PDA等。但在其他众多的嵌入式领域中,WinCE就并不适合了。在嵌入式领域,Linux与WinCE/windows均为后发,Windows不拥有在PC领域的垄断优势,二者公平竞争,这时更能清楚地看出他们的实用性差别和发展潜力。嵌入式给了Linux一个自由广阔的天地,充分体现出了Open Source的巨大优势,我们有理由相信:未来是Open的世界