从Montavista L inux 5.0看嵌入式Linux的发展
L inux 作为开源的操作系统正在 IT 产业的方方面面发挥着作用, Linux 是 服务器的重要的操作系统 . L inux 是 嵌入式系统 关键部件, 它已经 嵌入在电信 交换设备 ,路由器,接入 设备 ,网络存储设备和 移动 终端 里 , 涵盖 通信网络 的 各个层面。
引言
IT 业 可能 非常熟悉 的是 SUSE,Red H at , 红旗 L inux 操作系统以及在 在桌面 系统 免费 使用 的 F ed ora , D ebi a n ,而不太了解嵌入式 Linux, 这是 因为 嵌入式 设备是以一个整体的形态展现在使用者面前, 所以 操作系统虽然是非常重要的部件,但是不容易让大众所认识,比如我们日常看到的 MP4,GPS, 手机等电子消费产品,其实 它们里面 都是有一个操作系统运行在里面的,行业 内 称为 RTOS( 实时多任务操作系统)或者 EOS (嵌入式操作系统)。
正如服务器和桌面系统一样,嵌入式系统设计者可以选择商业嵌入式 L inux 软件或者是使用开源的 L inux 软件自己开发 , 也可以 委托第三方开发。商业的 linux 软件的中和 Red H at 齐名的是 montavista 软件公司。 M ontavista L inux 已经拥有超过两千多用户和数以千万计的产品在市场上销售 , 它们 覆盖从智能手机,高清电视,机器人,无线网络设备到 3G 电信服务器等各种嵌入式应用。 Motorola 使用了 M ontavista L inux 的智能手机 ' 明 ' 在中国的巨大成功使得 montavista 和它的 Linux 产品蜚声国内 .
Montavista linux 发展历史
1999 年在美国硅谷- Sunnyvale 小城 一个 普通 的办公室里面又多了 一 群不太 年 轻的创业者,这就是 montavista 创始人- J im R eady 和他的创业团队,大约 15 年前 J im 也就是在同样的地方开始他第一家 嵌入式操作系统 公司的创业生涯。
Jim 创办的 Ready system 公司的 VRTX 是世界第一个商业的 RTOS ,广泛的应用在通讯,控制和航空航天系统中,是嵌入式操作系统的标志和创造性产品, VRTX 的思想 为 行业的 后来者所追随和发展。经过数年观察和思考, J im 认识到 L inux 可以支持 更 广泛 和更新 的硬件,更多的 I/O 设备,更多和更加标准的应用 , 它 可能是未来嵌入式操作系统的最适合的选择 之后 ,决定创办一家专业的嵌入式 L inux 公司, 公司的 定位 是一个 100 %的 linux 公司,它的嵌入式 linux 产品可以替代传统的 RTOS 。
图一很清楚的表现出了 Montavista Linux 产品发展的历程 , 这里需要阐述的有这样几个方面 .
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 版本的内核技术 . 第二,工具的进化, hardhar 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 内核的 montavisat 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 个 patches( 这个数量还在因为新的硬件的支持而不断的增加 ), 这其中的近 30-40% 的 patches, 它们是有连带关系 , 既如果你修改了一个可能其他也要修改 . 再细化一下 , 整个 pro 5.0 的代码是由 2.6.18 内核代码 , 非主流内核代码 , 如 ARM 和 MIPS 分支代码 , RT patches, 2.6.19 对 2.6.18 的 bug 修正后 backport, montavista 内部自身开发和修正的软件模块 ( 一般每次发行要修改超过 1000 个 bugs) 五个部分组成 , 然后每个 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 命令行工具的改进和提升 , 开发新分析工具 , 配置工具 , 性能测试工具和调试工具 . 比如上面提到的 montavisya Devrocket5, 支持和配合 BDI2000 的 linuxscope, Workbench 和 Timestorm.
一个重要的促使 Eclipe 的 linux 工具的大行其道非技术的原因是嵌入式软件比较其他行业的软件需要更好的工具去开发 , 调试和测试 , 而 Eclipe 的授权方式更加适合商业公司开发的工具以商业版税方式销售和支持 .
嵌入式 linux 软件平台走向应用
如同商业 linux 服务器软件公司一样 , 嵌入式软件公司也已经意识到它们应该更多的在 linux 内核上进行应用软件的开发 , 并在集成和测试上多下功夫以满足用户对使用嵌入式 linux 的产品尽快上市的要求 , 使得嵌入式 linux 对比微软 windows mobile 更加具有竞争性 , 即 linux 软件中间件将越来越现出不同公司产品的差异和价值 .
Montavista 在 4.0 的产品开始就已经有了一个非常清晰的中间件层 - 为应用软件提供接口 , 如图三所示 , 这个中间层包括了 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-patches 实现了 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 也不例外 .
参考文献
· united by eclipse- <embedded system design> jan 2007
· eclipse focus: Motorola joins eclisp,propses Tml project <embedded computing design> oct
2006
· 安全的选择 - 王师资 < 软件世界 >,2007 年 3-4 和刊
· Linux 及开放源码在商业经济中的应用 ,martin fink 清华大学出版
· 移动电话挑战嵌入式 linux- 何小庆 -2006 年 12 期 < 电子产品世界 >
· 嵌入式软件的最新发展 - 何小庆 -2006 年 10 月深圳嵌入式系统会议
· Do-it-yourself linux? Jim ready enterprise open source journal 11/12 2006
· www.mvista.com
· www.linuxdevices.com
· www.bmrtech.com
来源:《电子产品世界》2007.6

