Linux作为开源的操作系统正在IT 产业的方方面面发挥着作用,Linux是服务器的重要的操作系统。Linux是嵌入式系统关键部件,它已经嵌入在电信交换设备,路由器,接入设备,网络存储设备和移动终端里,涵盖通信网络的各个层面。IT业可能非常熟悉的是SUSE,RedHat,红旗Linux 操作系统以及在在桌面系统免费使用的Fedora,Debian,而不太了解嵌入式Linux,这是因为嵌入式设备是以一个整体的形态展现在使用者面前,所以操作系统虽然是非常重要的部件,但是不容易让大众所认识,比如我们日常看到的MP4,GPS,手机等电子消费产品,其实它们里面都是有一个操作系统运行在里面的,行业内称为RTOS(实时多任务操作系统)或者EOS(嵌入式操作系统)。正如服务器和桌面系统一样,嵌入式系统设计者可以选择商业嵌入式 Linux软件或者是使用开源的Linux 软件自己开发,也可以委托第三方开发。商业的Linux软件的中和RedHat齐名的是Montavista软件公司。
Montavista Linux已经拥有超过两千多用户和数以千万计的产品在市场上销售,它们覆盖从智能手机,高清电视,机器人,无线网络设备到3G电信服务器等各种嵌入式应用。Motorola 使用了Montavista Linux的智能手机‘明’在中国的巨大成功使得Montavista 和它的Linux 产品蜚声国内。
Montavista Linux 发展历史
1999年在美国硅谷-Sunnyvale小城一个普通的办公室里面又多了一群不太年轻的创业者,这就是Montavista创始人-Jim Ready和他的创业团队。大约15年前Jim也就是在同样的地方开始他第一家嵌入式操作系统公司的创业生涯。Jim 创办的Ready system公司的VRTX是世界第一个商业的RTOS,广泛的应用在通讯,控制和航空航天系统中,是嵌入式操作系统的标志和创造性产品,VRTX的思想为行业的后来者所追随和发展。经过数年观察和思考,Jim认识到Linux可以支持更广泛和更新的硬件,更多的I/O设备,更多和更加标准的应用,它可能是未来嵌入式操作系统的最适合的选择之后,决定创办一家专业的嵌入式Linux 公司,公司的定位是一个100%的Linux公司,它的嵌入式Linux产品可以替代传统的RTOS。
HardHat Linux
2002年以前,Montavista 的Linux 产品名称叫HardHat Linux(这个名字也最早在开源社区和大学里面流传), HardHat名字的由来也许是需要区别于市场的名气已经非常大的redhat, 表示Montavista的Linux 是一个实时和嵌入式的Linux的原因吧。因为创建初期正值网络经济的热潮,Montavista最初的商业模式和其他的开源软件一样,是一个免费的软件,但服务和升级需要收费。 2002年以后从Montavista Linux 2.0开始就改为Linux行业里面广泛采用的订阅模式,即付费获得产品,在订阅期内得到支持,升级和补丁。
Montavista Linux 的三个版本
Montavista Linux 目前有三个版本, professional edition -称为专业版本(简称pro),主要是针对各种通用的嵌入式应用,它也是Montavista Linux的核心产品,其他的版本也是由这个版本发展出来的, carried grade edition(简称CGE),也称为电信Linux版本,此版本是在专业版本的基础上增加了加固内核,事故处理,动态加载等高可能性的特点,符合OSDL电信Linux规范(也称为 CGL规范,来自www.osdl.org-这个机构最近和Linux基金会合并),CGE支持先进的ATCA计算平台等先进的硬件技术。Mobilinux是Montavista 重要的旗舰成品之一,2003年Montavista在专业版本上开发了一个称为消费电子(consumer electronic edition-简称CEE) 的版本,CEE由于Motorola基于Linux操作系统的智能手机而闻名海外,2005年底CEE再作重新开发并变名为Mobilinux专门针对手机市场,比较起以前的版本,Moblinux 增加了可以大大降低手持设备能源消耗的动态电源管理,Linux系统快速启动,尺寸优化技术和各种测量和分析工具。
在过去的6年里面 Montavista Linux 有两个重要的发展阶段,第一,内核的进化,4.0 版本以前Montavista Linux 一直是使用2.4版本的开源内核,如3.1版本是使用的2.4.20, 4.0版本之后,Montavista Linux 使用了目前流行的2.6版本的内核技术。第二,工具的进化,Hard Hat Linux的工具时传统Linux命令行,3.0版本以后Montavista Linux增加了集成的开发环境(IDE),使用的时KDE,3.1版本之后升级成Eclipse,这是一个目前功能最完善的集成开发环境。
Montavista Linux实时性
Montavista 一直坚持在开放和兼容社区内核发展的前提下,发展和开发Linux的实时性技术,并把它应用在Montavista Linux产品里面,比如Montavista Linux 2.1版本已经实现了Preemptible kernel 和Realtime scheduler,从而根本改变了传统Linux无论有那个进程和线程占有多少时间不能抢占和按照优先级调度的历史,3.1版本的时候,Montavista把当时还正在开发中的2.6内核当中的0(1)调度器和高分辨率定时器移植(backpor)到2.4内核的Montavista Linux 3.1三个版本中,让使用Linux进行嵌入式软件开发的用户最早的使用到最先进的Linux实时性技术,同时为今后升级到2.6内核作好了完全兼容的准备,2005年Montavista在开发2.6内核的4.0版本的初期,在开源社区创建了一个实时 Linux项目,通过和社区协作开发Montavista 在4.0 产品里实现了Linux 2.6内核的RT-Path技术。Montavista的技术专家是来自传统的嵌入式领域,对实时技术和要求非常了解,Montavista坚信基于开源 Linux的实时性是可以满足嵌入式系统的实时性需求,过去的实践也不断的证明了这一点。
Montavista Linux professional 5.0
Montavista Linux professional 5.0(简称pro 5.0)是5.0家族的第一个产品,2007年2月开始由Beta版本,4月陆续发布一部分嵌入式处理器参考平台的支持版本,pro 5.0的发表标志着包含最新的Linux技术的新一代嵌入式软件平台的到来,pro 5.0是在目前4.0的基础上融合了先进Linux内核,应用和工具技术开发而成的。下面从四个方面分析一下;
DevRocket 5
DevRocet 5是基于Eclipse的一个完整的嵌入式集成开发环境,它使用了最新的CDT扩展和管理技术,并有更加便捷的编辑-编译-远程调试的过程,更多的可插入的工具链, DevRocket 5还可以支持在没有目标硬件的情况下的虚拟开发环境。简单来讲你可以把DevRocket理解为是一个Eclipe框架下和一系列插件组成的软件工具,这个工具包括C/C++开发和远程调试(内核和用户态),应用和系统的跟踪,系统性能的分析,远程系统的管理,系统平台映象的管理,基于CVS的软件版本管理,区别于前面的版本,DevRocket 5以插件的形式增加了4个工具:(1)检测内存泄漏工具; (2)性能统计和分析工具;(3)可以观测到整个系统内核和应用的存储器使用的工具; (4)可视化的内核和用户态应用的跟踪工具。即通过Eclipe读取LLTng的trace文件图形化显示,区别于过去的DevRocket。新的版本可以让用户使用其他公司或者开源的Eclipe框架,把Montavista的工具以插件形式安装上去,使用户可以体会到使用最新技术的快乐。原理上讲,在获得有效的授权之后DevRocket 5 可以支持以前的4.0甚至3.1版本的Montavista Linux的各个版本的产品。
全新的内核和应用
Pro 5.0使用稳定和全新的2.6.18内核, LSB3.0 兼容,安全特性,IPV6认证,内核和用户态的实时技术,包括支持Priority Queuing ,Priority Inheritance,Robust Mutexs和新的HR Ktimers,I/O和网络方面支持更多设备驱动, 如,SDIO,USB OTG,Bluetooth(计划在mobilinux 5.0里面),802.11g WiFi,支持ARM Jazelle(ARM发布的java硬件加速虚拟机优化技术,目的是为了提高java应用的启动运行及反应速度)。pro 5.0还包含了Montavista以前在CEE3.1和Mobilinux 4里面使用的XIP技术,这是一个可以提高Linux系统引导速度的技术,也就是说pro 5.0将可以适合除手机外的消费电子的应用。
减少尺寸的技术
在5.0版本里,Montavista大大改进了尺寸优化技术,使用了先进的 Linux Tiny 和可以支持NPTL,ARM EABI 的uClibc,配合ARM Thumb mode 使用uClibC后的应用尺寸可以减少近50%,这还只是应用部分,如果考虑到文件系统的优化,那就有可能到70-80%,简单来讲,一个标准的 Linux 有大约14M,经过5.0版本(或者使用Mobilinux 4.1-它已经包含uClibc)完全优化后可以到3M 左右。
完善的质量保证体系
目前Pro 5.0内核是在2.6.18 baseline上加了有大约1500个patch(这个数量还在因为新的硬件的支持而不断的增加),这其中的近30-40%的patch,它们是有连带关系,既如果你修改了一个可能其他也要修改。再细化一下,整个Pro 5.0的代码是由2.6.18内核代码,非主流内核代码,如ARM和MIPS分支代码,RT patches,2.6.19对2.6.18 的bug修正后backport,Montavista内部自身开发和修正的软件模块(一般每次发行要修改超过1000个bug)五个部分组成,然后每个 build都要经过35000个自动测试,这样一个巨大的软件工程是很难想象仅靠几个Linux工程师自己完成的,Pro 5.0这样的工程也是在完善的质量保证体系下和过去两年开发2.6内核和5年以上2.4内核的经验的结晶,更重要的是经千万计的基于Montavista Linux产品的验证给予Pro5.0产品一个好的质量基础。
嵌入式Linux技术的发展趋势
回顾了Montavista Linux发展历程和分析了pro 5.0的一些技术特点后,再综观目前市场上商业和开源的嵌入式Linux的现状,我们不难看出未来嵌入式Linux技术走向的轨迹:
Linux工具将大行其道
开源的Eclipes 框架已经成为事实上的企业软件和嵌入式软件开发标准,不仅得到了软件和系统厂商的推崇,而且得到了设备厂商的支持和参与,最近Motorola宣布加入Eclipes基金会,参与一个设备软件开发平台(DSDP)项目,开发一个针对移动Linux的工具-TmL就是一个很好的例子。基于Eclipes 框架的嵌入式开发工具将是未来嵌入式Linux 甚至是其他嵌入式操作系统的主流和标准的开发平台,嵌入式Linux的工具目前和未来将主要是针对Linux 命令行工具的改进和提升,开发新分析工具,配置工具,性能测试工具和调试工具。比如上面提到的Montavista Devrocket5,支持和配合BDI2000的Linuxscope, Workbench和Timestorm。
一个重要的促使Eclipe的Linux工具大行其道的非技术原因是嵌入式软件比较其他行业的软件需要更好的工具去开发,调试和测试,而Eclipe的授权方式更加适合商业公司开发的工具以商业版税方式销售和支持。
嵌入式Linux软件平台走向应用
如同商业Linux服务器软件公司一样,嵌入式软件公司也已经意识到它们应该更多的在Linux内核上进行应用软件的开发,并在集成和测试上多下功夫以满足用户对使用嵌入式Linux的产品尽快上市的要求,使得嵌入式Linux对比微软Windows Mobile更加具有竞争性,即Linux软件中间件将越来越现出不同公司产品的差异和价值。
Montavista 在 4.0的产品开始就已经有了一个非常清晰的中间件层-为应用软件提供接口,如图3所示,这个中间层包括了GTK/X11图形库,200多个用户态的应用模块,IPV6和IPsec/IKE,Web services networking utilities,WiFi的的网络协议。在Montavista面向应用的电信CGE和手机版本Mobilinux已经涉及了应用的部分,比如 Mobilinux 4.0里面的动态电源管理就增加了支持和方便应用的策略管理,DirectFB 适合快速图形应用的图形库和刚才提到的小尺寸应用库uclibc,pro 5.0和Mobilinux 5.0将增加对WiFi安全和管理的支持, Mobilinux 5.0还有计划支持完整的蓝牙协议和应用,这些模块虽然底层的驱动是在内核里面的,但是相当多的模块是在应用层的了。
当然,无论是pro,Mobilinux,CGE,都还不能称为是完整的 Linux应用平台,可以说它们比较起SUSE和Redhat已经更接近普通的嵌入式和电信的嵌入式Linux应用,但是距离消费电子如手机应用还有相当的距离,目前商业公司,开源社区和行业组织还在作更多的努力,比如Trolltech,Access,LiPs。
嵌入式Linux向着靠近标准和开放的方向迈进
更多的信息表明嵌入式Linux正在向一个标准的方向迈进,尤其是内核方面,比如Pro /CGE/Mobilinux 4.0使用标准2.6内核的RT-patch实现了Linux宿主机的实时性要求, Pro 5.0支持LSB3.0,在电信Linux方面有OSDL CGL标准,消费电子有CELF和最近的LiMo-一个由Motorola创建的手机Linux 标准平台的组织创建的标准,Montavista作为OSDL 创始成员一直致力于跟踪和遵循CGL的规范,也是唯一通过CGL 认证的产品,在最近的3GSM会议上,Montavista也和LiMo保持密切的接触。更加重要的是嵌入式Linux 开发不能也很难独立于linux开源社区,积极参与社区项目,维护社区项目,创建好的适合嵌入式Linux 社区项目才是正确的途径。比如Montavista开发的preemptable kernel和real-time schedule ( Rober love) 后来被移植和合并到2.6的(0)1 schedule和preemptable kernel成为2.6内核的标准,新的高分辨率的定时器(HRT)-Ktime是有Montavista 维护的,也已经由2.6.18内核接受了,也将在Pro 5.0以后的各个产品里面包含并会支持各种嵌入式处理器的硬件平台。
结语
Linux和嵌入式Linux软件在过去五年已经越来越普遍的为IT业、半导体公司、嵌入式系统所认可和接受,它已经成为一个可以替代微软的Windows和众多传统的RTOS的重要的操作系统。Linux内核和基本组件和工具已经是成熟的软件,面向行业,应用和设备的嵌入式Linux工具软件和嵌入式Linux操作系统平台是未来发展的必然趋势,跟踪Linux社区的发展,符合标准,遵循开放是大势所趋,人心所向,嵌入式Linux也不例外。