书刊介绍
《Android底层开发技术实战详解(第2版)》内容简介
《Android底层开发技术实战详解——内核、移植和驱动(第2版)》从底层原理开始讲起,结合真实的案例向读者详细介绍了Android内核、移植和驱动开发的整个流程。全书分为21章,依次讲解驱动移植的必要性,何为HAL层深入分析,Goldfish、MSM、OMAP内核和驱动解析,显示系统、输入系统、振动器系统、音频系统、视频输出系统的驱动,OpenMax多媒体和多媒体插件框架,传感器,照相机,Wi-Fi,蓝牙和GPS,电话系统,时钟系统,USB Gadget驱动,Lights光系统和Battery电池系统等。在每一章中,重点介绍了与Android驱动开发相关的底层知识,并对Android源码进行了剖析。
《Android底层开发技术实战详解——内核、移植和驱动(第2版)》适合Android研发人员及Android爱好者学习,也可以作为相关培训学校和大专院校相关专业的教学用书。
王振丽:吉林大学计算机硕士,精通C、C++、Linux、Java开发技术,擅长嵌入式系统、物联网、大数据等开发技术,对蓝牙技术、传感器、NFC数据传播、红外传输技术有独特的见解。毕业设计《大安移动机器人》成果申请国家专利,已经被广大制造业公司的精密机床设备所使用。毕业后就职于贝尔豪斯公司,负责智能家居系统的研究和开发和产品设计工作,带领团队独立开发出多款功能强大的智能家居、健康仪器、智能电视、车载设备等大型系统。在Android底层架构和驱动开发方面有着丰富的经验,著名硬件驱动开发专家。作品目录
前言
本书内容
本书特色
本书作者
第1章:Android底层开发基础
1.1、什么是驱动
1.1.1、驱动程序的魅力
1.1.2、手机中的驱动程序
1.2、开源还是不开源的问题
1.2.1、雾里看花的开源
1.2.2、从为什么选择Java谈为什么不开源驱动程序
1.2.3、对驱动开发者来说是一把双刃剑
1.3、Android和Linux
1.3.1、Linux简介
1.3.2、Android和Linux的关系
1.4、简析Linux内核
1.4.1、内核的体系结构
1.4.2、和Android密切相关的Linux内核知识
1.5、分析Linux内核源代码很有必要
1.5.1、源代码目录结构
1.5.2、Linux
3.10的特性
1.5.3、浏览源代码的工具
1.5.4、为什么用汇编语言编写内核代码
1.5.5、Linux内核的显著特性
1.5.6、学习Linux内核的方法
第2章:分析Android源代码
2.1、搭建Linux开发环境和工具
2.1.1、搭建Linux开发环境
2.1.2、设置环境变量
2.1.3、安装编译工具
2.2、获取Android源代码
2.3、分析并编译Android源代码
2.3.1、Android源代码的结构
2.3.2、编译Android源代码
2.3.3、运行Android源代码
2.3.4、实践演练——演示编译Android程序的两种方法
2.4、编译Android
Kernel
2.4.1、获取Goldfish内核代码
2.4.2、获取MSM内核代码
2.4.3、获取OMAP内核代码
2.4.4、编译Android的Linux内核
2.5、运行模拟器
2.5.1、Linux环境下运行模拟器的方法
2.5.2、模拟器辅助工具——adb
第3章:驱动需要移植
3.1、驱动开发需要做的工作
3.2、Android移植
3.2.1、移植的任务
3.2.2、移植的内容
3.2.3、驱动开发的任务
3.3、Android对Linux的改造
3.3.1、Android对Linux内核文件的改动
3.3.2、为Android构建Linux的操作系统
3.4、内核空间和用户空间接口是一个媒介
3.4.1、内核空间和用户空间的相互作用
3.4.2、系统和硬件之间的交互
3.4.3、使用Relay实现内核到用户空间的数据传输
3.5、三类驱动程序
3.5.1、字符设备驱动程序
3.5.2、块设备驱动程序
3.5.3、网络设备驱动程序
第4章:HAL层深入分析
4.1、认识HAL层
4.1.1、HAL层的发展
4.1.2、过去和现在的区别
4.2、分析HAL层源代码
4.2.1、分析HAL
moudle
4.2.2、分析mokoid工程
4.3、总结HAL层的使用方法
4.4、传感器在HAL层的表现
4.4.1、HAL层的Sensor代码
4.4.2、总结Sensor编程的流程
4.4.3、分析Sensor源代码看Android
API与硬件平台的衔接
4.5、移植总结
4.5.1、移植各个Android部件的方式
4.5.2、移植技巧之一——不得不说的辅助工作
4.6、开发一个硬件驱动程序
4.6.1、源代码文件wuming.h和wuming.c
4.6.2、编译配置处理
4.6.3、修改配置文件
4.6.4、验证驱动程序
第5章:分析Goldfish内核系统
5.1、Android专有驱动介绍
5.2、Goldfish基础
5.3、Android专用驱动简介
5.3.1、Logger驱动介绍
5.3.2、Low
Memory
Killer组件介绍
5.3.3、Timed
Output驱动介绍
5.3.4、Timed
Gpio驱动介绍
5.3.5、Ram
Console驱动介绍
5.4、Ashmem驱动介绍
5.5、Pmem驱动介绍
5.6、Alarm驱动程序
5.7、USB
Gadget驱动程序
5.8、Paranoid驱动介绍
5.9、Goldfish的设备驱动
第6章:MSM内核和驱动解析
6.1、MSM基础
6.1.1、常见MSM处理器产品
6.1.2、Snapdragon内核介绍
6.2、移植MSM内核简介
6.3、移植MSM
6.3.1、Makefile文件
6.3.2、驱动和组件
6.3.3、设备驱动
6.3.4、高通特有的组件
第7章:OMAP内核和驱动解析
7.1、OMAP基础
7.1.1、OMAP简析
7.1.2、常见OMAP处理器产品
7.1.3、开发平台
7.2、OMAP内核
7.3、移植OMAP体系结构
7.3.1、移植OMAP平台
7.3.2、移植OMAP处理器
7.4、移植Android专用驱动和组件
7.5、OMAP的设备驱动
7.5.1、显示驱动程序
7.5.2、I2C总线驱动程序
7.5.3、摄像头和视频输出驱动程序
7.5.4、触摸屏和键盘驱动程序
7.5.5、实时时钟驱动程序
7.5.6、音频驱动程序
7.5.7、蓝牙驱动程序
第8章:显示系统驱动应用
8.1、显示系统介绍
8.2、分析内核层
8.2.1、分析接口文件fb.h
8.2.2、分析内核实现文件fbmem.c
8.3、分析硬件抽象层
8.3.1、分析头文件
8.3.2、分析硬件帧缓冲区
8.3.3、实现缓冲区的分配
8.3.4、显示缓冲映射
8.3.5、分析管理库文件LayerBuffer.cpp
8.4、分析显示系统的驱动程序
8.4.1、Goldfish中的FrameBuffer驱动程序
8.4.2、使用Gralloc模块的驱动程序
8.4.3、分析MSM高通处理器中的显示驱动实现
8.4.4、分析OMAP处理器中的显示驱动实现
第9章:输入系统驱动应用
9.1、输入系统介绍
9.1.1、Android输入系统结构元素介绍
9.1.2、移植Android输入系统时的工作
9.2、分析Input(输入)系统驱动
9.2.1、分析头文件
9.2.2、分析核心文件input.c
9.2.3、分析event机制
9.3、分析硬件抽象层
9.3.1、分析文件KeycodeLabels.h
9.3.2、分析文件KeyCharacterMap.h
9.3.3、分析Kl格式文件
9.3.4、分析kcm格式文件
9.3.5、分析文件EventHub.cpp
第10章:振动器系统驱动
10.1、振动器系统结构
10.2、分析硬件抽象层
10.3、分析JNI层部分
10.4、分析Java层部分
10.5、实现移植工作
10.5.1、移植振动器驱动程序
10.5.2、实现硬件抽象层
10.6、在MSM平台实现振动器驱动
第11章:音频系统驱动
11.1、音频系统结构
11.2、分析音频系统的层次
11.2.1、层次说明
11.2.2、Media库中的Audio框架
11.2.3、本地代码
11.2.4、分析JNI代码
11.2.5、Java层代码简介
11.3、移植Audio系统的工作
11.3.1、我们的工作
11.3.2、分析硬件抽象层
11.3.3、分析AudioFlinger中的Audio硬件抽象层的实现
11.3.4、真正实现Audio硬件抽象层
11.4、在MSM平台实现Audio驱动系统
11.4.1、实现Audio驱动程序
11.4.2、实现硬件抽象层
第12章:视频输出系统驱动
12.1、视频输出系统结构
12.2、需要移植的部分
12.3、分析硬件抽象层
12.3.1、Overlay系统硬件抽象层的接口
12.3.2、实现Overlay系统的硬件抽象层
12.3.3、实现接口
12.4、实现Overlay硬件抽象层
12.5、在OMAP平台实现Overlay系统
12.5.1、实现输出视频驱动程序
12.5.2、实现Overlay硬件抽象层
12.6、系统层调用Overlay
HAL的架构
12.6.1、调用Overlay
HAL的架构的流程
12.6.2、S3C6410、Android
Overlay的测试代码
第13章:OpenMax多媒体框架
13.1、OpenMax基本层次结构
13.2、分析OpenMax框架构成
13.2.1、OpenMax总体层次结构
13.2.2、OpenMax
IL层的结构
13.2.3、Android中的OpenMax
13.3、实现OpenMax
IL层接口
13.3.1、OpenMax
IL层的接口
13.3.2、在OpenMax
IL层中需要做什么
13.3.3、研究Android中的OpenMax适配层
13.4、在OMAP平台实现OpenMax
IL
13.4.1、实现文件
13.4.2、分析TI
OpenMax
IL的核心
13.4.3、实现TI
OpenMax
IL组件实例
第14章:多媒体插件框架
14.1、Android多媒体插件
14.2、需要移植的内容
14.3、OpenCore引擎
14.3.1、OpenCore层次结构
14.3.2、OpenCore代码结构
14.3.3、OpenCore编译结构
14.3.4、OpenCore
OSCL
14.3.5、实现OpenCore中的OpenMax部分
14.3.6、OpenCore的扩展
14.4、Stagefright引擎
14.4.1、Stagefright代码结构
14.4.2、Stagefright实现OpenMax接口
14.4.3、Video
Buffer传输流程
第15章:传感器系统
15.1、传感器系统的结构
15.2、分析需要移植的内容
15.2.1、移植驱动程序
15.2.2、移植硬件抽象层
15.2.3、实现上层部分
15.3、在模拟器中实现传感器驱动
第16章:照相机系统
16.1、Camera系统的结构
16.2、分析需要移植的内容
16.3、移植和调试
16.3.1、V4L2驱动程序
16.3.2、硬件抽象层
16.4、实现Camera系统的硬件抽象层
16.4.1、Java程序部分
16.4.2、Camera的Java本地调用部分
16.4.3、Camera的本地库libui.so
16.4.4、Camera服务libcameraservice.so
16.5、在MSM平台实现Camera驱动系统
16.6、在OMAP平台实现Camera驱动系统
第17章:Wi-Fi系统、蓝牙系统和GPS系统
17.1、Wi-Fi系统
17.1.1、Wi-Fi系统的结构
17.1.2、需要移植的内容
17.1.3、移植和调试
17.1.4、OMAP平台实现Wi-Fi
17.1.5、配置Wi-Fi的流程
17.1.6、具体演练——在Android下实现Ethernet
17.2、蓝牙系统
17.2.1、蓝牙系统的结构
17.2.2、需要移植的内容
17.2.3、具体移植
17.2.4、MSM平台的蓝牙驱动
17.3、定位系统
17.3.1、定位系统的结构
17.3.2、分析需要移植的内容
17.3.3、分析驱动程序
17.3.4、分析硬件抽象层
17.3.5、分析上层应用部分
第18章:电话系统
18.1、电话系统基础
18.1.1、电话系统简介
18.1.2、电话系统结构
18.2、需要移植的内容
18.3、移植和调试
18.3.1、驱动程序
18.3.2、RIL接口
18.4、电话系统实现流程分析
18.4.1、初始启动流程
18.4.2、request流程
18.4.3、response流程
第19章:分析时钟系统驱动
19.1、Alarm系统基础
19.1.1、Alarm层次结构介绍
19.1.2、我们需要移植的内容
19.2、分析RTC驱动程序
19.3、分析Alarm驱动程序
19.3.1、分析文件android_alarm.h
19.3.2、分析文件alarm.c
19.3.3、分析文件alarm-dev.c
19.4、分析JNI层
19.5、分析Java层
19.5.1、分析AlarmManagerService类
19.5.2、分析AlarmManager类
19.6、模拟器环境的具体实现
第20章:分析USB
Gadget驱动
20.1、分析Linux内核的USB驱动程序
20.1.1、USB设备基础
20.1.2、分析USB和sysfs的联系
20.1.3、分析urb通信方式
20.1.4、分析USB驱动的例程
20.2、分析USB
Gadget驱动
20.2.1、分析软件结构
20.2.2、层次整合
20.2.3、USB设备枚举
第21章:其他系统
21.1、Lights光系统
21.1.1、Lights光系统的结构
21.1.2、需要移植的内容
21.1.3、移植和调试
21.1.4、MSM平台实现光系统
21.2、Battery电池系统
21.2.1、Battery系统的结构
21.2.2、需要移植的内容
21.2.3、移植和调试
21.2.4、在模拟器中实现电池系统