图书介绍
Android底层驱动分析和移植【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

- 高金昌,张明星编著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302397458
- 出版时间:2015
- 标注页数:798页
- 文件大小:113MB
- 文件页数:812页
- 主题词:移动终端-应用程序-程序设计
PDF下载
下载说明
Android底层驱动分析和移植PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1篇 基础知识篇2
第1章 Android底层开发基础2
1.1 Android系统介绍2
1.2 Android系统架构介绍2
1.2.1 底层操作系统层(OS)3
1.2.2 各种库(Libraries)和Android运行环境(RunTime)3
1.2.3 应用程序框架(Application Framework)4
1.2.4 顶层应用程序(Application)4
1.3 获取Android源码5
1.3.1 在Linux系统中获取Android源码5
1.3.2 在Windows平台上获取Android源码7
1.4 分析Android源码结构9
1.4.1 总体结构10
1.4.2 应用程序部分11
1.4.3 应用程序框架部分13
1.4.4 系统服务部分13
1.4.5 系统程序库部分15
1.4.6 系统运行库部分18
1.4.7 硬件抽象层部分19
1.5 编译源码20
1.5.1 搭建编译环境20
1.5.2 在模拟器中运行22
1.5.3 编译源码生成SDK23
第2章 Android驱动开发基础28
2.1 驱动程序基础28
2.1.1 什么是驱动程序28
2.1.2 驱动开发需要做的工作29
2.2 Linux开发基础30
2.2.1 Linux简介30
2.2.2 Linux的发展趋势31
2.2.3 Android基于Linux系统31
2.2.4 Android和Linux内核的区别32
2.2.5 Android独有的驱动34
2.2.6 为Android构建Linux的操作系统35
2.3 Linux内核结构35
2.3.1 Linux内核的体系结构35
2.3.2 和Android驱动开发相关的内核知识37
2.4 分析Linux内核源码40
2.4.1 源码目录结构40
2.4.2 浏览源码的工具42
2.4.3 GCC特性43
2.4.4 链表的重要性46
2.4.5 Kconfig和Makefile48
2.5 学习Linux内核的方法50
2.5.1 分析USB子系统的代码50
2.5.2 分析USB系统的初始化代码50
2.6 Linux中的3类驱动程序54
2.6.1 字符设备驱动54
2.6.2 块设备驱动61
2.6.3 网络设备驱动65
2.7 Android系统移植基础65
2.7.1 移植的任务65
2.7.2 需要移植的内容66
2.7.3 驱动开发需要做的工作67
2.8 内核空间和用户空间之间的接口67
2.8.1 内核空间和用户空间的相互作用67
2.8.2 实现系统和硬件之间的交互67
2.8.3 从内核到用户空间传输数据69
2.9 编写J NI方法72
第3章 主流内核系统解析76
3.1 Goldfish内核和驱动解析76
3.1.1 Goldfish基础77
3.1.2 Logger驱动78
3.1.3 Low Memory Killer组件79
3.1.4 Timed Output驱动79
3.1.5 Timed Gpio驱动80
3.1.6 Ram Console驱动80
3.1.7 Ashmem驱动81
3.1.8 Pmem驱动81
3.1.9 Alarm驱动81
3.1.10 USB Gadget驱动82
3.1.11 Paranoid驱动介绍82
3.1.12 Goldfish的设备驱动83
3.2 MSM内核和驱动架构85
3.2.1 高通公司介绍85
3.2.2 常见的MSM处理器产品86
3.2.3 MSM内核移植87
3.2.4 Makefile文件88
3.2.5 驱动和组件90
3.2.6 设备驱动92
3.2.7 高通特有的组件94
第2篇 Android专有驱动篇98
第4章 分析硬件抽象层98
4.1 HAL基础98
4.1.1 推出HAL的背景98
4.1.2 HAL的基本结构99
4.2 分析HAL module架构101
4.2.1 结构体hw_module_t101
4.2.2 结构体hw_module_methods_t102
4.2.3 结构体hw_device_t103
4.3 分析文件hardware.c103
4.3.1 寻找动态链接库的地址103
4.3.2 数组variant_keys104
4.3.3 载入相应的库104
4.3.4 获得hw_module_t结构体105
4.4 分析硬件抽象层的加载过程106
4.5 分析硬件访问服务109
4.5.1 定义硬件访问服务接口109
4.5.2 具体实现110
4.6 分析Mokoid实例111
4.6.1 获取实例工程源码112
4.6.2 直接调用service方法的实现代码113
4.6.3 通过Manager调用service的实现代码117
4.7 HAL和系统移植120
4.7.1 移植各个Android部件的方式120
4.7.2 设置设备权限121
4.7.3 init.rc初始化125
4.7.4 文件系统的属性125
4.8 开发自己的HAL驱动程序126
4.8.1 封装HAL接口126
4.8.2 开始编译129
第5章 Binder通信驱动详解130
5.1 分析Binder驱动程序130
5.1.1 数据结构binder_work130
5.1.2 结构体binder_node131
5.1.3 结构体binder_ref132
5.1.4 通知结构体binder_ref_death133
5.1.5 结构体binder_buffer133
5.1.6 结构体binder_proc134
5.1.7 结构体binder_thread135
5.1.8 结构体binder_transaction136
5.1.9 结构体binder_write_read136
5.1.10 Binder驱动协议137
5.1.11 枚举BinderDriverReturnProtocol137
5.1.12 结构体binder_ptr_cookie和binder_transaction_data138
5.1.13 结构体flat_binder_object139
5.1.14 设备初始化139
5.1.15 打开Binder设备文件141
5.1.16 实现内存映射142
5.1.17 释放物理页面147
5.1.18 分配内核缓冲区148
5.1.19 释放内核缓冲区150
5.1.20 查询内核缓冲区152
5.2 Binder封装库驱动153
5.2.1 Binder的3层结构153
5.2.2 Binder驱动的同事——类BBinder154
5.2.3 BpRefBase代理类157
5.2.4 驱动交互类IPCThreadState158
5.3 初始化Java层Binder框架160
5.3.1 搭建交互关系161
5.3.2 实现Binder类的初始化161
5.3.3 实现BinderProxy类的初始化162
5.4 实体对象binder_node的驱动163
5.4.1 定义实体对象164
5.4.2 增加引用计数165
5.4.3 减少引用计数166
5.5 本地对象BBinder驱动167
5.5.1 引用运行的本地对象167
5.5.2 处理接口协议173
5.6 引用对象binder_ref驱-动177
5.7 代理对象BpBinder驱动180
5.7.1 创建Binder代理对象180
5.7.2 销毁Binder代理对象181
第6章 Logger驱动架构详解185
6.1 分析Logger驱动程序185
6.1.1 分析头文件185
6.1.2 驱动实现文件186
6.2 日志库Liblog驱动201
6.2.1 定义指针的初始化操作202
6.2.2 记录日志203
6.2.3 设置写入日志记录的类型204
6.2.4 向Logger日志驱动程序写入日志记录205
6.2.5 记录日志数据函数206
6.3 日志写入接口驱动206
6.3.1 C/C++层的写入接口207
6.3.2 Java层的写入接口208
第7章 Ashmem驱动详解217
7.1 分析Ashmem驱动程序217
7.1.1 基础数据结构217
7.1.2 驱动初始化218
7.1.3 打开匿名共享内存设备文件219
7.1.4 内存映射222
7.1.5 读写操作223
7.1.6 锁定和解锁225
7.1.7 回收内存块230
7.2 C++访问接口层231
7.2.1 接口MemoryHeapBase的服务器端实现231
7.2.2 接口MemoryHeapBase的客户端实现236
7.2.3 接口MemoryBase的服务器端实现240
7.2.4 接口MemoryBase的客户端实现242
7.3 实现Java访问的接口层243
7.4 实战演练——读取内核空间的数据247
第8章 搭建测试环境250
8.1 搭建S3C6410开发环境250
8.1.1 S3C6410介绍250
8.1.2 OK6410介绍251
8.1.3 安装minicom251
8.1.4 烧写Android系统253
8.2 其他开发环境介绍257
8.2.1 基于Cortex-A8的DMA-210XP开发板257
8.2.2 基于Cortex-A8的QT210开发板258
8.2.3 X210CV3开发板259
8.3 测试驱动的方法259
8.3.1 使用Ubuntu Linux测试驱动262
8.3.2 在Android模拟器中测试驱动263
第9章 低内存管理驱动266
9.1 OOM机制266
9.1.1 OOM机制基础266
9.1.2 分析OOM机制的具体实现267
9.2 Android系统的Low Memory Killer 架构机制273
9.3 Low Memory Killer驱动详解274
9.3.1 Low Memory Killer驱动基础274
9.3.2 分析核心功能275
9.3.3 设置用户接口278
9.4 实战演练——从内存池获取对象280
9.5 实战演练——使用用户程序读取内核空间的数据282
第3篇 典型驱动移植篇286
第10章 电源管理驱动286
10.1 Power Management架构基础286
10.2 分析Framework层287
10.2.1 文件PowerManager.java287
10.2.2 提供PowerManager功能288
10.3 JNI层架构分析309
10.3.1 定义两层之间的接口函数309
10.3.2 与Linux Kernel层进行交互311
10.4 Kernel(内核)层架构分析311
10.4.1 文件power.c312
10.4.2 文件earlysuspend.c314
10.4.3 文件wakelock.c315
10.4.4 文件resume.c317
10.4.5 文件suspend.c317
10.4.6 文件main.c318
10.4.7 proc文件319
10.5 wakelock和early_suspend319
10.5.1 wakelock的原理319
10.5.2 early_suspend原理320
10.5.3 Android休眠321
10.5.4 Android唤醒323
10.6 Battery电池系统架构和管理323
10.6.1 实现驱动程序324
10.6.2 实现JNI本地代码325
10.6.3 Java层代码325
10.6.4 实现Uevent部分327
10.7 JobScheduler节能调度机制331
10.7.1 JobScheduler机制的推出背景331
10.7.2 JobScheduler的实现332
10.7.3 实现操作调度332
10.7.4 封装调度任务335
第11章 PMEM内存驱动架构339
11.1 PMEM初步339
11.1.1 什么是PMEM339
11.1.2 Platform设备基础339
11.2 PMEM 驱动架构341
11.2.1 设备实现341
11.2.2 PMEM驱动的具体实现343
11.2.3 调用PMEM驱动的流程367
11.3 用户空间接口367
11.3.1 释放位图内存368
11.3.2 释放位图内存空间369
11.3.3 获取位图占用内存370
11.4 实战演练——将PMEM加入到内核中370
11.5 实战演练——将PMEM加入到内核中372
11.6 实战演练——PMEM在Camera中的应用373
11.7 实战演练——PMEM的移植与测试375
第12章 调试机制驱动Ram Console378
12.1 Ram Console介绍378
12.2 实现Ram Console378
12.2.1 定义结构体ram_console_platform_data379
12.2.2 实现具体功能379
第13章 USB Gadget驱动389
13.1 分析Linux内核的USB驱动程序389
13.1.1 USB设备基础389
13.1.2 USB和sysfs393
13.1.3 urb通信396
13.2 USB Gadget 驱动架构详解401
13.2.1 分析软件结构401
13.2.2 层次整合411
13.2.3 USB设备枚举421
13.3 实战演练——USB驱动例程分析437
13.3.1 结构体usb_device_id437
13.3.2 结构体usb_driver439
13.3.3 注册USB驱动程序440
13.3.4 加载和卸载USB骨架程序模块441
13.3.5 探测回调函数441
13.3.6 清理数据443
13.3.7 函数skel_write()和skel_write_bulk_callback()444
13.3.8 获取USB的接口446
13.3.9 释放不需要的资源447
13.3.10 字符设备函数448
13.3.11 读取的数据量449
13.4 实战演练450
13.4.1 移植USB Gadget驱动450
13.4.2 移植USB HOST驱动452
第14章 Time Device驱动453
14.1 Timed Output驱动架构453
14.1.1 设备类453
14.1.2 分析Timed Output驱动的具体实现458
14.1.3 实战演练——实现设备的读写操作460
14.2 Timed Gpio驱动架构461
14.2.1 分析文件timed_gpio.h462
14.2.2 分析文件timed_gpio.c462
第15章 警报器系统驱动Alarm467
15.1 Alarm系统基础467
15.1.1 Alarm层次结构介绍467
15.1.2 需要移植的内容468
15.2 RTC驱动程序架构468
15.3 Alarm驱动架构469
15.3.1 分析文件android_alarm.h469
15.3.2 分析文件alarm.c471
15.3.3 分析文件alarm-dev.c483
15.4 JNI层详解491
15.5 Java层详解493
15.5.1 分析AlarmManagerService类493
15.5.2 分析AlarmManager类501
15.6 模拟器环境的具体实现503
15.7 实战演练504
15.7.1 编写PCF8563芯片的RTC驱动程序504
15.7.2 在2440移植RTC驱动程序507
15.7.3 在mini2440开发板上的移植508
15.7.4 实现一个秒表定时器509
第16章 振动器驱动架构和移植512
16.1 振动器系统架构512
16.2 硬件抽象层架构513
16.3 JNI层架构514
16.4 Java层架构515
16.5 实战演练——移植振动器系统519
16.5.1 移植振动器驱动程序519
16.5.2 实现硬件抽象层520
16.6 实战演练——在MSM平台实现振动器驱动520
16.7 实战演练——在MTK平台实现振动器驱动523
16.8 实战演练——移植振动器驱动526
第17章 输入系统驱动527
17.1 输入系统架构分析527
17.2 移植输入系统驱动的方法528
17.3 Input(输入)系统驱动详解529
17.3.1 分析头文件529
17.3.2 分析核心文件input.c533
17.3.3 event机制详解548
17.4 硬件抽象层详解551
17.4.1 处理用户空间551
17.4.2 定义按键的字符映射关系555
17.4.3 KL格式的按键布局文件556
17.4.4 KCM格式的按键字符映射文件557
17.4.5 分析文件EventHub.cpp558
17.5 实战演练561
17.5.1 在内置模拟器中实现输入驱动562
17.5.2 在MSM高通处理器中实现输入驱动562
17.5.3 在Zoom平台中实现输入驱动571
第18章 LCD显示驱动573
18.1 LCD系统介绍573
18.2 FrameBuffer内核层详解573
18.2.1 分析接口文件fb.h574
18.2.2 内核实现文件577
18.3 硬件抽象层详解600
18.3.1 Gralloc模块的头文件601
18.3.2 硬件帧缓冲区603
18.3.3 显示缓冲区的分配604
18.3.4 显示缓冲映射605
18.3.5 分析管理库文件LayerBuffer.cpp606
18.4 Goldfish中的FrameBuffer驱动程序详解607
18.5 使用Gralloc模块的驱动程序610
18.5.1 文件gralloc.cpp611
18.5.2 文件mapper.cpp614
18.5.3 文件framebuffer.cpp615
18.6 MSM高通处理器中的显示驱动620
18.6.1 msm fb设备的文件操作函数接口621
18.6.2 高通msm fb的driver接口621
18.6.3 特殊的iocttl621
18.7 MSM中的Gralloc驱动程序详解623
18.7.1 文件gralloc.cpp623
18.7.2 文件framebuffer.cpp624
18.7.3 文件gralloc.cpp627
18.8 OMAP处理器中的显示驱动实现630
18.8.1 文件omapfb-main.c631
18.8.2 文件omapfb.h633
18.9 实战演练633
18.9.1 S3C2440上的LCD驱动633
18.9.2 编写访问FrameBuffer设备文件的驱动658
18.9.3 在S3C6410下移植FrameBuffer驱动659
第19章 音频系统驱动664
19.1 音频系统架构基础664
19.1.1 层次说明665
19.1.2 Media库中的Audio框架665
19.2 音频系统层次详解668
19.2.1 本地代码详解668
19.2.2 JNI代码详解670
19.2.3 Java层代码详解671
19.3 移植Audio系统672
19.3.1 移植需要做的工作672
19.3.2 硬件抽象层移植分析672
19.3.3 AudioFlinger中的Audio硬件抽象层674
19.3.4 真正实现Audio硬件抽象层679
19.4 实战演练——在MSM平台实现Audio驱动680
19.4.1 实现Audio驱动程序680
19.4.2 实现硬件抽象层681
19.5 实战演练——在OSS平台实现Audio驱动684
19.5.1 OSS驱动基础685
19.5.2 函数mixer()685
19.6 实战演练——在ALSA平台实现Audio系统692
19.6.1 注册音频设备和音频驱动692
19.6.2 在Android中使用ALSA声卡693
19.6.3 在OMAP平台移植Android的ALSA声卡驱动701
19.6.4 基于ARM的AC97音频驱动704
第20章 Overlay系统驱动详解710
20.1 视频输出系统结构710
20.2 移植Overlay系统711
20.3 硬件抽象层详解711
20.3.1 Overlay系统硬件抽象层的接口711
20.3.2 实现Overlay系统的硬件抽象层714
20.3.3 实现Overlay接口714
20.4 实现Overlay硬件抽象层715
20.5 实战演练——在OMAP平台实现Overlay系统717
20.5.1 实现输出视频驱动程序717
20.5.2 实现Overlay硬件抽象层719
20.6 实战演练——在系统层调用Overlay HAL724
20.6.1 测试文件724
20.6.2 在Android系统中创建Overlay725
20.6.3 管理Overlay HAL模块726
20.6.4 S3C6410 Android Overlay的测试代码727
第21章 照相机驱动729
21.1 Camera系统的结构729
21.1.1 Java程序部分731
21.1.2 Camera的Java本地调用部分731
21.1.3 Camera的本地库libui.so732
21.1.4 Camera服务libcameraservice.so733
21.2 移植Camera系统737
21.2.1 实现V4L2驱动737
21.2.2 实现硬件抽象层744
21.3 实战演练——在MSM平台实现Camera驱动747
21.4 实战演练——在OMAP平台实现Camera驱动750
21.5 Android实现S5PV210 FIMC驱动751
第22章 蓝牙系统驱动764
22.1 Android系统中的蓝牙模块764
22.2 分析蓝牙模块的源码766
22.2.1 初始化蓝牙芯片766
22.2.2 蓝牙服务766
22.2.3 管理蓝牙电源767
22.3 低功耗蓝牙协议栈详解767
22.3.1 低功耗蓝牙协议栈基础767
22.3.2 低功耗蓝牙API详解768
22.4 Android中的BlueDroid769
22.4.1 Android系统中BlueDroid的架构770
22.4.2 Application Framework层分析770
22.4.3 分析Bluetooth System Service层778
22.4.4 JNI层详解778
22.4.5 HAL硬件抽象层详解783
22.5 Android蓝牙模块的运作流程783
22.5.1 打开蓝牙设备783
22.5.2 搜索蓝牙788
22.5.3 传输OPP文件793
热门推荐
- 1331846.html
- 1713054.html
- 3884228.html
- 2320067.html
- 652525.html
- 3122330.html
- 1753549.html
- 461754.html
- 3115624.html
- 469418.html
- http://www.ickdjs.cc/book_1928527.html
- http://www.ickdjs.cc/book_1265138.html
- http://www.ickdjs.cc/book_395043.html
- http://www.ickdjs.cc/book_1446791.html
- http://www.ickdjs.cc/book_583988.html
- http://www.ickdjs.cc/book_3710001.html
- http://www.ickdjs.cc/book_765393.html
- http://www.ickdjs.cc/book_3409541.html
- http://www.ickdjs.cc/book_3477455.html
- http://www.ickdjs.cc/book_901723.html