android telepony框架结构简析android telephony框架结构简析android telephony框架结构简析android telephony框架结构简析.doc

android telepony框架结构简析android telephony框架结构简析android telephony框架结构简析android telephony框架结构简析.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android Telephony框架结构简析 Android Telephony涉及的框架结构如图1所示。 图1? Android Telephony框架结构 通过图1可以发现Android Telephony框架结构的一些规律,具体如下。 Android Telephony的业务应用跨越了AP和BP。AP与BP相互通信,符合前面介绍的智能手机硬件基本结构。 Android系统在AP上运行,而Telephony运行在Linux Kernel之上的User Space空间。 Android Telephony也采用了分层结构的设计,共跨越了三层Java Applications、Java Frameworks和User Libraries层,与Android操作系统整体分层结构保持一致。 Android Telephony从上到下共分三层:Telephony应用、Telephony框架、RIL(Radio Interface Layer,无线通信接口层,主要位于UserLibraries层中的HAL层,接下来详细介绍HAL)。 BP SoftWare在BP上运行,主要负责实际的无线通信能力处理。 1 系统运行库层的HAL层 HAL(Hardware Abstraction Layer,硬件抽象层)在Linux和Windows操作系统平台下有不同的实现方式。 Windows下的HAL位于操作系统的最底层,它直接操作物理硬件设备,使用抽象接口来隔离不同硬件的具体实现,为上层的操作系统和设备驱动程序提供一个统一接口,起到对硬件的抽象作用。这样更换硬件时,编写硬件的驱动只要实现符合HAL定义的标准接口即可,而上层应用并不会受到影响,不必关心具体来实现的是什么硬件。 Linux 下的HAL与Windows下的HAL不太一样,HAL并不是位于操作系统的最底层直接操作硬件,相反,它位于操作系统核心层和驱动程序之上,是一个运行在User Space用户空间中的服务程序。 2 简析HAL结构 通过前面的学习,我们知道Android是基于Linux Kernel的开源智能手机操作系统,所以在这里重点介绍Linux下的HAL,就不单独介绍Windows下的HAL结构了。 要想知道HAL结构,先看看来自于HAL 0.4.0 Specification的框架图吧,如图1-4所示(引用自/davidz/hal-spec/hal-spec.html)。 图2 HAL 0.4.0 Specification框架结构 HAL是一个位于操作系统和驱动程序之上,运行在用户空间中的服务程序。其目的是为上层应用提供一个统一的查询硬件设备的接口。我们都知道,抽象就是为了隔离变化,那么这里的HAL可以带给我们什么?首先,有了HAL接口,可以提前开始应用的开发,而不必关心具体实现的是什么硬件;其次,硬件厂家如果需要更改硬件设备,只要按照HAL接口规范和标准提供对应的硬件驱动,而不需要改变应用;最后,HAL简化了应用程序查询硬件的逻辑,把这一部分的复杂性转移给HAL统一处理,这样当一些应用程序使用HAL时,可以把对不同硬件的实际操作的复杂性也交给不同硬件厂家提供的库函数来处理。 总之,HAL所谓的抽象并不提供对硬件的实际操作,对硬件的操作仍然由具体的驱动程序来完成。 3 Android为什么引入HAL HAL的一些优势在前面章节已经提到,这里回顾一下。Android引入HAL不仅因为其自身的优势,而且还有一个非常重要的原因,就是为了保障在 Android平台基于Linux开发的硬件驱动和应用程序不必遵循GPL(General Public License)许可而保持封闭,这保障了更多厂家的利益。我们都知道,Linux Kernel是开源的而且遵循GPL许可证,根据GPL许可证规定,对源码的任何修改都必须向社会开源。 那么Android是如何做到的呢?Linux Kernel和Android的许可证不一样,Linux Kernel是GPL许可证,Android是ASL(Apache Software License)许可证。ASL许可证规定,可以随意使用源码,不必开源,所以建立在Android之上的硬件驱动和应用程序都可以保持封闭。也就是说,只要把关键的驱动处理相关的主要逻辑转移到Android平台内,在LinuxKernel中仅保留基础的通信功能,即使开源一部分代码,对厂家来讲也不会有什么损失。 Google选择了这样做,并且特意修改Kernel,原本应该包括在Linux Kernel中的某些驱动关键处理逻辑,被转移到了HAL层之中而达到了不必开源的目的。 4 Android中HAL的运行结构 Android源码中实现了一部分HAL,包括Wi-Fi、GPS、RIL、

您可能关注的文档

文档评论(0)

ganqludp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档