求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
Android系统的移植要做的两个工作
 

发布于2012-12-19

 

Android系统的移植的主要目的是为了能在特定的硬件上运行Android系统。而在移植的过程中,一个重要的方面就是把握关键要点,减少工作量。从工作的角度,首先要熟悉硬件抽象层的接口,其次要集成和复用已有的驱动程序,主要的工作量在硬件抽象层的实现中。为了更好地理解和调试系统,也应该适当地了解上层对硬件抽象层的调用情况。

移植方面主要的工作有两个部分:

Linux驱动

Android系统硬件抽象层

Linux中的驱动工作在内核空间,Android系统硬件抽象层工作在用户空间,有了这两个部分的结合,就可以让庞大的Android系统运行在特定的硬件平台上。

Android移植的主要工作如图1所示。

图1 Android移植的主要工作

在具有了特定的硬件系统之后,通常在Linux中需要实现其驱动程序,这些驱动程序通常是Linux的标准驱动程序,在Android平台和其他Linux平台基本上是相同的。主要的实现方面是Android系统中的硬件抽象层(Hardware Abstract Layer),硬件抽象层对下调用Linux中的驱动程序,对上提供接口,以供Android系统的其他部分(通常为Android本地框架层)调用。

提示:Android硬件抽象层的接口是本地移植层的接口,不属于标准API,不具有向前或者向后兼容性。

在Android系统需要移植的内容,主要包含了以下的各个部分:

显示部分(Display)

包括framebuffer驱动+Gralloc模块(可选择是否实现)

用户输入部分(Input)

包括Event驱动+EventHub(Android标准内容)

多媒体编解码(Codec)

包括硬件Codec驱动+Codec插件(如OpenMax)

3D加速器部分(3D Accelerator)

包括硬件OpenGL驱动+OpenGL插件

音频部分(Audio)

包括Audio驱动+Audio硬件抽象层

视频输出部分(Video Out)

包括视频显示驱动+Overlay硬件抽象层

摄像头部分(Camera)

包括Camera驱动(通常是v4l2)+Camera硬件抽象层

电话部分(Phone)

Modem驱动程序+RIL库

全球定位系统部分(GPS)

包括GPS驱动(通常为串口)+GPS硬件抽象层

无线局域网部分(WIFI)

包括Wlan驱动和协议+WIFI的适配层(Android标准内容)

蓝牙部分(Blue Tooth)

包括BT驱动和协议+BT的适配层(Android标准内容)

传感器部分(Sensor)

包括Sensor驱动+Sensor硬件抽象层

震动器部分(Vibrator)

包括Vibrator驱动+Vibrator硬件抽象层(Android标准内容)

背光部分(Light)

包括Light驱动+ Light硬件抽象层

警告器部分(Alarm)

包括Alarm驱动和RTC系统+用户空间调用(Android标准内容)

电池部分(Battery)

包括电池部分驱动+电池的硬件抽象层(Android标准内容)

Android中具有很多组件,但并不是每一个部件都需要移植,对于一些纯软的组件,就没有移植的必要。对于一些部件,例如浏览器引擎,虽然需要下层网络的支持,但是并非直接为其移植网络接口,而是通过无线局域网或者电话系统数据连接来完成标准的网络接口。

Android的移植主要可以分成几个类型:基本图形用户界面(GUI)部分,包括显示部分和用户输入部分;和硬件相关的加速部分,包括媒体编解码和OpenGL;音视频输入输出环节,包括音频,视频输出和摄像头部分;连接部分,包括无线局域网,蓝牙,GPS;电话部分;附属部件:包括传感器、背光、振动器等。

除了以上的移植方面,电源管理也是非常重要的一个方面,它和Android的各个子系统都有关系。

Android系统主要需要移植部件如图2所示。

图2 Android系统主要需要移植部件

对于大部分子系统,硬件抽象层和驱动程序都需要根据实际系统的情况实现,例如:传感器部分、音频部分、视频部分、摄像头部分、电话部分。也有一些子系统,硬件抽象层是标准的,只需要实现Linux内核中的驱动程序即可,例如:输入部分、振动器部分、无线局域网部分、蓝牙部分等。对于有标准的硬件抽象层的系统,有的时候通常也需要做一些配置工作。

时至今日,随着Android系统的发展,它已经不仅仅是一个移动设备的平台,也可以用于消费类电子和智能家电,例如:上网本、电子书、数字电视、机顶盒、固定电话等。在这些平台上,通常需要实现比移动设备更少的部件。一般来说,基本用户界面部分(包括显示和用户输入)是需要移植的,其他部分是可选的。例如:电话系统、振动器、背光、传感器等一般不需要在非移动设备系统来实现;对于一些固定位置设备通常也不需要实现GPS系统。


 
分享到
 
 


android人机界面指南
Android手机开发(一)
Android手机开发(二)
Android手机开发(三)
Android手机开发(四)
iPhone消息推送机制实现探讨
手机软件测试用例设计实践
手机客户端UI测试分析
手机软件自动化测试研究报告
更多...   


Android高级移动应用程序
Android应用开发
Android系统开发
手机软件测试
嵌入式软件测试
Android软、硬、云整合


领先IT公司 android开发平台最佳实践
北京 Android开发技术进阶
某新能源领域企业 Android开发技术
某航天公司 Android、IOS应用软件开发
阿尔卡特 Linux内核驱动
艾默生 嵌入式软件架构设计
西门子 嵌入式架构设计
更多...