Android底层开发技术实战详解——内核、移植和驱动

《Android底层开发技术实战详解——内核、移植和驱动》
基本信息
作者: 王振丽
丛书名: Android移动开发技术丛书
出版社:电子工业出版社
ISBN:9787121175930
上架时间:2012-8-13
出版日期:2012 年8月
开本:16开
页码:540
版次:1-1
所属分类: 计算机 > 软件与程序设计 > 移动开发 > Android

 
 



更多关于 》》》《Android底层开发技术实战详解——内核、移植和驱动》
内容简介
书籍
计算机书籍
  《android底层开发技术实战详解——内核、移植和驱动》从底层原理开始讲起,结合真实的案例向读者详细介绍了android内核、移植和驱动开发的整个流程。全书分为19章,依次讲解驱动移植的必要性,何为hal层深入分析,goldfish、msm、map内核和驱动解析,显示系统、输入系统、振动器系统、音频系统、视频输出系统的驱动,openmax多媒体、多媒体插件框架,传感器、照相机、wi-fi、蓝牙、gps和电话系统等。在每一章中,重点介绍了与android驱动开发相关的底层知识,并对android源码进行了剖析。
  《android底层开发技术实战详解——内核、移植和驱动》适合android研发人员及android爱好者学习,也可以作为相关培训学校和大专院校相关专业的教学用书。
目录
《android底层开发技术实战详解——内核、移植和驱动》
第1章 android底层开发基础 1
1.1 什么是驱动 1
1.1.1 驱动程序的魅力 1
1.1.2 电脑中的驱动 2
1.1.3 手机中的驱动程序 2
1.2 开源还是不开源的问题 3
1.2.1 雾里看花的开源 3
1.2.2 从为什么选择java谈为什么不开源驱动程序 3
1.2.3 对驱动开发者来说是一把双刃剑 4
1.3 android和linux 4
1.3.1 linux简介 5
1.3.2 android和linux的关系 5
1.4 简析linux内核 8
1.4.1 内核的体系结构 8
1.4.2 和android密切相关的linux内核知识 10
1.5 分析linux内核源代码很有必要 14
1.5.1 源代码目录结构 14
1.5.2 浏览源代码的工具 16
1.5.3 为什么用汇编语言编写内核代码 17
1.5.4 linux内核的显著特性 18
1.5.5 学习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 kernel 47
2.4.1 获取goldfish内核代码 47
2.4.2 获取msm内核代码 50
2.4.3 获取omap内核代码 50
2.4.4 编译android的linux内核 50
2.5 运行模拟器 52
2.5.1 linux环境下运行模拟器的方法 53
2.5.2 模拟器辅助工具——adb 54
第3章 驱动需要移植 57
3.1 驱动开发需要做的工作 57
3.2 android移植 59
3.2.1 移植的任务 60
3.2.2 移植的内容 60
3.2.3 驱动开发的任务 61
3.3 android对linux的改造 61
3.3.1 android对linux内核文件的改动 62
3.3.2 为android构建 linux的操作系统 63
3.4 内核空间和用户空间接口是一个媒介 64
3.4.1 内核空间和用户空间的相互作用 64
3.4.2 系统和硬件之间的交互 64
3.4.3 使用relay实现内核到用户空间的数据传输 66
3.5 三类驱动程序 70
3.5.1 字符设备驱动程序 70
3.5.2 块设备驱动程序 79
3.5.3 网络设备驱动程序 82
第4章 hal层深入分析 84
4.1 认识hal层 84
4.1.1 hal层的发展 84
4.1.2 过去和现在的区别 86
4.2 分析hal层源代码 86
4.2.1 分析hal moudle 86
4.2.2 分析mokoid工程 89
4.3 总结hal层的使用方法 98
4.4 传感器在hal层的表现 101
4.4.1 hal层的sensor代码 102
4.4.2 总结sensor编程的流程 104
4.4.3 分析sensor源代码看android api 与硬件平台的衔接 104
4.5 移植总结 116
4.5.1 移植各个android部件的方式 116
4.5.2 移植技巧之一——不得不说的辅助工作 117
第5章 goldfish下的驱动解析 125
5.1 staging驱动 125
5.1.1 staging驱动概述 125
5.1.2 binder驱动程序 126
5.1.3 logger驱动程序 135
5.1.4 lowmemorykiller组件 136
5.1.5 timed output驱动程序 137
5.1.6 timed gpio驱动程序 139
5.1.7 ram console驱动程序 139
5.2 wakelock和early_suspend 140
5.2.1 wakelock和early_suspend的原理 140
5.2.2 android休眠 141
5.2.3 android唤醒 144
5.3 ashmem驱动程序 145
5.4 pmem驱动程序 148
5.5 alarm驱动程序 149
5.5.1 alarm简析 149
5.5.2 alarm驱动程序的实现 150
5.6 usb gadget驱动程序 151
5.7 android paranoid驱动程序 153
5.8 goldfish设备驱动 154
5.8.1 framebuffer驱动 155
5.8.2 键盘驱动 159
5.8.3 实时时钟驱动程序 160
5.8.4 tty终端驱动程序 161
5.8.5 nandflash驱动程序 162
5.8.6 mmc驱动程序 162
5.8.7 电池驱动程序 162
第6章 msm内核和驱动解析 164
6.1 msm基础 164
6.1.1 常见msm处理器产品 164
6.1.2 snapdragon内核介绍 165
6.2 移植msm内核简介 166
6.3 移植msm 168
6.3.1 makefile文件 168
6.3.2 驱动和组件 170
6.3.3 设备驱动 172
6.3.4 高通特有的组件 174
第7章 omap内核和驱动解析 177
7.1 omap基础 177
7.1.1 omap简析 177
7.1.2 常见omap处理器产品 177
7.1.3 开发平台 178
7.2 omap内核 178
7.3 移植omap体系结构 180
7.3.1 移植omap平台 180
7.3.2 移植omap处理器 183
7.4 移植android专用驱动和组件 188
7.5 omap的设备驱动 190
第8章 显示系统驱动应用 195
8.1 显示系统介绍 195
8.1.1 android的版本 195
8.1.2 不同版本的显示系统 195
8.2 移植和调试前的准备 196
8.2.1 framebuffer驱动程序 196
8.2.2 硬件抽象层 198
8.3 实现显示系统的驱动程序 210
8.3.1 goldfish中的framebuffer驱动程序 210
8.3.2 使用gralloc模块的驱动程序 214
8.4 msm高通处理器中的显示驱动实现 224
8.4.1 msm中的framebuffer驱动程序 225
8.4.2 msm中的gralloc驱动程序 227
8.5 omap处理器中的显示驱动实现 235
第9章 输入系统驱动应用 239
9.1 输入系统介绍 239
9.1.1 android输入系统结构元素介绍 239
9.1.2 移植android输入系统时的工作 240
9.2 input(输入)驱动 241
9.3 模拟器的输入驱动 256
9.4 msm高通处理器中的输入驱动实现 257
9.4.1 触摸屏驱动 257
9.4.2 按键和轨迹球驱动 264
9.5 omap处理器平台中的输入驱动实现 266
9.5.1 触摸屏驱动 267
9.5.2 键盘驱动 267
第10章 振动器系统驱动 269
10.1 振动器系统结构 269
10.1.1 硬件抽象层 271
10.1.2 jni框架部分 272
10.2 开始移植 273
10.2.1 移植振动器驱动程序 273
10.2.2 实现硬件抽象层 274
10.3 在msm平台实现振动器驱动 275
第11章 音频系统驱动 279
11.1 音频系统结构 279
11.2 分析音频系统的层次 280
11.2.1 层次说明 280
11.2.2 media库中的audio框架 281
11.2.3 本地代码 284
11.2.4 jni代码 288
11.2.5 java代码 289
11.3 移植audio系统的必备技术 289
11.3.1 移植audio系统所要做的工作 289
11.3.2 分析硬件抽象层 290
11.3.3 分析audioflinger中的audio硬件抽象层的实现 291
11.4 真正实现audio硬件抽象层 298
11.5 msm平台实现audio驱动系统 298
11.5.1 实现audio驱动程序 298
11.5.2 实现硬件抽象层 299
11.6 oss平台实现audio驱动系统 304
11.6.1 oss驱动程序介绍 304
11.6.2 mixer 305
11.7 alsa平台实现audio系统 312
11.7.1 注册音频设备和音频驱动 312
11.7.2 在android中使用alsa声卡 313
11.7.3 在omap平台移植android的alsa声卡驱动 322
第12章 视频输出系统驱动 326
12.1 视频输出系统结构 326
12.2 需要移植的部分 328
12.3 分析硬件抽象层 328
12.3.1 overlay系统硬件抽象层的接口 328
12.3.2 实现overlay系统的硬件抽象层 331
12.3.3 实现接口 332
12.4 实现overlay硬件抽象层 333
12.5 在omap平台实现overlay系统 335
12.5.1 实现输出视频驱动程序 335
12.5.2 实现overlay硬件抽象层 337
12.6 系统层调用overlay hal的架构 342
12.6.1 调用overlay hal的架构的流程 342
12.6.2 s3c6410 android overlay的测试代码 346
第13章 openmax多媒体框架 349
13.1 openmax基本层次结构 349
13.2 分析openmax框架构成 350
13.2.1 openmax总体层次结构 350
13.2.2 openmax il层的结构 351
13.2.3 android中的openmax 354
13.3 实现openmax il层接口 354
13.3.1 openmax il层的接口 354
13.3.2 在openmax il层中需要做什么 361
13.3.3 研究android中的openmax适配层 361
13.4 在omap平台实现openmax il 363
13.4.1 实现文件 364
13.4.2 分析ti openmax il的核心 365
13.4.3 实现ti openmax il组件实例 368
第14章 多媒体插件框架 373
14.1 android多媒体插件 373
14.2 需要移植的内容 374
14.3 opencore引擎 375
14.3.1 opencore层次结构 375
14.3.2 opencore代码结构 376
14.3.3 opencore编译结构 377
14.3.4 opencore oscl 381
14.3.5 实现opencore中的openmax部分 383
14.3.6 opencore的扩展 398
14.4 stagefright引擎 404
14.4.1 stagefright代码结构 404
14.4.2 stagefright实现openmax接口 405
14.4.3 video buffer传输流程 409
第15章 传感器系统 415
15.1 传感器系统的结构 415
15.2 需要移植的内容 417
15.2.1 移植驱动程序 417
15.2.2 移植硬件抽象层 418
15.2.3 实现上层部分 419
15.3 在模拟器中实现传感器 424
第16章 照相机系统 430
16.1 camera系统的结构 430
16.2 需要移植的内容 433
16.3 移植和调试 433
16.3.1 v4l2驱动程序 433
16.3.2 硬件抽象层 441
16.4 实现camera系统的硬件抽象层 446
16.4.1 java程序部分 446
16.4.2 camera的java本地调用部分 447
16.4.3 camera的本地库libui.so 448
16.4.4 camera服务libcameraservice.so449
16.5 msm平台实现camera系统 454
16.6 omap平台实现camera系统 457
第17章 wi-fi系统、蓝牙系统和gps系统 459
17.1 wi-fi系统 459
17.1.1 wi-fi系统的结构 459
17.1.2 需要移植的内容 461
17.1.3 移植和调试 461
17.1.4 omap平台实现wi-fi 469
17.1.5 配置wi-fi的流程 471
17.1.6 具体演练——在android下实现ethernet 473
17.2 蓝牙系统 475
17.2.1 蓝牙系统的结构 475
17.2.2 需要移植的内容 477
17.2.3 具体移植 478
17.2.4 msm平台的蓝牙驱动 480
17.3 定位系统 482
17.3.1 定位系统的结构 483
17.3.2 需要移植的内容 484
17.3.3 移植和调试 484
第18章 电话系统 498
18.1 电话系统基础 498
18.1.1 电话系统简介 498
18.1.2 电话系统结构 500
18.2 需要移植的内容 501
18.3 移植和调试 502
18.3.1 驱动程序 502
18.3.2 ril接口 504
18.4 电话系统实现流程分析 507
18.4.1 初始启动流程 507
18.4.2 request流程 509
18.4.3 response流程 512
第19章 其他系统 514
19.1 alarm警报器系统 514
19.1.1 alarm系统的结构 514
19.1.2 需要移植的内容 515
19.1.3 移植和调试 516
19.1.4 模拟器环境的具体实现 518
19.1.5 msm平台实现alarm 518
19.2 lights光系统 519
19.2.1 lights光系统的结构 520
19.2.2 需要移植的内容 521
19.2.3 移植和调试 521
19.2.4 msm平台实现光系统 523
19.3 battery电池系统 524
19.3.1 battery系统的结构 524
19.3.2 需要移植的内容 526
19.3.3 移植和调试 526
19.3.4 在模拟器中实现电池系统 529

本图书信息来源于:中国互动出版网

转载于:https://www.cnblogs.com/china-pub/archive/2012/08/23/2652681.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql select in 不存在返回0_MySQL索引优化看这篇文章就够了!

来源:cnblogs.com/songwenjie/p/9410009.html本文主要讨论MySQL索引的部分知识。将会从MySQL索引基础、索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开(本文图片可点开放大)。一、MySQL索引基础首先,我们将从索引基础开…

c语言文件实现通信录程序,学C三个月了,学了文件,用C语言写了个通讯录程序...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include #include struct QQ //结构体,有6个成员{char name[20];char age[5];char tel[15];char qq[15];char birth[12];char address[80];}user;void style()//窗口风格函数{system("mode con…

《软件测试实战:微软技术专家经验总结》

《软件测试实战:微软技术专家经验总结》 基本信息 作者: 史亮 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115345844 上架时间:2014-3-3 出版日期:2014 年2月 开本:16开 页…

websocket一直无法链接_.NET Core 实现基于Websocket的在线聊天室

什么是Websocket我们在传统的客户端程序要实现实时双工通讯第一想到的技术就是socket通讯,但是在web体系是用不了socket通讯技术的,因为http被设计成无状态,每次跟服务器通讯完成后就会断开连接。在没有websocket之前web系统如果要做双工通讯…

c语言既能读字母也能读数字,2014计算机二级考试C语言考前预测选择题

无忧考网为大家收集整理了《2014计算机二级考试C语言考前预测选择题》供大家参考,希望对大家有所帮助!!!1.结构化分析方法是面向( )的自顶向下、逐步求精进行需求分析的方法A.对象B.数据结构C.数据流D.目标2.对线性表进行二分法检…

生成 cone(锥体)

简介 生成 圆锥 代码 // CreateCone.cpp: 定义控制台应用程序的入口点。 //#include <iostream> #include <OpenMesh/Core/IO/MeshIO.hh> #include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh> #include<cmath> #include "AddPolygon.h" …

使用函数统计指定c语言,浙大版《C语言程序设计(第3版)》题目集 习题5-5 使用函数统计指定数字的个数...

热门文章推荐以下50道算法编程题访问量较大&#xff0c;包含常用语法&#xff0c;数据结构&#xff0c;解题思路等等&#xff0c;作为C语言学习者必练题目推荐给各位。创作不易&#xff0c;记得一键三连哦&#xff01;&#xff01;&#xff01;习题5-5 使用函数统计指定数字的个…

半监督分类算法_基于同质区和迁移学习的高光谱图像半监督分类

作 者 信 息赵婵娟&#xff0c;周绍光&#xff0c;丁 倩&#xff0c;刘丽丽(河海大学 地球科学与工程学院&#xff0c;江苏 南京 211100)“【摘要】针对高光谱遥感图像分类中标记样本难获取的问题&#xff0c;提出了一种基于同质区和迁移学习的新型半监督分类方法。首先对高…

【题解】Luogu P4052[JSOI2007]文本生成器 AC自动机

AC自动机上DP f[i][j]表示节点j,串长为i 当一个串的尾节点被标红或其fail指针指向的被标红&#xff0c;都是可读的 用总的减去不可读的即为答案 #include<iostream> #include<cstring> #include<cstdio> #include<queue> #define MOD (10007) #define …

在SQL Server中使用命令调用SSIS包

在SQL Server中可以使用dtexec命令运行SSIS包&#xff08;2005以上版本&#xff09;,当然也可以通过系统过程:xp_cmdshell调用dtexec运行SSIS包。 具体操作步骤如下&#xff1a; 1.首先&#xff0c;当然是要在Business Intelligence中设计好包&#xff0c;并调试通过。 2.然后&…

c语言 结构体数组嵌套另一个结构体数组怎么初始化?,如何初始化结构体数组(内嵌结构体)...

Keil 结构体变量初始化tujidi1csd25142016-09-30一维数组结构体数组结构体数组&#xff0c;通过改变指针类型改变访问数组的方式toto129748850424332014-08-01mfc结构体指针、结构体数组指针u01399024812292014-12-14memset结构体初始化shagua_nan184092016-03-16【C -> 容器…

本特利3500_本特利技术控的自我修养之 轴位移探头安装

正在学习之-客户答疑国家疫情当前&#xff0c;除了保护好自己、不给国家添麻烦以外我们能做的实在有限。上学时因为种种原因没有按家里的期望学医&#xff0c;也没有能够考上最喜欢的生物专业(理想中希望去非洲做动物类研究工作-跟拍狮子)至今还是憾事&#xff0c;但是加入本特…

map标签的详细使用参数

map标签必须成对出现&#xff0c;即 <map> ....</map> 同时map必须和area配合使用。 img标签里的usermap属性值必须与map标签里的id和name值完全一致 area标签&#xff1a;定义图片的点击区域 area 是单标签&#xff0c;不成对。 属性&#xff1a; accesskey 快捷键…

快捷方式修复_Mac上的屏幕截图不起作用该如何修复?

屏幕截图是Mac提供的内置功能&#xff0c;很少有它不起作用。但是由于某些意外的设置或硬件问题&#xff0c;Mac上的屏幕截图有时无法正常工作&#xff0c;这里提供的是Mac上的屏幕截图不起作用该如何修复&#xff1f;1.在Mac上启用屏幕快照快捷方式如果您按CMD SHIFT 3或CMD…

计算机二级2019年9月c语言题库,(3)2019年9月计算机二级C语言试题

当你的计算机知识还撑不起你的学习、工作时&#xff0c;那你就应该静下心来刷计算机等级考试题库-二级C语言试题。1)下列叙述中正确的是( )。A.解决同一个问题的不同算法的时间复杂度一般是不同的B.解决同一个问题的不同算法的时间复杂度必定是相同的C.对同一批数据作同一种处理…

MySQL对于有大量重复数据表的处理方法

需要在MySQL的一张innodb引擎的表(tableA)上添加一个唯一索引(idx_col1_u)。但是对于每个key(col1)表中已经有大量重复数据。此时&#xff0c;做数据的手工清理&#xff0c;或者SQL处理是非常耗时的。 MySQL有一个独有的 alter ignore add unique index的语法。 ALTER [ONLINE …

python qt 按钮_PyQt(Python+Qt)学习随笔:toolButton的popupMode属性

属性介绍toolButton的popupMode属性为设有菜单集或Action列表的toolButton指定菜单弹出模式&#xff0c;类型为枚举类型ToolButtonPopupMode&#xff0c;有如下三种模式&#xff1a;1、DelayedPopup(值为0)&#xff1a;按住toolButton一定时间(超时取决于样式&#xff0c;请参见…

最短哈密顿路径 c语言算法,最短路径系列【最短路径、哈密顿路等】

最短路径问题&#xff0c;一个经典算法问题。本文粗略总结了一种常见的最短路径算法&#xff0c;以及几个最短路径变种问题的解法&#xff0c;其中包括哈密顿路。对于有向图或者无向图&#xff0c;假设有V个节点&#xff0c;E条边&#xff0c;G[Vi,Vj]表示图中点Vi到Vj边的权值…

Android应用开发学习笔记之多线程与Handler消息处理机制

作者&#xff1a;刘昊昱 博客&#xff1a;http://blog.csdn.net/liuhaoyutz 和JAVA一样&#xff0c;Android下我们可以通过创建一个Thread对象实现多线程。Thread类有多个构造函数&#xff0c;一般通过构造函数Thread(Runnable runnable)实现多线程&#xff0c;代码如下&#…

nsga2算法c++实现_Bellman-Ford算法

之前文章对于Dijkstra算法进行了讲解和实现&#xff0c;其实现的原理在于采用贪心算法&#xff0c;遍历N(结点数)次&#xff0c;每次找到局部最优的路径的结点u&#xff0c;判断该节点可达的顶点v的权重是否大于结点u权重u->v的权重&#xff0c;如果大于则替换顶点v的权重(也…