作品简介

《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 在模拟器中实现电池系统
展开全部