
内容介绍
《android底层开发技术实战详解:内核移植和驱动》从底层原理开始讲起,结合真实的案例向读者详细介绍了Android内核、移植和驱动开发的整个流程。全书分为19章,依次讲解驱动移植的必要性,何为HAL层深入分析,Goldfish、MSM、MAP内核和驱动解析,显示系统、输入系统、振动器系统、音频系统、视频输出系统的驱动,OpenMax多媒体、多媒体插件框架,传感器、照相机、Wi-Fi、蓝牙、GPS和电话系统等。在每一章中,重点介绍了与Android驱动开发相关的底层知识,并对Android源代码进行了剖析。
章节目录
第1章 Android底层开发基础11.1 什么是驱动11.1.1 驱动程序的魅力11.1.2 手机中的驱动程序21.2 开源还是不开源的问题21.2.1 雾里看花的开源21.2.2 从为什么选择Java谈为什么不开源驱动程序31.2.3 对驱动开发者来说是一把双刃剑41.3 Android和Linux41.3.1 Linux简介41.3.2 Android和Linux的关系51.4 简析Linux内核71.4.1 内核的体系结构71.4.2 和Android密切相关的Linux内核知识91.5 分析Linux内核源代码很有必要131.5.1 源代码目录结构141.5.2 Linux 3.10的特性161.5.3 浏览源代码的工具171.5.4 为什么用汇编语言编写内核代码171.5.5 Linux内核的显著特性181.5.6 学习Linux内核的方法26第2章 分析Android源代码312.1 搭建Linux开发环境和工具312.1.1 搭建Linux开发环境312.1.2 设置环境变量322.1.3 安装编译工具322.2 获取Android源代码332.3 分析并编译Android源代码352.3.1 Android源代码的结构352.3.2 编译Android源代码402.3.3 运行Android源代码422.3.4 实践演练――演示编译Android程序的两种方法432.4 编译Android Kernel462.4.1 获取Goldfish内核代码472.4.2 获取MSM内核代码492.4.3 获取OMAP内核代码492.4.4 编译Android的Linux内核502.5 运行模拟器512.5.1 Linux环境下运行模拟器的方法522.5.2 模拟器辅助工具――adb53第3章 驱动需要移植563.1 驱动开发需要做的工作563.2 Android移植583.2.1 移植的任务593.2.2 移植的内容593.2.3 驱动开发的任务603.3 Android对Linux的改造603.3.1 Android对Linux内核文件的改动613.3.2 为Android构建Linux的操作系统623.4 内核空间和用户空间接口是一个媒介633.4.1 内核空间和用户空间的相互作用633.4.2 系统和硬件之间的交互633.4.3 使用Relay实现内核到用户空间的数据传输653.5 三类驱动程序683.5.1 字符设备驱动程序683.5.2 块设备驱动程序763.5.3 网络设备驱动程序80第4章 HAL层深入分析814.1 认识HAL层814.1.1 HAL层的发展814.1.2 过去和现在的区别834.2 分析HAL层源代码834.2.1 分析HAL moudle834.2.2 分析mokoid工程874.3 总结HAL层的使用方法954.4 传感器在HAL层的表现974.4.1 HAL层的Sensor代码984.4.2 总结Sensor编程的流程994.4.3 分析Sensor源代码看Android API 与硬件平台的衔接1004.5 移植总结1104.5.1 移植各个Android部件的方式1104.5.2 移植技巧之一――不得不说的辅助工作1114.6 开发一个硬件驱动程序1174.6.1 源代码文件wuming.h和wuming.c1174.6.2 编译配置处理1234.6.3 修改配置文件1244.6.4 验证驱动程序125第5章 分析Goldfish内核系统1275.1 Android专有驱动介绍1275.2 Goldfish基础1285.3 Android专用驱动简介1305.3.1 Logger驱动介绍1305.3.2 Low Memory Killer组件介绍1305.3.3 Timed Output驱动介绍1315.3.4 Timed Gpio驱动介绍1315.3.5 Ram Console驱动介绍1325.4 Ashmem驱动介绍1335.5 Pmem驱动介绍1335.6 Alarm驱动程序1345.7 USB Gadget驱动程序1345.8 Paranoid驱动介绍1355.9 Goldfish的设备驱动136第6章 MSM内核和驱动解析1396.1 MSM基础1396.1.1 常见MSM处理器产品1396.1.2 Snapdragon内核介绍1406.2 移植MSM内核简介1416.3 移植MSM1436.3.1 Makefile文件1436.3.2 驱动和组件1446.3.3 设备驱动1466.3.4 高通特有的组件148第7章 OMAP内核和驱动解析1517.1 OMAP基础1517.1.1 OMAP简析1517.1.2 常见OMAP处理器产品1517.1.3 开发平台1527.2 OMAP内核1527.3 移植OMAP体系结构1547.3.1 移植OMAP平台1547.3.2 移植OMAP处理器1577.4 移植Android专用驱动和组件1617.5 OMAP的设备驱动1627.5.1 显示驱动程序1627.5.2 I2C总线驱动程序1627.5.3 摄像头和视频输出驱动程序1647.5.4 触摸屏和键盘驱动程序1657.5.5 实时时钟驱动程序1667.5.6 音频驱动程序1667.5.7 蓝牙驱动程序166第8章 显示系统驱动应用1678.1 显示系统介绍1678.2 分析内核层1688.2.1 分析接口文件fb.h1688.2.2 分析内核实现文件fbmem.c1718.3 分析硬件抽象层1958.3.1 分析头文件1958.3.2 分析硬件帧缓冲区1978.3.3 实现缓冲区的分配1998.3.4 显示缓冲映射2008.3.5 分析管理库文件LayerBuffer.cpp2018.4 分析显示系统的驱动程序2028.4.1 Goldfish中的FrameBuffer驱动程序2038.4.2 使用Gralloc模块的驱动程序2058.4.3 分析MSM高通处理器中的显示驱动实现2158.4.4 分析OMAP处理器中的显示驱动实现225第9章 输入系统驱动应用2289.1 输入系统介绍2289.1.1 Android输入系统结构元素介绍2289.1.2 移植Android输入系统时的工作2299.2 分析Input(输入)系统驱动2309.2.1 分析头文件2309.2.2 分析核心文件input.c2349.2.3 分析event机制2499.3 分析硬件抽象层2519.3.1 分析文件KeycodeLabels.h2529.3.2 分析文件KeyCharacterMap.h2569.3.3 分析Kl格式文件2579.3.4 分析kcm格式文件2589.3.5 分析文件EventHub.cpp258第10章 振动器系统驱动26310.1 振动器系统结构26310.2 分析硬件抽象层26510.3 分析JNI层部分26610.4 分析Java层部分26710.5 实现移植工作27110.5.1 移植振动器驱动程序27110.5.2 实现硬件抽象层27110.6 在MSM平台实现振动器驱动272第11章 音频系统驱动27611.1 音频系统结构27611.2 分析音频系统的层次27711.2.1 层次说明27711.2.2 Media库中的Audio框架27811.2.3 本地代码28011.2.4 分析JNI代码28311.2.5 Java层代码简介28411.3 移植Audio系统的工作28511.3.1 知识兔的工作28511.3.2 分析硬件抽象层28511.3.3 分析AudioFlinger中的Audio硬件抽象层的实现28711.3.4 真正实现Audio硬件抽象层29311.4 在MSM平台实现Audio驱动系统29311.4.1 实现Audio驱动程序29311.4.2 实现硬件抽象层294第12章 视频输出系统驱动29912.1 视频输出系统结构29912.2 需要移植的部分30112.3 分析硬件抽象层30112.3.1 Overlay系统硬件抽象层的接口30112.3.2 实现Overlay系统的硬件抽象层30412.3.3 实现接口30512.4 实现Overlay硬件抽象层30612.5 在OMAP平台实现Overlay系统30712.5.1 实现输出视频驱动程序30712.5.2 实现Overlay硬件抽象层30912.6 系统层调用Overlay HAL的架构31412.6.1 调用Overlay HAL的架构的流程31412.6.2 S3C6410 Android Overlay的测试代码317第13章 OpenMax多媒体框架32013.1 OpenMax基本层次结构32013.2 分析OpenMax框架构成32113.2.1 OpenMax总体层次结构32113.2.2 OpenMax IL层的结构32213.2.3 Android中的OpenMax32513.3 实现OpenMax IL层接口32513.3.1 OpenMax IL层的接口32513.3.2 在OpenMax IL层中需要做什么33113.3.3 研究Android中的OpenMax适配层33213.4 在OMAP平台实现OpenMax IL33413.4.1 实现文件33413.4.2 分析TI OpenMax IL的核心33513.4.3 实现TI OpenMax IL组件实例338第14章 多媒体插件框架34314.1 Android多媒体插件34314.2 需要移植的内容34414.3 OpenCore引擎34514.3.1 OpenCore层次结构34514.3.2 OpenCore代码结构34614.3.3 OpenCore编译结构34714.3.4 OpenCore OSCL35114.3.5 实现OpenCore中的OpenMax部分35314.3.6 OpenCore的扩展36614.4 Stagefright引擎37114.4.1 Stagefright代码结构37214.4.2 Stagefright实现OpenMax接口37214.4.3 Video Buffer传输流程376第15章 传感器系统38115.1 传感器系统的结构38115.2 分析需要移植的内容38315.2.1 移植驱动程序38315.2.2 移植硬件抽象层38415.2.3 实现上层部分38515.3 在模拟器中实现传感器驱动389第16章 照相机系统39516.1 Camera系统的结构39516.2 分析需要移植的内容39716.3 移植和调试39816.3.1 V4L2驱动程序39816.3.2 硬件抽象层40516.4 实现Camera系统的硬件抽象层40916.4.1 Java程序部分40916.4.2 Camera的Java本地调用部分41016.4.3 Camera的本地库libui.so41116.4.4 Camera服务libcameraservice.so41216.5 在MSM平台实现Camera驱动系统41616.6 在OMAP平台实现Camera驱动系统419第17章 Wi-Fi系统、蓝牙系统和GPS系统42117.1 Wi-Fi系统42117.1.1 Wi-Fi系统的结构42117.1.2 需要移植的内容42317.1.3 移植和调试42317.1.4 OMAP平台实现Wi-Fi43017.1.5 配置Wi-Fi的流程43217.1.6 具体演练――在Android下实现Ethernet43517.2 蓝牙系统43617.2.1 蓝牙系统的结构43717.2.2 需要移植的内容43817.2.3 具体移植43917.2.4 MSM平台的蓝牙驱动44117.3 定位系统44317.3.1 定位系统的结构44317.3.2 分析需要移植的内容44517.3.3 分析驱动程序44517.3.4 分析硬件抽象层44517.3.5 分析上层应用部分448第18章 电话系统45718.1 电话系统基础45718.1.1 电话系统简介45718.1.2 电话系统结构45918.2 需要移植的内容46018.3 移植和调试46018.3.1 驱动程序46118.3.2 RIL接口46218.4 电话系统实现流程分析46518.4.1 初始启动流程46518.4.2 request流程46718.4.3 response流程470第19章 分析时钟系统驱动47219.1 Alarm系统基础47219.1.1 Alarm层次结构介绍47219.1.2 知识兔需要移植的内容47419.2 分析RTC驱动程序47419.3 分析Alarm驱动程序47519.3.1 分析文件android_alarm.h47519.3.2 分析文件alarm.c47619.3.3 分析文件alarm-dev.c48819.4 分析JNI层49719.5 分析Java层49819.5.1 分析AlarmManagerService类49919.5.2 分析AlarmManager类50819.6 模拟器环境的具体实现509第20章 分析USB Gadget驱动51120.1 分析Linux内核的USB驱动程序51120.1.1 USB设备基础51120.1.2 分析USB 和sysfs的联系51620.1.3 分析urb通信方式51820.1.4 分析USB驱动的例程52420.2 分析USB Gadget驱动53620.2.1 分析软件结构53620.2.2 层次整合54620.2.3 USB设备枚举557第21章 其他系统57321.1 Lights光系统57321.1.1 Lights光系统的结构57321.1.2 需要移植的内容57421.1.3 移植和调试57521.1.4 MSM平台实现光系统57721.2 Battery电池系统57721.2.1 Battery系统的结构57821.2.2 需要移植的内容57921.2.3 移植和调试57921.2.4 在模拟器中实现电池系统582
使用说明
1、下载并解压,得出pdf文件2、如果打不开本文件,请务必下载pdf阅读器
3、安装后,在打开解压得出的pdf文件
4、双击进行阅读>
下载仅供下载体验和测试学习,不得商用和正当使用。
下载体验