当前位置:首页 > 工业技术
Android驱动开发与移植实战详解
Android驱动开发与移植实战详解

Android驱动开发与移植实战详解PDF电子书下载

工业技术

  • 电子书积分:17 积分如何计算积分?
  • 作 者:李骏,陈小玉编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2012
  • ISBN:9787115283610
  • 页数:554 页
图书介绍:本书通过对Android底层的开发技术介绍,通过10个大型的案例详细讲解了驱动开发的应用,让读者学会如何驾驭复杂的应用程序,这些特性是目前市面上的一些书籍所没有的。
《Android驱动开发与移植实战详解》目录

第1章 迅猛发展的Android系统 1

1.1 智能手机世界 1

1.1.1 何谓智能手机 1

1.1.2 当前主流智能手机系统 1

1.2 Android的自身优势 3

1.2.1 开源 3

1.2.2 强大的开发团队支持 3

1.2.3 实行奖励机制 4

1.3 认识驱动 4

1.4 分析Android架构 5

1.4.1 操作系统层(OS) 5

1.4.2 各种库和Android运行环境 6

1.4.3 应用程序 7

1.4.4 应用程序框架 7

1.5 开源的问题 8

1.5.1 雾里看花的开源 8

1.5.2 从选择Java开始谈为什么不开源驱动程序 8

1.5.3 对驱动开发者的影响 9

第2章 简要分析Linux内核 10

2.1 Linux基础 10

2.1.1 Linux历史简介 10

2.1.2 主要版本 10

2.1.3 Linux的发展机遇 11

2.2 Android和Linux的关系 11

2.2.1 Android继承于Linux 12

2.2.2 Android和Linux内核的区别 12

2.3 Linux内核简介 14

2.3.1 内核的体系结构 14

2.3.2 和Android相关的Linux内核知识 17

2.4 分析Linux内核源码 20

2.4.1 源码目录结构 21

2.4.2 浏览源码的工具 23

2.4.3 用汇编语言编写内核代码 24

2.4.4 Linux内核的显著特性 24

2.4.5 学习Linux内核的过程 32

第3章 开始分析Android源码 37

3.1 搭建Linux开发环境和工具 37

3.1.1 搭建Linux开发环境 37

3.1.2 设置环境变量 38

3.1.3 安装编译工具 38

3.2 获取Android源码 39

3.3 分析Android源码结构 41

3.4 编译Android源码 46

3.5 运行Android源码 48

3.6 实践演练——演示两种编译Android程序的方法 49

3.6.1 编译NativeC的helloworld模块 49

3.6.2 手工编译C模块 50

3.7 编译Android Kernel 53

3.7.1 获取Goldfish内核代码 53

3.7.2 获取MSM内核代码 56

3.7.3 获取OMAP内核代码 56

3.7.4 编译Android的Linux内核 56

3.8 运行模拟器 58

3.8.1 Linux环境下运行模拟器的方法 58

3.8.2 模拟器辅助工具——ADB 59

第4章 驱动移植 62

4.1 Android移植 62

4.1.1 移植的任务 62

4.1.2 移植的内容 62

4.1.3 驱动开发需要做的工作 63

4.2 Android对Linux的改造 64

4.2.1 Android的核心驱动 64

4.2.2 为Android构建Linux操作系统 67

4.3 内核空间和用户空间接口 68

4.3.1 实现系统和硬件之间的交互 68

4.3.2 实现内核到用户空间的数据传输 70

4.4 三类驱动程序 74

4.4.1 字符设备驱动 74

4.4.2 块设备驱动 82

4.4.3 网络设备驱动 86

第5章 深入详解HAL层 87

5.1 初识HAL层 87

5.1.1 HAL层简介 87

5.1.2 比较HAL_legacy和HAL 89

5.2 分析HAL层源码 89

5.2.1 分析HAL module 89

5.2.2 分析mokoid工程 92

5.3 Sensor在HAL层的表现 101

5.3.1 HAL层的Sensor代码 101

5.3.2 总结Sensor编程的流程 103

5.4 移植总结 104

5.4.1 移植各个Android部件的方式 104

5.4.2 辅助工作 105

第6章 常见的驱动平台 112

6.1 专用驱动 112

6.1.1 Binder驱动程序 112

6.1.2 Logger驱动 122

6.1.3 组件Lowmemorykiller 123

6.1.4 Timed Output驱动程序 123

6.1.5 Timed Gpio驱动程序 125

6.1.6 唤醒和休眠 126

6.1.7 Ashmem驱动程序 130

6.1.8 Pmem驱动程序 133

6.1.9 Alarm驱动程序 134

6.1.10 USB Gadget驱动程序 136

6.1.11 Android Paranoid驱动程序 137

6.2 Goldfish设备驱动 138

6.3 MSM内核和驱动 146

6.3.1 MSM基础 146

6.3.2 移植MSM内核 148

6.3.3 移植MSM 150

6.3.4 高通特有的组件 156

6.4 OMAP内核和驱动 157

6.4.1 OMAP基础 157

6.4.2 OMAP内核 159

6.4.3 移植OMAP体系结构 161

6.4.4 移植Android专用驱动和组件 168

6.4.5 OMAP的设备驱动 169

第7章 输入系统驱动 175

7.1 输入系统介绍 175

7.1.1 Android输入系统结构元素介绍 175

7.1.2 Android输入系统驱动 176

7.1.3 Input系统的层次结构 177

7.1.4 移植工作 177

7.2 Input驱动源码分析 178

7.2.1 文件input.h 178

7.2.2 文件KeycodeLabels.h 182

7.2.3 文件KeyCharacterMap.h 186

7.2.4 Kl格式文件 187

7.2.5 kcm格式文件 188

7.2.6 文件EventHub.cpp 188

7.3 Input设备的运作过程 191

7.3.1 Input设备的注册(硬件驱动层) 192

7.3.2 Input子系统的加载过程(子系统核心层) 192

7.3.3 Input子系统的事件处理(事件处理层) 194

7.4 模拟器的输入驱动 198

7.5 高通平台的输入驱动实现 199

7.5.1 触摸屏驱动 199

7.5.2 按键和轨迹球驱动 205

7.6 OMAP处理器中的输入驱动实现 208

7.6.1 触摸屏驱动程序 208

7.6.2 键盘驱动程序 208

第8章 电话系统驱动 210

8.1 电话系统基础 210

8.1.1 Android电话系统简介 210

8.1.2 深入分析电话系统的实现文件 211

8.1.3 电话系统结构 212

8.2 移植Modem驱动和RIL硬件抽象层 213

8.3 移植和调试 214

8.3.1 驱动程序 214

8.3.2 RIL接口 216

8.4 实现电话系统驱动 219

8.4.1 RIL中消息队列的建立 219

8.4.2 与底层Modem通信 224

8.5 深入分析实现Android电话系统的流程 229

8.5.1 初始启动流程 229

8.5.2 接收信息流程 231

8.5.3 等待硬件响应 233

第9章 显示系统驱动 236

9.1 显示系统基础 236

9.1.1 Android的版本 236

9.1.2 不同的显示系统 237

9.1.3 FrameBuffer驱动的使用基础 237

9.2 移植Android显示系统 238

9.2.1 FrameBuffer驱动程序 238

9.2.2 硬件抽象层 242

9.3 实现显示系统的驱动程序 254

9.3.1 Goldfish中的FrameBuffer驱动程序 254

9.3.2 使用Gralloc模块的驱动程序 257

9.4 MSM中显示驱动的实现 266

9.4.1 MSM中的FrameBuffer驱动程序 267

9.4.2 MSM中的Gralloc驱动程序 269

9.5 OMAP中显示驱动的实现 276

9.5.1 文件omapfb-main.c 276

9.5.2 文件omapfb.h 278

9.6 6416中FrameBuffer的工作原理 279

第10章 音频系统驱动 286

10.1 音频系统结构 286

10.2 音频系统的层次 287

10.2.1 层次说明 287

10.2.2 Media库中的Audio框架 288

10.2.3 本地代码 291

10.2.4 JNI代码 294

10.2.5 Java代码 295

10.3 移植工作 296

10.3.1 两个任务 296

10.3.2 Audio的硬件抽象层 296

10.3.3 实现AudioFlinger中的Audio硬件抽象层 298

10.3.4 真正实现Audio硬件抽象层 304

10.4 MSM平台实现Audio驱动系统 304

10.4.1 实现Audio驱动程序 304

10.4.2 实现硬件抽象层 305

10.5 OSS平台实现Audio驱动系统 309

10.5.1 OSS驱动程序介绍 309

10.5.2 mixer 310

10.6 ALSA平台实现Audio系统 317

10.6.1 ALSA基础 317

10.6.2 注册音频设备和音频驱动 318

10.6.3 ALSA的底层接口 318

10.6.4 放音流程 320

10.6.5 录音流程 325

10.6.6 在Android中使用ALSA声卡 328

10.6.7 在OMAP平台移植Android的ALSA声卡驱动 337

10.7 6410中的ALSA驱动 340

10.7.1 ALSA的设备文件 340

10.7.2 创建声卡和PCM设备 341

第11章 视频输出系统驱动 344

11.1 视频输出系统结构 344

11.2 移植的内容 346

11.3 分析硬件抽象层 346

11.3.1 Overlay系统硬件抽象层的接口 346

11.3.2 实现硬件抽象层 349

11.3.3 实现接口 350

11.4 实现Overlay硬件抽象层 351

11.5 在OMAP平台实现Overlay系统 353

11.5.1 实现输出视频驱动程序 353

11.5.2 实现Overlay硬件抽象层 354

11.6 系统层调用Overlay模块 360

11.6.1 测试文件 360

11.6.2 在Android系统中创建Overlay 361

11.6.3 管理Overlay HAL模块 363

11.7 抽象层实现(V412驱动实现方式) 364

第12章 振动器系统驱动 369

12.1 振动器系统结构 369

12.1.1 硬件抽象层 371

12.1.2 JNI框架部分 372

12.2 开始移植 373

12.2.1 移植振动器驱动程序 373

12.2.2 实现硬件抽象层 374

12.3 在MSM平台实现振动器驱动 375

第13章 Android多媒体插件框架 379

13.1 Android多媒体插件 379

13.2 需要移植的内容 380

13.3 OpenCore引擎详解 381

13.3.1 OpenCore的层次结构 381

13.3.2 OpenCore的代码结构 382

13.3.3 OpenCore的编译结构 383

13.3.4 OpenCore OSCL 387

13.3.5 实现OpenCore中的OpenMax部分 389

13.3.6 OpenCore的扩展 401

13.4 Stagefright引擎 408

13.4.1 代码结构 408

13.4.2 实现OpenMax接口 408

13.4.3 Video Buffer传输流程 412

第14章 Camera照相机驱动 418

14.1 Camera系统的结构 418

14.2 移植的内容 421

14.2.1 fimc驱动模块的加载 421

14.2.2 V412驱动的用法 425

14.3 移植和调试 426

14.3.1 V4L2驱动程序 426

14.3.2 硬件抽象层 434

14.4 实现Camera系统的硬件抽象层 438

14.4.1 Java程序部分 438

14.4.2 Java本地调用部分 439

14.4.3 本地库libui.so 440

14.4.4 Camera服务libcameraservice.so 441

14.5 实现Camera系统 445

14.5.1 在MSM平台实现Camera系统 445

14.5.2 OMAP平台实现Camera系统 448

14.6 借助Sensor驱动使用照相机系统 449

第15章 传感器系统驱动 452

15.1 传感器系统的结构 452

15.2 移植Sensor驱动 454

15.2.1 移植驱动程序 454

15.2.2 移植硬件抽象层 455

15.2.3 实现上层部分 456

15.3 实现传感器 460

第16章 Wi-Fi系统、蓝牙系统和GPS系统 466

16.1 Wi-Fi系统的应用和移植 466

16.1.1 Wi-Fi系统的结构 466

16.1.2 移植的内容 468

16.1.3 移植和调试 468

16.1.4 OMAP平台实现Wi-Fi 476

16.1.5 配置Wi-Fi 478

16.1.6 SDIO设备的移植 481

16.1.7 移植Wi-Fi驱动的注意事项 485

16.2 蓝牙系统的应用和移植 486

16.2.1 蓝牙结构 487

16.2.2 移植的内容 489

16.2.3 具体移植 490

16.2.4 MSM平台的蓝牙驱动 492

16.2.5 本地适配器连接过程 494

16.2.6 远程适配器连接过程 498

16.2.7 分析6410的蓝牙驱动 500

16.3 定位系统 510

16.3.1 系统结构 510

16.3.2 移植的内容 512

16.3.3 移植和调试 512

16.3.4 GPS的串口驱动和数据读取 525

第17章 振动器驱动和警报器驱动 529

17.1 Alarm系统基础 529

17.1.1 Alarm系统的结构 529

17.1.2 移植的内容 532

17.2 移植和调试 532

17.3 实现Alarm驱动 535

17.4 MSM平台实现Alarm 542

第18章 光系统驱动和电池系统驱动 544

18.1 Lights光系统的应用和移植 544

18.1.1 Lights系统的结构 544

18.1.2 移植的内容 545

18.1.3 移植和调试 546

18.1.4 MSM平台实现光系统 547

18.1.5 深入分析Android的光系统 548

18.2 Battery电池系统的应用和移植 549

18.2.1 Battery系统的结构 549

18.2.2 移植的内容 551

18.2.3 移植和调试 551

18.2.4 模拟器中实现电池系统 554

相关图书
作者其它书籍
返回顶部