手机:嵌入式 Linux 挑战

作者:Bill Weinberg

尽管手机制造商正在拥抱 Linux,将其作为下一代智能手机的新兴平台,但这些设备的开发和部署仍然面临关键的技术挑战。特别是,手机 OEM 厂商必须交付具有电源管理、快速启动、集成无线电 (GPRS) 接口、先进多媒体功能、有吸引力的小尺寸 GUI 和差异化的 PIM 应用程序集(浏览器、电话簿等)的设备——所有这些都集成在一起并在适度的内存占用空间中运行。对于嵌入式 Linux 开发人员来说,这是一个特殊的挑战,因为与 PC 不同,手机不是按照标准架构构建的。

本文探讨了基于 Linux 的手机开发人员面临的各种技术挑战。它讨论了关键的 Linux 使能功能的可用性和成熟度,以及支持手机应用程序开发的开源项目。此外,它还讨论了移动网络运营商严格且众多的要求所带来的技术和经济挑战。

Linux 和手机市场

全球手机市场正以爆炸式的速度增长。IDC 的行业分析师报告称,2005 年第二季度,手机市场增长了 34%,近 7 亿部手机从设备 OEM 厂商流向人们手中,并进入全球语音和数据网络。Gartner 的分析师预测,到 2009 年,全球安装基数将超过 26 亿部手机。

对于以 Linux 为中心的 IT 行业而言,这些数字非常诱人——比服务器的 Linux 总出货量和安装基数大几个数量级,并且远大于全球桌面市场。因此,手机市场既代表着“突破”的机会,在客户端设备中获得显着的市场份额,也代表着对 Linux 在通信基础设施(基于运营商级和其他版本的企业级和嵌入式 Linux)中已经占据重要地位的补充。

为什么选择 Linux 以及 Linux 将走向何方?

在过去的几年里,Linux 作为手机平台操作系统取得了显着的进步。设备制造商 LG、摩托罗拉、NEC、松下和三星今天出货了 20 多款基于 Linux 的智能手机型号,并辅以中国品牌,如大唐、e28、海尔、华为和中兴。诺基亚和其他公司也开始出货基于 Linux 的无线 VoIP 客户端。

大型和小型设备 OEM 厂商选择 Linux 作为其智能手机的战略平台,是出于技术和经济原因的综合考虑。在技术方面,OEM 厂商看重 Linux 的性能、稳健性、“黄金标准”TCP/IP 网络(尤其是路由)和灵活性。在经济方面,Linux 为 OEM 厂商提供了更低的开发和部署成本、更多的供应商选择(包括“自主开发”)、更大的开放和商业技术生态系统,以及统一支持多个产品层级(智能手机、功能手机和入门级设备)、网络类型(GSM、CDMA、模拟和 Wi-Fi)和运营商要求所需的不同且成本高昂的产品线和工程工作的机会。

尽管有所有这些强大的技术和经济优势,但如今 Linux 手机仅占市场总量的 1-2%。在增长最快的细分市场——智能手机领域,Linux 享有更强的地位。智能手机的份额每年增长 85%,Linux 占据智能手机市场的 25%(Gartner 2005 年第二季度),远远领先于 Windows Mobile 和其他系统,但落后于 SymbianOS 两倍或更多。

选择你的手机

对手机类型进行分类并不是一门精确的科学,甚至不是一项精确的市场营销活动。曾经强烈区分手机的功能(如电子邮件或图像处理)现在在各个层级和价格范围内都很常见。此外,今天的智能功能可能在六个月后就成为常见功能。你在节假日花大价钱购买的功能手机,在其市场寿命接近尾声的来年春夏,最终可能会成为入门级的赠品。

Mobile Phones: the Embedded Linux Challenge

图 1. 手机细分市场份额(Gartner 2005 年第二季度)

表 1. 手机市场层级

层级价格点功能CPU操作系统
顶层“智能手机”200 美元及以上电话,通常为 Wi-Fi/VoIP,完整的电子邮件和浏览,多媒体(MP3、视频),SMS/MMS,游戏和语音命令ARM9,ARM11SymbianOS,Linux,Windows Mobile,PalmOS,RIM
中层“功能/增强型”手机49-199 美元(通常由订阅补贴)电话,消息,有限的互联网,彩色显示屏,游戏,语音拨号ARM7,ARM9,一些 SH,M32/M100Nucleus,旧版 SymbianOS,Brew/REX
低层“入门/基本型”手机0-49 美元(通常随订阅免费赠送)基本电话,电话簿,短信ARM7,旧版区域 CPU旧版 RTOS(Nucleus,iTRON 等)
智能手机陷阱

尽管交付基于 Linux 的智能手机并非易事,但它仍然比在低层级手机上安装开源操作系统更容易且更可行。为什么?因为智能手机价格更高,利润更丰厚,在 BOM(物料清单)中更有空间——为关键手机功能(多媒体、显示控制、基带 RF 等)和支持硬件的软件留有空间。通常,应用程序操作系统(Linux、WindowsMobile 等)在专用应用程序处理器上运行,而额外的 CPU 和 DSP 内核处理语音、多媒体和 RF 功能。智能手机买家通常也是早期采用者,渴望最新的技术,并且更能容忍一些边缘行为,尤其是在技术丰富的设备中电池续航时间较短的情况。

然而,智能手机仅占手机市场总量的约 6%。如果 Linux 行业和开发者社区希望实现真正普及的基于手机的部署,那么 Linux 手机平台还必须能够支持更广泛的中层或功能手机领域的技术和经济要求。这些手机没有智能手机的所有技术优势,底层硬件也没有配备所有支持硬件。降低成本的 BOM 意味着应用程序 CPU 上的 Linux 直接暴露于语音、数据、RF 和图形软件支持的不可预测性。将这一负担放在单个 CPU 上,该 CPU 根据能源管理需要在 0-200MHz 之间运行,并且内存占用空间要小得多,Linux 就无法在中层市场取得突破。

旨在弥合数字鸿沟的社会项目也设想为发展中国家的低收入人群提供开源手机(想想精简版 Ubuntu)。但正如 100 美元的台式机被证明是难以捉摸的一样,免费的基于 Linux 的手机也可能如此。

随着时间的推移,中低层级手机的规格可能会提升以满足 Linux 的基本功能,但这些设备的利润率也会变得更薄。电池技术的改进速度并不明显,这意味着应用程序也无法通过更快的时钟速度来弥补差异。因此,如果 Linux 要突破智能手机陷阱,它必须获得一系列新功能,并增强和统一许多现有功能以迎接挑战。

技术挑战

OSDL 启动了一项新计划(参见 OSDL MLI 侧边栏),以促进 Linux 在移动电话手机上的采用。MLI 的首要任务是编目差距和需求,使 Linux 成为更合适的手机平台操作系统。以下列表和讨论代表了 MLI 参与者和其他相关方(尤其是手机制造商和手机芯片供应商)的意见。

电源管理

如今,如果便携式设备制造商想要提供基于 Linux 且电源管理的设备,他或她将面临各种不同的范例,令人眼花缭乱的选择(表 2)。

表 2. 可用的电源管理方案

APM—高级电源管理Linux 中最广泛的技术,但与更普及的 ACPI 并非 100% 兼容。
ACPI—高级配置和电源接口最普及的 x86/IA-32 笔记本电脑电源管理方案(由英特尔、东芝和微软支持)。非常依赖 BIOS。
PMU—Macintosh PowerBook 电源管理单元特定于 Apple G3/G4 PowerPC 系统的电源管理方案。
Longrun主要透明的基于硬件的电源管理,特定于 Transmeta Crusoe。
DPM—动态电源管理MontaVista 软件框架,用于驱动 ARM(尤其是 TI OMAP 和英特尔 XScale)CPU 时钟和工作电压在“工作点”之间切换,以响应策略和系统事件。
IEM—ARM 智能能源管理ARM Ltd. 为 ARM 内核被许可方提供的电源管理方案,具有动态电压和频率缩放功能(与 DPM 兼容但不同)。

OEM 厂商可以参考桌面领域,其中 ACPI 和 APM 等以笔记本电脑为中心的方案占据主导地位,并且确实占据了内核邮件列表中关于 Linux 电源管理的大部分讨论。对于非 x86/IA-32 笔记本电脑硬件,OEM 厂商可以为 Apple PowerPC 硬件求助于 PMU。部署 ARM 授权芯片的嵌入式 OEM 厂商可以利用 ARM Ltd. IEM 框架,或者使用来自数十家 ARM 被许可方(FreeScale、英特尔、NEC、三星、TI 等)的芯片上的各种电源管理方案。MIPS 和 MIPS 被许可方、FreeScale 的 CPU 系列、IBM 的 Power Architecture、Renesas 和 Hitachi 等等,以及整个芯片供应商领域,也存在独特且进一步不同的节能协议。OEM 厂商还可以选择 MontaVista 的 DPM 和其他嵌入式 Linux 供应商解决方案等方案。

虽然选择是一件好事,但过多的选择可能会导致碎片化。为了应对这种电源管理大杂烩,OSDL MLI 的成员和其他嵌入式行业联盟已表示希望看到统一的跨处理器电源和能源管理方案,或者涵盖嵌入式、桌面甚至刀片式服务器散热管理的主流高级“伞状”方案。

无线电接口

摩托罗拉制造无线电设备已有近一个世纪的历史。他们和其他手机制造商,如 NEC、诺基亚和松下,利用他们来之不易的 RF 专业知识来构建他们受欢迎的手机产品线。然而,新的进入者以及现有供应商的新设计必须克服一系列设计挑战,然后才能构建满足运营商、运营商和监管机构要求的手机,并且以具有成本效益的方式做到这一点。

在当今基于 Linux 的智能手机中,GPRS 接口驻留在一个封装的“调制解调器”设备中,该设备可以包含额外的 CPU 内核、DSP 和 RF 硬件以支持无线通信。它真的像一个调制解调器——许多智能手机通过专用的串行端口使用 AT 调制解调器命令与这些嵌入式处理器通信。卸载无线电功能可以更轻松地构建智能手机,但它会通过向已经很重的 BOM 添加组件来影响成本。

今天的一些实验性设计取消了调制解调器,并将基带接口暴露给应用程序操作系统(就像中低层级手机中的 Nucleus 一样),但这会将 Linux 暴露于超出 Linux 实时技术(抢占和开源实时技术——见下文)最新进展限制的硬实时要求。GSM 和 CDMA 无线协议都规定信号帧时间在 800-900 微秒范围内。对于 CPU 时钟为 500MHz-1.5GHz 的 x86/IA-32 和 PowerPC 处理器,亚毫秒级最坏情况响应现在很常见,但对于时钟缩放的 ARM 处理器,其运行频率为 0-200MHz,硬实时中断响应和抢占仍然很勉强。

另一个挑战来自使用移植到 Linux 的旧版电话堆栈“按原样”。此软件是为 Nucleus 和 REX 等旧版手机操作系统编写和优化的。这些专有的多层堆栈为每一层都实现了独特的线程上下文,当移植到 Linux 时,层与层之间的上下文切换延迟可能达到 20-30 微秒。因此,仅使用单个数据包遍历堆栈就可能消耗大量可用计算时间,为其他任务留下很少的 CPU 周期。

如果 Linux 要参与降低成本的中低层级手机设计,它将需要更敏捷的上下文切换和/或关键 GPRS 和 CDMA 协议实现的优化和开放的本机端口。

实时性

在过去的五年中,Linux 在提供显着的本机实时响应方面取得了进展。如今,Linux 充满了本机实时选项,包括可抢占内核、O(1) 调度器、FUTEX 以及最新的开源实时 Linux 项目(现已合并到 Ingo Molnar 维护的抢占补丁中——参见在线资源)等功能。还存在双内核和虚拟化技术,如 RTLinux、RTAI、Adeos 和专有的 Jaluna OSware,它们通过将实际 RTOS 嵌入到 Linux 堆栈中来提供类似 RTOS 的响应能力。

OSDL MLI 成员和社区中的其他成员更希望看到本机 Linux 解决方案实现实时响应。对于暴露的 RF 接口以及时间和 QoS 敏感的功能,如多媒体和语音处理,共识是 Linux 需要不断朝着本机类 RTOS 响应能力的方向发展。在移动设计中,Linux 必须满足截止日期并以敏捷的方式切换上下文,在时钟可以不规则地缩放以节省电池电量的系统中,根据系统策略和外围输入,从 200MHz 的峰值性能降至 40MHz(甚至 0MHz)然后再返回。

小内存占用

今天的智能手机可以配备 128MB 闪存和 64MB 内存。但是,手机操作系统无需试图占用每一字节的可用存储空间。操作系统和中间件使用的每个字节都是 OEM 厂商无法用于增值内容的字节。从好的方面来看,嵌入式 Linux 理论上可以以 1MB 或更小的内存占用空间进行部署;实际的手机配置要大得多。

嵌入式开发人员、平台提供商和 Linux 内核本身的维护人员提供了一系列配置和工具来缩小平台内存占用空间

  • Linux Tiny:此构建选项/补丁集是在 2.6 期间引入的,它产生的其他主流内核的内存占用空间远小于 2MB。Linux Tiny 还具有其他节省空间的补丁,如 SLOB,它是 SLAB 分配器的节省空间的替代品;用于跟踪内存分配、计数内联函数使用情况以及跨构建比较函数大小的工具;以及用于没有串行端口的系统的 kgdb 配置(参见资源)。

  • ARM Thumb 和 MIPS16:ARM 和 MIPS 等嵌入式 CPU 架构提供特殊的执行模式和小字指令集,通过生成和执行更小的代码和数据来缩小应用程序大小。这些方法和模式最适合用于缩小用户空间代码,但这样做需要特殊的模式/大小特定的库和系统调用版本,以适应标准实现期望完整 32 位的 8/16 位指令和操作数。最近,Linux 内核的适当架构树的芯片供应商和维护人员已开始构建和维护其树的特殊版本,以适应这些超高效的执行模式。即使主流内核构建确实支持此类执行模式,此类支持也可能是全部或全无,使得支持混合模式系统和集成预构建(二进制)第三方代码变得困难或不可能。要了解有关 ARM Thumb 或 MIPS16 的更多信息,请参见资源。

  • XIP—就地执行:如果您对 RAM 的要求确实非常苛刻,并且可以节省一些闪存(或许还有更高的性能),您可以将 Linux 内核和/或单个应用程序配置为直接从闪存运行。不是从 NOR 闪存(或其他类型的 ROM)复制压缩映像,而是存在多种方案来支持直接就地执行(XIP)未压缩的程序映像。请注意,由于闪存访问周期通常比 DRAM 的访问周期慢,因此 XIP 程序的运行速度可能比基于 RAM 的执行慢得多;但是,内核 XIP 可用于通过消除将内核映像复制和解压缩到 RAM 的需要来加快启动时间。要了解有关使用 CramFS 的用户空间 XIP 和原始 NOR 闪存内核 XIP 的更多信息,请参见资源。

缩小套件的其他方法

有无数种方法、技巧和窍门可以减少用户空间内存负担。这些方法包括使用 uClibc 而不是 glibc 作为标准库,部署 BusyBox 和 TinyLogin 而不是标准 shell 和多个实用程序,以及使用压缩文件系统(如 CramFS 和 YAFFS)。

运营商和运营商的要求

手机制造商无论多么有创新精神,都不能简单地制造出你梦想中的手机——或他们梦想中的手机。相反,他们必须响应他们的客户——移动运营商和运营商(想想 Cingular、Vodaphone 等)提出的广泛而严格的要求,这些要求以这些公司构建和维护的网络为基础,这些网络受到国家政府甚至一些国际机构的高度监管。这些要求以电话簿大小的巨著形式出现,包含 5,000 多个不同的规范,其中许多规范本身就非常复杂且多方面。

曾经和未来的开放手机

政府,尤其是美国政府,非常谨慎地保护他们对电磁频谱的控制。美国联邦通信委员会 (FCC) 拍卖和发放无线电频谱使用权,并对带宽、信号强度、安全以及我们在过去六年中学到的关于“公共”空中广播的内容有非常具体的看法。世界各地的其他政府和监管机构也同样倾向于开放和自由地使用无线电频率。不符合这些(重叠的)法规并且未通过监管机构审查(认证)的设备不会获得批准,也不会获得销售许可。违规行为会受到巨额罚款甚至刑事处罚。

移动运营商和运营商为了响应这些监管制度,可以理解地不愿尝试开放的设备架构。他们的供应商也是如此,至少在“细”端(运营商级 Linux 和其他实现如今正在为越来越多的无线基础设施提供动力)。运营商和运营商并非完全反对开放,但往往只考虑安全交付增值服务。通过在技术端建立谨慎的沙箱环境和限制 API 集,并通过更谨慎的政治谈判,制造、部署和监管链条已开始打开原本封闭的手机的盖子。因此,手机用户和市场观察家在过去五年中看到了少数“开罐器”的出现,主要是 Mid-P Java 和 BREW,但结果好坏参半,尤其是在性能方面。最近,基于 SymbianOS 和 Windows Mobile 5.0 的手机出现了一系列本机应用程序。

基于 Linux 的手机通过利用操作系统提供安全的应用编程环境(在用户空间中)来提供进一步撬开手机外壳的希望;它还拥有完善的熟练开发人员社区。基于 Linux 的手机是否会成为真正开放的平台,仍然是一个悬而未决的问题。迄今为止部署的手机,尽管基于 Linux 内核和许多熟悉的 OSS 组件(如 Qt 版本),但绝不是开放设备。黑客无法(轻松或完全)重建内核、操作系统和应用程序组件,甚至无法向堆栈添加功能。这些设备并非旨在接受登录,更不用说重新刷机了。这些基于 Linux 的移动设备的“开罐器”,就像那些基于专有操作系统的设备一样,是 Java,即使你可以下载操作系统和部分应用程序堆栈的源代码。

确实存在售后资源来支持破解基于 Linux 的手机。其中一个项目是 Harald Welte 的 Open-EZX(参见资源)。该项目仍处于早期阶段,致力于为摩托罗拉手机(如 A780 和 e680)构建 100% 开放的手机堆栈。该项目的 wiki 上充满了关于使你的手机无法启动和失去监管批准的警告,但也提供了关于如何获取 shell 以及如何为这些设备交叉编译的有用信息(它们基于英特尔 XScale Architecture PXA 处理器)。

摩托罗拉的首席手机架构师明确否认支持此类努力。为什么?主要是由于其客户对移动网络的完整性和安全性的担忧以及支持数百万台可能具有不同版本的 Open-EZX 软件堆栈的设备的复杂负担而引起的责任问题。那么为什么要称之为 Open-EZX 呢?因为像摩托罗拉这样的设备 OEM 厂商确实希望鼓励围绕其设备和平台发展开发者社区。他们只需要以运营商、运营商和监管机构可以接受的方式来促进这种发展。如今,这意味着向精选的 ISV 提供 SDK。

希望不久的将来,通过教育努力和坚持不懈,网络运营商和政府监管机构这些非常保守和谨慎的受众将更乐于接受移动电话作为计算平台,而不仅仅是单功能无线电设备。

OSDL MLI

为了支持移动电话制造商对 Linux 的新兴采用,OSDL 正在创建一个名为 MLI(移动 Linux 倡议)的计划,以汇集移动芯片组制造商、基于 Linux 的平台供应商、ISV、手机制造商、集成商、运营商和运营商以及开源开发人员。2005 年 10 月,OSDL 在北京主办了这项新计划的首次会议。尽管最终的要求和开发工作将由这项新计划的成员推动,但 MLI 的总体目标是解决从内核到用户空间的各种技术和经济挑战,以加速 Linux 在手机和其他融合语音和数据设备上的采用。

当 MLI 于 2005 年 10 月首次会面时,新机构任命了临时治理机构,并立即开始进行需求收集和差距分析工作。第一个可能的交付成果是用例和营销输出。最重要的交付成果,与运营商级 Linux 一样,将是启动新的开源项目工作,以填补它确定的差距,并将当前不同的技术(如本文中的技术)引入 Linux 主流。要了解有关 MLI 的更多信息,请参见资源。

本文的资源: /article/9073

Bill Weinberg 将超过 18 年的开放系统、嵌入式和其他 IT 经验带到他在开源开发实验室担任开源架构专家和 Linux 布道者的角色中,他在该实验室参与了 OSDL 针对运营商级、数据中心和桌面 Linux 的计划。

加载 Disqus 评论