kindle电子书

资源下载,尽在我的书库!
首页 > kindle电子书库 > 工业|计算机|互联网 > 电子、计算机、网络

Android底层开发技术实战详解:内核、移植和驱动(第2版)

  • 作者:[中] 王振丽
  • 体积:14.81 MB
  • 语言:中文
  • 日期:2017-05-27
  • 推荐:

简介:本书从底层原理开始讲起,结合真实的案例向读者详细介绍了Android内核、移植和驱动开发的整个流程。全书分为21章,依次讲解驱动移植的必要性, Goldfish、OMAP内核和驱动解析,显示系统、输入系统、振动器系统、音频系统、视频输出系统的驱动,OpenMax多媒体和多媒体插件框架,传感器,照相机,Wi-Fi,蓝牙和GPS,USB Gadget驱动,Lights光系统和Battery电池系统等。在每一章中,重点介绍了与Android驱动开发相关的底层知识,并对Android源码进行了剖析。

电子书详细介绍

本书从底层原理开始讲起,结合真实的案例向读者详细介绍了Android内核、移植和驱动开发的整个流程。全书分为21章,依次讲解驱动移植的必要性, Goldfish、OMAP内核和驱动解析,显示系统、输入系统、振动器系统、音频系统、视频输出系统的驱动,OpenMax多媒体和多媒体插件框架,传感器,照相机,Wi-Fi,蓝牙和GPS,USB Gadget驱动,Lights光系统和Battery电池系统等。在每一章中,重点介绍了与Android驱动开发相关的底层知识,并对Android源码进行了剖析。

作者简介

吉林大学计算机硕士,精通C、C++、Linux、Java开发技术,擅长嵌入式系统、物联网、大数据等开发技术,对蓝牙技术、传感器、NFC数据传播、红外传输技术有独特的见解。毕业设计《大安移动机器人》成果申请国家专利,已经被广大制造业公司的精密机床设备所使用。毕业后就职于贝尔豪斯公司,负责智能家居系统的研究和开发和产品设计工作,带领团队独立开发出多款功能强大的智能家居、健康仪器、智能电视、车载设备等大型系统。在Android底层架构和驱动开发方面有着丰富的经验,著名硬件驱动开发专家。

目录

第1章 Android底层开发基础1 
1.1 什么是驱动1 
1.1.1 驱动程序的魅力1 
1.1.2 手机中的驱动程序2 
1.2 开源还是不开源的问题2 
1.2.1 雾里看花的开源2 
1.2.2 从为什么选择Java谈为什么不 
开源驱动程序3 
1.2.3 对驱动开发者来说是一把双刃剑4 
1.3 Android和Linux4 
1.3.1 Linux简介4 
1.3.2 Android和Linux的关系5 
1.4 简析Linux内核7 
1.4.1 内核的体系结构7 
1.4.2 和Android密切相关的Linux 
内核知识9 
1.5 分析Linux内核源代码很有必要13 
1.5.1 源代码目录结构14 
1.5.2 Linux 3.10的特性16 
1.5.3 浏览源代码的工具17 
1.5.4 为什么用汇编语言编写内核代码17 
1.5.5 Linux内核的显著特性18 
1.5.6 学习Linux内核的方法26 
第2章 分析Android源代码31 
2.1 搭建Linux开发环境和工具31 
2.1.1 搭建Linux开发环境31 
2.1.2 设置环境变量32 
2.1.3 安装编译工具32 
2.2 获取Android源代码33 
2.3 分析并编译Android源代码35 
2.3.1 Android源代码的结构35 
2.3.2 编译Android源代码40 
2.3.3 运行Android源代码42 
2.3.4 实践演练——演示编译Android 
程序的两种方法43 
2.4 编译Android Kernel46 
2.4.1 获取Goldfish内核代码47 
2.4.2 获取MSM内核代码49 
2.4.3 获取OMAP内核代码49 
2.4.4 编译Android的Linux内核50 
2.5 运行模拟器51 
2.5.1 Linux环境下运行模拟器的方法52 
2.5.2 模拟器辅助工具——adb53 
第3章 驱动需要移植56 
3.1 驱动开发需要做的工作56 
3.2 Android移植58 
3.2.1 移植的任务59 
3.2.2 移植的内容59 
3.2.3 驱动开发的任务60 
3.3 Android对Linux的改造60 
3.3.1 Android对Linux内核文件的改动61 
3.3.2 为Android构建Linux的操作系统62 
3.4 内核空间和用户空间接口是一个媒介63 
3.4.1 内核空间和用户空间的相互作用63 
3.4.2 系统和硬件之间的交互63 
3.4.3 使用Relay实现内核到用户空 
间的数据传输65 
3.5 三类驱动程序68 
3.5.1 字符设备驱动程序68 
3.5.2 块设备驱动程序76 
3.5.3 网络设备驱动程序80 
第4章 HAL层深入分析81 
4.1 认识HAL层81 
4.1.1 HAL层的发展81 
4.1.2 过去和现在的区别83 
4.2 分析HAL层源代码83 
4.2.1 分析HAL moudle83 
4.2.2 分析mokoid工程87 
4.3 总结HAL层的使用方法95 
4.4 传感器在HAL层的表现97 
4.4.1 HAL层的Sensor代码98 
4.4.2 总结Sensor编程的流程99 
4.4.3 分析Sensor源代码看Android API 
与硬件平台的衔接100 
4.5 移植总结110 
4.5.1 移植各个Android部件的方式110 
4.5.2 移植技巧之一——不得不说的 
辅助工作111 
4.6 开发一个硬件驱动程序117 
4.6.1 源代码文件wuming.h和 
wuming.c117 
4.6.2 编译配置处理123 
4.6.3 修改配置文件124 
4.6.4 验证驱动程序125 
第5章 分析Goldfish内核系统127 
5.1 Android专有驱动介绍127 
5.2 Goldfish基础128 
5.3 Android专用驱动简介130 
5.3.1 Logger驱动介绍130 
5.3.2 Low Memory Killer组件介绍130 
5.3.3 Timed Output驱动介绍131 
5.3.4 Timed Gpio驱动介绍131 
5.3.5 Ram Console驱动介绍132 
5.4 Ashmem驱动介绍133 
5.5 Pmem驱动介绍133 
5.6 Alarm驱动程序134 
5.7 USB Gadget驱动程序134 
5.8 Paranoid驱动介绍135 
5.9 Goldfish的设备驱动136 
第6章 MSM内核和驱动解析139 
6.1 MSM基础139 
6.1.1 常见MSM处理器产品139 
6.1.2 Snapdragon内核介绍140 
6.2 移植MSM内核简介141 
6.3 移植MSM143 
6.3.1 Makefile文件143 
6.3.2 驱动和组件144 
6.3.3 设备驱动146 
6.3.4 高通特有的组件148 
第7章 OMAP内核和驱动解析151 
7.1 OMAP基础151 
7.1.1 OMAP简析151 
7.1.2 常见OMAP处理器产品151 
7.1.3 开发平台152 
7.2 OMAP内核152 
7.3 移植OMAP体系结构154 
7.3.1 移植OMAP平台154 
7.3.2 移植OMAP处理器157 
7.4 移植Android专用驱动和组件161 
7.5 OMAP的设备驱动162 
7.5.1 显示驱动程序162 
7.5.2 I2C总线驱动程序162 
7.5.3 摄像头和视频输出驱动程序164 
7.5.4 触摸屏和键盘驱动程序165 
7.5.5 实时时钟驱动程序166 
7.5.6 音频驱动程序166 
7.5.7 蓝牙驱动程序166 
第8章 显示系统驱动应用167 
8.1 显示系统介绍167 
8.2 分析内核层168 
8.2.1 分析接口文件fb.h168 
8.2.2 分析内核实现文件fbmem.c171 
8.3 分析硬件抽象层195 
8.3.1 分析头文件195 
8.3.2 分析硬件帧缓冲区197 
8.3.3 实现缓冲区的分配199 
8.3.4 显示缓冲映射200 
8.3.5 分析管理库文件LayerBuffer.cpp201 
8.4 分析显示系统的驱动程序202 
8.4.1 Goldfish中的FrameBuffer驱 
动程序203 
8.4.2 使用Gralloc模块的驱动程序205 
8.4.3 分析MSM高通处理器中的显 
示驱动实现215 
8.4.4 分析OMAP处理器中的显示 
驱动实现225 
第9章 输入系统驱动应用228 
9.1 输入系统介绍228 
9.1.1 Android输入系统结构元素介绍228 
9.1.2 移植Android输入系统时的工作229 
9.2 分析Input(输入)系统驱动230 
9.2.1 分析头文件230 
9.2.2 分析核心文件input.c234 
9.2.3 分析event机制249 
9.3 分析硬件抽象层251 
9.3.1 分析文件KeycodeLabels.h252 
9.3.2 分析文件KeyCharacterMap.h256 
9.3.3 分析Kl格式文件257 
9.3.4 分析kcm格式文件258 
9.3.5 分析文件EventHub.cpp258 
第10章 振动器系统驱动263 
10.1 振动器系统结构263 
10.2 分析硬件抽象层265 
10.3 分析JNI层部分266 
10.4 分析Java层部分267 
10.5 实现移植工作271 
10.5.1 移植振动器驱动程序271 
10.5.2 实现硬件抽象层271 
10.6 在MSM平台实现振动器驱动272 
第11章 音频系统驱动276 
11.1 音频系统结构276 
11.2 分析音频系统的层次277 
11.2.1 层次说明277 
11.2.2 Media库中的Audio框架278 
11.2.3 本地代码280 
11.2.4 分析JNI代码283 
11.2.5 Java层代码简介284 
11.3 移植Audio系统的工作285 
11.3.1 我们的工作285 
11.3.2 分析硬件抽象层285 
11.3.3 分析AudioFlinger中的Audio 
硬件抽象层的实现287 
11.3.4 真正实现Audio硬件抽象层293 
11.4 在MSM平台实现Audio驱动系统293 
11.4.1 实现Audio驱动程序293 
11.4.2 实现硬件抽象层294 
第12章 视频输出系统驱动299 
12.1 视频输出系统结构299 
12.2 需要移植的部分301 
12.3 分析硬件抽象层301 
12.3.1 Overlay系统硬件抽象层的接口301 
12.3.2 实现Overlay系统的硬件抽象层304 
12.3.3 实现接口305 
12.4 实现Overlay硬件抽象层306 
12.5 在OMAP平台实现Overlay系统307 
12.5.1 实现输出视频驱动程序307 
12.5.2 实现Overlay硬件抽象层309 
12.6 系统层调用Overlay HAL的架构314 
12.6.1 调用Overlay HAL的架构的 
流程314 
12.6.2 S3C6410 Android Overlay的 
测试代码317 
第13章 OpenMax多媒体框架320 
13.1 OpenMax基本层次结构320 
13.2 分析OpenMax框架构成321 
13.2.1 OpenMax总体层次结构321 
13.2.2 OpenMax IL层的结构322 
13.2.3 Android中的OpenMax325 
13.3 实现OpenMax IL层接口325 
13.3.1 OpenMax IL层的接口325 
13.3.2 在OpenMax IL层中需要做什么331 
13.3.3 研究Android中的OpenMax 
适配层332 
13.4 在OMAP平台实现OpenMax IL334 
13.4.1 实现文件334 
13.4.2 分析TI OpenMax IL的核心335 
13.4.3 实现TI OpenMax IL组件实例338 
第14章 多媒体插件框架343 
14.1 Android多媒体插件343 
14.2 需要移植的内容344 
14.3 OpenCore引擎345 
14.3.1 OpenCore层次结构345 
14.3.2 OpenCore代码结构346 
14.3.3 OpenCore编译结构347 
14.3.4 OpenCore OSCL351 
14.3.5 实现OpenCore中的OpenMax 
部分353 
14.3.6 OpenCore的扩展366 
14.4 Stagefright引擎371 
14.4.1 Stagefright代码结构372 
14.4.2 Stagefright实现OpenMax接口372 
14.4.3 Video Buffer传输流程376 
第15章 传感器系统381 
15.1 传感器系统的结构381 
15.2 分析需要移植的内容383 
15.2.1 移植驱动程序383 
15.2.2 移植硬件抽象层384 
15.2.3 实现上层部分385 
15.3 在模拟器中实现传感器驱动389 
第16章 照相机系统395 
16.1 Camera系统的结构395 
16.2 分析需要移植的内容397 
16.3 移植和调试398 
16.3.1 V4L2驱动程序398 
16.3.2 硬件抽象层405 
16.4 实现Camera系统的硬件抽象层409 
16.4.1 Java程序部分409 
16.4.2 Camera的Java本地调用部分410 
16.4.3 Camera的本地库libui.so411 
16.4.4 Camera服务libcameraservice.so412 
16.5 在MSM平台实现Camera驱动系统416 
16.6 在OMAP平台实现Camera驱动系统419 
第17章 Wi—Fi系统、蓝牙系统和 
GPS系统421 
17.1 Wi—Fi系统421 
17.1.1 Wi—Fi系统的结构421 
17.1.2 需要移植的内容423 
17.1.3 移植和调试423 
17.1.4 OMAP平台实现Wi—Fi430 
17.1.5 配置Wi—Fi的流程432 
17.1.6 具体演练——在Android下 
实现Ethernet435 
17.2 蓝牙系统436 
17.2.1 蓝牙系统的结构437 
17.2.2 需要移植的内容438 
17.2.3 具体移植439 
17.2.4 MSM平台的蓝牙驱动441 
17.3 定位系统443 
17.3.1 定位系统的结构443 
17.3.2 分析需要移植的内容445 
17.3.3 分析驱动程序445 
17.3.4 分析硬件抽象层445 
17.3.5 分析上层应用部分448 
第18章 电话系统457 
18.1 电话系统基础457 
18.1.1 电话系统简介457 
18.1.2 电话系统结构459 
18.2 需要移植的内容460 
18.3 移植和调试460 
18.3.1 驱动程序461 
18.3.2 RIL接口462 
18.4 电话系统实现流程分析465 
18.4.1 初始启动流程465 
18.4.2 request流程467 
18.4.3 response流程470 
第19章 分析时钟系统驱动472 
19.1 Alarm系统基础472 
19.1.1 Alarm层次结构介绍472 
19.1.2 我们需要移植的内容474 
19.2 分析RTC驱动程序474 
19.3 分析Alarm驱动程序475 
19.3.1 分析文件android_alarm.h475 
19.3.2 分析文件alarm.c476 
19.3.3 分析文件alarm—dev.c488 
19.4 分析JNI层497 
19.5 分析Java层498 
19.5.1 分析AlarmManagerService类499 
19.5.2 分析AlarmManager类508 
19.6 模拟器环境的具体实现509 
第20章 分析USB Gadget驱动511 
20.1 分析Linux内核的USB驱动程序511 
20.1.1 USB设备基础511 
20.1.2 分析USB 和sysfs的联系516 
20.1.3 分析urb通信方式518 
20.1.4 分析USB驱动的例程524 
20.2 分析USB Gadget驱动536 
20.2.1 分析软件结构536 
20.2.2 层次整合546 
20.2.3 USB设备枚举557 
第21章 其他系统573 
21.1 Lights光系统573 
21.1.1 Lights光系统的结构573 
21.1.2 需要移植的内容574 
21.1.3 移植和调试575 
21.1.4 MSM平台实现光系统577 
21.2 Battery电池系统577 
21.2.1 Battery系统的结构578 
21.2.2 需要移植的内容579 
21.2.3 移植和调试579 
21.2.4 在模拟器中实现电池系统582

我来说两句

本书评论

共有 0 条评论
图书分类
我的书库手机端
帮助中心
会员登录 ×
新用户注册 ×