android驱动开发和移植详解

上传人:re****.1 文档编号:499444980 上传时间:2024-01-26 格式:DOCX 页数:27 大小:70.94KB
返回 下载 相关 举报
android驱动开发和移植详解_第1页
第1页 / 共27页
android驱动开发和移植详解_第2页
第2页 / 共27页
android驱动开发和移植详解_第3页
第3页 / 共27页
android驱动开发和移植详解_第4页
第4页 / 共27页
android驱动开发和移植详解_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《android驱动开发和移植详解》由会员分享,可在线阅读,更多相关《android驱动开发和移植详解(27页珍藏版)》请在金锄头文库上搜索。

1、android驱动开发和移植详解本文出处:Android底层开发技术实战详解一一内核、移植和驱动我们开发的 Android 驱动程序是基于 Linux 内核的,本文首先介绍移植 Android 系统的基本知识和基本原理 这也是为驱动开发打下坚实基础,知其然也知其所以然;最后我们将通过深入浅出的案例学习驱动开发过程。1.1 驱动开发需要做的工作Android作为当前最流行的手机操作系统之一,受到了广大开发人员和商家的青睐。Android 正在逐渐形成一个蓬勃发展的产业,带来了无限商机。既然 Android 这么火爆,我们程序员可以 学习它的哪一方面的内容呢?本书的驱动开发又属于哪一领域呢?接下来

2、将为读者奉上这两个 问题的答案。Android 是一个开放的系统,这个系统的体积非常庞大,开发人员无须掌握整个 Android 体 系中的开发知识,只需熟悉其中某一个部分即可收获自己的未来。从具体功能上划分,Android开发主要分为如下三个领域。1. 移植开发移动电话系统移植开发的目的是构建硬件系统,并且移植 Android 的软件系统,最终形成手机产品2. Android 应用程序开发应用程序开发的目的是开发出各种 Android 应用程序,然后将这些应用程序投入 Android 市 场,进行交易。Android 的应用程序开发是 Android 开发的另一个方面。从开发的角度来看,这种形

3、式的开发可以基于某个硬件系统,在没有硬件系统的情况下也可以基于 Linux 或者 Windows 下的 Android模拟器来开发。这种类型的开发工作在 Android 系统的上层。事实上,在Android软件系统中,第3个层次(Java框架)和第4个层次(Java应用)之间 的接口也就是Android的系统接口(系统API)。这个层次是标准的接口,所有的Android应用 程序都是基于这个层次的接口开发出来的。Android系统的第4个层次就是一组内置的Android 应用程序。Android 应用程序开发者开发的应用程序和 Android 系统的第 4 个层次的应用程序其实是一 个层次的内

4、容。例如,Android系统提供了基本的桌面程序,开发者可以根据Android的系统接口,实现另外一个桌面程序,提供给用户安装使用。根据 Android 系统的接口开发游戏,也是Android 底层开发技术实战详解内核、移植和驱动Android 应用程序开发的一个重要方向。 上述两种类型的开发结构如图 3-1 所示。主屏幕联系人电话活动管理器窗口管理器内容提供器包管理器电话管理器资源管理器接口管理器包管理器包管理器包管理器位图及矢量浏览器引擎2D图形引擎中间协议libc函数库显示驱动相机驱动蓝牙驱动USB驱动键盘驱动WiFi驱动浏览器应用程序视图系统通知管理器应用程序框架本地管理器XMPP服务

5、库Dalvik虚拟机器Android 运行 环境Flash内存驱动Binder IPC驱动Linux 内核层音频驱动能源管理持久层库应用程序开发移植开发各种硬件图 3-1 Android 开发的领域3. Android 系统开发系统开发的目的是升级或改造 Android 中已经存在的应用和架构,开发出有自己特色的手机 系统。例如联想手机乐 Phone 就是在 Android 基础上打造的一款适合国人使用习惯的手机系统,如图 3-2 所示。图 3-2 乐 PhoneAndroid 系统开发的一个比较典型的示例就是当系统需要某种功能时,为了给 Java 层次的应 用程序提供调用的接口,需要从底层到

6、上层的整体开发,具体步骤如下所示。增加C或者C+和本地库。定义 Java 层所需要的类(系统 API)。将所需要的代码封装成 JNI。结合 Java 类和 JNI。应用程序调用 Java 类。一定要慎重对待对 Android 系统 API 的改动工作,因为系统 API 的稍微变动就可能会涉及 Android 应用程序的兼容问题。Android 系统本身的功能也处于增加和完善的过程中,因此 Android 系统的开发也是一个重要的方面。这种类型的开发涉及Android软件系统的各个层次。在更多的时候,Android系统开 发只是在不改变系统 API 的情况下修正系统的缺陷,增加系统的稳定性。从商

7、业模式的角度来看,第一种类型的开发和第二种类型的开发是 Android 开发的主流。事 实上,移动电话的制造者主要进行第一种类型的开发,产品是 Android 实体手机;公司、个人和团体都可以进行第二种类型的开发,其产品是不同的 Android 应用程序。在 Android 的开发过程中,每一种类型的开发都只涉及整个 Android 系统的一个子集。在Android 系统中有着众多开发点,这些开发点相互独立,又有内在联系。在开发的过程中,需要 重点掌握目前开发点涉及的部分。背景说明:Android API的接口是用Java语言编写的,通常更改接口函数的格式(参数、返回值)、 常量的值等内容就相

8、当于更改系统 API。Android 是一个开放的系统,适用于从最低端直到最高端的智能手机。核心的 AndroidAPI 在每部手机上都可使用,但仍然有一些 API 接口有一些特别的适用范围:这就是 所谓的“可选 API”。在为某手机编写 Android 应用程序时,需要多少地对 Android API 进行修改,然后实现 我们需要的功能。例如使用 Android API 添加蓝牙程序和 Wi-Fi 程序。在更改 Android API 时,通常更改其接口函数的格式(参数、返回值)和常量值等内容。但是 AndroidAPI 毕竟是谷歌推出的一系列标准,为了方便以后系统的升级,建议大家不改变An

9、droid API 的格式,而是只改变 Android API 的具体行为,也就是说为这些固定的 Android API 编写各种各样的应用程序。1.2 Android 移植本书讲解的是 Android 驱动方面的开发知识,由图 3-1 可知,驱动开发是底层的应用,属于Linux 内核层的工作。因为驱动是系统和硬件之间的载体,涉及不同硬件的应用问题,所以需要 做系统移植工作。本节将简要介绍系统移植方面的有关问题。Android 底层开发技术实战详解内核、移植和驱动1.2.1 移植的任务Android 移植开发的最终目的是开发手机产品。从开发者的角度来看,这种类型的开发以具 有硬件系统为前提,在

10、硬件系统的基础上构建 Android 软件系统。这种类型的开发工作在 Android 系统的底层。在软件系统方面,主要的工作集中在以下两个方面。(1)Linux 中的相关设备驱动程序驱动程序是硬件和上层软件的接口。在 Android 手机系统中,需要基本的屏幕、触摸屏、键 盘等驱动程序,以及音频、摄像头、电话的Modem、Wi-Fi、蓝牙等多种设备驱动程序。(2)Android 本地框架中的硬件抽象层在 Android 中硬件抽象层工作在用户空间,介于驱动程序和 Android 系统之间。 Android 系统 对硬件抽象层通常都有标准的接口定义,在开发过程中,实现这些接口也就给 Androi

11、d 系统提供 了硬件抽象层。上述两个部分综合起来相互结合,共同完成了 Android 系统的软件移植。移植成功与否取决于驱动程序的品质和对Android硬件抽象层接口的理解程度。Android移植开发的工作由核心库、核心库Dalvik虚拟机、硬件抽象层、Linux内核层和硬件系统协同完成,具体结构如图3-3所示。Dalvik虚拟机硬件抽象层移植Linux内核层(各种驱动)硬件系统图 3-3 Android 移植结构1.2.2 移植的内容在Android系统中,在移植过程中主要移植驱动方面的内容。Android移植主要分为如下几 个类型。基本图形用户界面(GUI)部分:包括显示部分、用户输入部分

12、和硬件相关的加速部分,还 包括媒体编解码和 OpenGL 等。 音视频输入输出部分:包括音频、视频输出和摄像头等。连接部分:包括无线局域网、蓝牙、GPS等。 电话部分:包括通话、GSM等。 附属部件:包括传感器、背光、振动器等。 具体来说主要移植下面的内容。 Display 显示部分:包括 FrameBuffer 驱动和 Gralloc 模块。 Input 用户输入部分:包括 Event 驱动和 EventHub。 Codec 多媒体编解码:包括硬件 Codec 驱动和 Codec 插件,例如 OpenMax。 3D Accelerator(3D 加速器)部分:包括硬件 OpenGL 驱动和

13、OpenGL 插件。 Audio音频部分:包括Audio驱动和Audio硬件抽象层。 Video Out视频输出部分:包括视频显示驱动和Overlay硬件抽象层。 Camera摄像头部分:包括Camera驱动(通常是v4l2)和Camera硬件抽象层。 Phone 电话部分:包括 Modem 驱动程序和 RIL 库。 GPS 全球定位系统部分:包括 GPS 驱动(例如串口)和 GPS 硬件抽象层。 Wi-Fi 无线局域网部分:包括 Wlan 驱动和协议和 Wi-Fi 的适配层。 Blue Tooth 蓝牙部分:包括 BT 驱动和协议及 BT 的适配层。 Sensor 传感器部分:包括 Sens

14、or 驱动和 Sensor 硬件抽象层。 Vibrator 振动器部分:包括 Vibrator 驱动和 Vibrator 硬件抽象层。 Light 背光部分:包括 Light 驱动和 Light 硬件抽象层。 Alarm 警告器部分:包括 Alarm 驱动和 RTC 系统和用户空间调用。 Battery 电池部分:包括电池部分驱动和电池的硬件抽象层。注意:在 Android 系统中有很多组件,但并不是每一个组件都需要移植,例如那些纯软的组件就 不需要移植。像浏览器引擎虽然需要下层的网络支持,但是实际上并不需要直接为其移植 网络接口,而是通过无线局域网或者电话系统数据连接来完成标准的网络接口。1

15、.2.3 驱动开发的任务前面介绍了 Android 系统的基本知识和移植内容,那么究竟在驱动开发领域需要做什么工作 呢?我们的任务就是为某一个将要在 Android 系统上使用的硬件开发一个驱动程序。因为 Android 是基于 Linux 的,所以开发 Android 驱动其实就是开发 Linux 驱动。对于大部分子系统来说,硬件抽象层和驱动程序都需要根据实际系统的情况来实现,例如传感器部分、音频部分、视频部分、摄像头部分和电话部分。另外也有一些子系统的硬件抽象层是 标准的,只需实现 Linux 内核中的驱动程序即可,例如输入部分、振动器部分、无线局域网部分 和蓝牙部分等。对于有标准的硬件抽象层的系统,有的时候通常也需要做一些配置工作。随着 Android 系统的更新和发展,它已经不仅仅是一个移动设备的平台,也可以用于消费类 电子和智能家电,例如 3.0 以后的版本主要是针对平板电脑的,另外电子书、数字电视、机顶盒、 固定电话等都逐渐使用 Android 系统。在这些平台上,通常需要实现比移动设备更少的部件。一 般来说,包括显示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号