Android硬件抽象层(HAL)概要介绍和学习计划 下载本文

内容发布更新时间 : 2024/11/19 2:22:00星期一 下面是文章的全部内容请认真阅读。

Android硬件抽象层(HAL)概要介绍和学习

Linux公社

Author:Luoshengyang, Collator:lyc900623 2012/3/23

Android硬件抽象层(HAL)概要介绍和学习

目录

准备工作 ................................................................................................................................... 5 第一章

1. 2. 3. 4. 5. 第二章

1. 2. 3. 4.

在Ubuntu上下载、编译和安装Android最新源代码 ...................................... 5 环境准备。 ............................................................................................................... 5 下载Android源代码工程。 .................................................................................... 6 编译Android源代码。 ............................................................................................ 6 编译SDK,这一步是可选的。 ............................................................................... 8 安装编译好的Android镜像到模拟器上。 ............................................................ 9 在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel) 10 首选 ......................................................................................................................... 10 下载Linux Kernel for Android源代码 ................................................................... 11 编译内核代码。 ..................................................................................................... 12 在模拟器中运行编译好的内核。 ......................................................................... 12

开始驱动之旅 ......................................................................................................................... 13 第三章

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 第四章

1. 2. 3.

在Ubuntu上为Android系统编写Linux内核驱动程序 ................................. 15 准备Android内核驱动程序开发环境 .................................................................. 15 新建hello目录 ....................................................................................................... 15 在hello目录中增加hello.h文件: ...................................................................... 15 三种访问设备寄存器的方法 ................................................................................. 16 在hello目录中新增Kconfig和Makefile两个文件 ............................................. 28 修改arch/arm/Kconfig和drivers/kconfig两个文件 ............................................ 29 修改drivers/Makefile文件 .................................................................................... 29 配置编译选项 ......................................................................................................... 29 编译 ......................................................................................................................... 29 验证hello驱动程序是否已经正常安装 ........................................................... 30 在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序 . 31 准备好Linux驱动程序 .......................................................................................... 31 创建hello目录 ....................................................................................................... 32 在hello目录中新建hello.c文件 .......................................................................... 32

Android硬件抽象层(HAL)概要介绍和学习

4. 5. 6. 7. 第五章 序

1. 2. 3. 4. 5. 6.

第六章 件服务接口

1. 2. 3. 4. 5. 第七章

1. 2. 3. 4. 5. 6. 7.

在hello目录中新建Android.mk文件 .................................................................. 33 单独编译该模块 ..................................................................................................... 33 重新打包Android系统文件 .................................................................................. 33 运行模拟器 ............................................................................................................. 34 在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程34

准备好示例内核驱动序 ......................................................................................... 34 新建hello.h文件 .................................................................................................... 35 新建hello目录 ....................................................................................................... 36 在hello目录下新建Android.mk文件 .................................................................. 40 编译 ......................................................................................................................... 40 重新打包Android系统镜像 .................................................................................. 40 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬41

准备好硬件抽象层模块 ......................................................................................... 41 新建com_android_server_HelloService.cpp文件 ................................................ 41 修改同目录下的onload.cpp文件 ......................................................................... 44 修改同目录下的Android.mk文件 ........................................................................ 45 编译和重新打包system.img .................................................................................. 45 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务45

为硬件抽象层模块准备好JNI方法调用层 .......................................................... 46 定义通信接口 ......................................................................................................... 46 修改Android.mk文件 ............................................................................................ 46 编译IHelloService.aidl接口 ................................................................................... 47 新增HelloService.java文件 ................................................................................... 47 修改同目录的SystemServer.java文件 .................................................................. 48 编译HelloService和重新打包system.img ............................................................ 49

第八章 在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks

层的硬件服务 49

1.

定义硬件服务并提供接口 ..................................................................................... 49

Android硬件抽象层(HAL)概要介绍和学习

2. 3. 4. 5. 6.

使用Eclipse的ADT 创建Android工程Hello ...................................................... 50 新增Android.mk文件 ............................................................................................ 55 编译 ......................................................................................................................... 55 重新打包系统镜像文件 ......................................................................................... 56 运行Android模拟器 .............................................................................................. 56

附录......................................................................................................................................... 57

如何单独编译Android源代码中的模块 ...................................................................... 57

Android硬件抽象层(HAL)概要介绍和学习

准备工作

http://www.linuxidc.com/Linux/2011-07/38979.htm

第一章 在Ubuntu上下载、编译和安装

Android最新源代码

看完了前面说的几本书之后(相关PDF书籍下载见

http://www.linuxidc.com/Linux/2011-06/37775.htm),对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源代码了呢?一直习惯使用Windows系统, 而Android源代码是不支持在Windows上编译上,于是决定使用虚拟机安装Ubuntu,然后下载、编译和安装Android源代码。

1. 环境准备。

? 磁盘空间预留10G左右,内存3G,因为一边要跑主机,一边要跑虚拟机,内

存要求还是比较高的,这样才会比较流畅。

? 安装VMWare 7.1.4。我的操作系统是Win7,VMWare的版本要新一点的,旧

版本的VMWare在网络支持上比较差,由于要在虚拟机上下载Android源代码,没有网络是万万不行的。

? 安装好VMWare后,接下来就安装Ubuntu系统了。我选择目前最新的版本

ubuntu-11.04-alternate-i386,从网上查到的资 料说,要编译Android源代码,Ubuntu的最低版本是8.04。下载好后,安装时采用一直默认安装即可。

? 安装Git工具。

Android源代码采用Git工具来管理,与SVN相比,这是一种分布式的源代码管理工具,而SVN是集中式的源代码管理工具。要安装Git工具,在Ubuntu上执行以下命令即可:

user@pc:~$ sudo apt-get install git-core gnupg ? 安装Java SDK。 在Ubuntu上执行以下命令:

user@pc:~$ sudo add-apt-repository ppa:ferramroberto/java user@pc:~$ sudo apt-get update user@pc:~$ sudo apt-get install sun-java6-jre sun-java6-plugin user@pc:~$ sudo apt-get install sun-java6-jdk