内容简介
前言
第一篇Android的前世今生——Android概述篇
第1章Android的前世今生
1.1 Android的起源
1.2开放手机联盟
1.3开源与相关协议
1.4系统的升级与发展
第2章Android体系结构
2.1四层空间基本结构
2.1.1 Android系统底层开发
2.1.2应用程序开发
2.2 Android代码目录结构
2.3 Android开发环境搭建
第二篇 勿于浮砂筑高台——Linux驱动基础篇
第3章Linux内核综述
3.1 OS基本概念
3.1.1多用户系统
3.1.2用户和组
3.1.3进程
3.1.4 Linux单核架构
3.2 Linux内核综述
3.2.1进程/内核模型综述
3.2.2内存管理综述
3.2.3文件系统综述
3.2.4设备驱动简述
第4章Linux内核编程与内核模块
4.1 Linux内核源代码目录结构
4.2 Linux内核的编译与启动
4.3 Linux内核的C编程
4.4 Linux内核模块基础与骨架
4.5 Linux模块的加载与卸载
4.6 Linux模块的参数与导出符号
4.7 Linux模块的使用计数
第5章Linux文件系统
5.1 Linux文件系统概述
5.1.1 Linux文件系统的目录结构
5.1.2设备驱动与Linux文件系统的关联
5.2 Linux设备文件系统
5.2.1 devfs设备文件系统
5.2.2 udev设备文件系统
5.2.3 sysfs文件系统与Linux设备
5.2.4 udev的组成
5.2.5 udev规则文件
第6章Linux字符设备驱动
6.1 Linux字符设备驱动结构
6.1.1 cdev结构体
6.1.2分配和释放设备号
6.1.3 file_operations结构体
6.1.4 Linux字符设备驱动的组成
6.2一个字符设备驱动例子——virtualchar
6.2.1头文件、宏及设备结构体
6.2.2加载与卸载设备驱动
6.2.3驱动函数实现
6.2.4驱动设备私有数据
6.3对virtualchar设备的访问
第7章Linux设备驱动中的内存与I/O访问
7.1 CPU与内存和I/O之间的故事
7.1.1内存空间与I/O空间
7.1.2内存管理单元MMU
7.2 Linux内存管理
7.3 Linux内存访问
7.4 LinuxI/O访问
7.4.1访问I/O
7.4.2申请与释放I/O资源
7.4.3 I/O访问流程
7.4.4设备地址与用户空间的映射
7.5 DMA
7.5.1 DMA与Cache的一致性
7.5.2 Linux下的DMA编程
第8章Linux设备驱动中的中断
8.1 Linux中断及中断处理架构
8.2 Linux中断编程
8.2.1申请和释放中断
8.2.2使能与屏蔽中断
8.2.3底半部机制
8.2.4中断共享
8.3 Linux定时器
8.4 Linux延时处理
8.4.1短延时
8.4.2长延时
8.4.3睡眠延时
第9章Linux设备驱动中的并发
9.1 Linux中的并发与竞争
9.2 Linux中常用的同步访问技术
9.2.1中断屏蔽
9.2.2原子操作
9.2.3自旋锁
9.2.4信号量
9.2.5互斥灯
9.3增加并发控制的virtualchar驱动
第10章Linux设备的阻塞式与非阻塞式访问
10.1阻塞式与非阻塞式访问
10.1.1等待队列
10.1.2支持阻塞操作的virtualfifo设备驱动
10.2 Linux的轮询访问
10.2.1应用程序中的轮询编程
10.2.2设备驱动中的轮询编程
10.2.3支持轮询操作的virtualfifo驱动
第11章Linux设备驱动中的异步访问
11.1 Linux 2.6中的异步访问
11.1.1异步访问概念与GNU C库函数
11.1.2使用信号作为异步访问的通知
11.1.3使用回调函数作为异步访问的通知
11.1.4异步访问与设备驱动
11.2异步Fifo驱动例子
11.2.1在virtualfifo驱动中增加异步通知
11.2.2在用户空间验证virtualfifo的异步通知
第12章Linux块设备驱动
12.1块设备的I/O操作特点
12.2 Linux块设备驱动结构
12.2.1 block_device_operations结构体
12.2.2 gendisk结构体
12.2.3 request与bio结构体
12.2.4块设备驱动注册与注销
12.3 Linux块设备驱动的模块加载与卸载
12.4块设备的打开/释放IOCTL
第13章Linux网络设备驱动
13.1 Linux网络设备驱动体系结构
13.2 Linux网络设备驱动结构
13.3 Linux网络设备驱动I/O实现
13.3.1网络设备初始化
13.3.2网络数据包的收发
第三篇 实践出真知——Android驱动实践篇
第14章Android HAL层的设计
14.1 Android HAL概述
14.2为Android开发虚拟驱动virtualio
14.3 Android集成C程序访问virtualio
14.4 Android通过HAL访问virtualio
14.4.1 virtualio HAL模块实现
14.4.2实现访问virtualio HAL模块JN
14.4.3在Framework层增加virtualio服务
第15章Framebuffer子系统
15.1 Linux Framebuffer一般子系统
15.1.1 Framebuffer数据结构
15.1.2 Framebuffer驱动
15.2 Android Framebuffer子系统实践
15.2.1硬件基础
15.2.2 CPU侧显示驱动模块
15.2.3 LCM驱动模块
15.3 Android系统对Framebuffer的使用
第16章Input子系统
16.1 Linux Input一般子系统
16.1.1 Input数据结构
16.1.2 Input内核模块
16.2 Android Input子系统实践
16.2.1硬件基础
16.2.2 Input驱动模块
16.3 Android系统对Input的使用
第17章V4L2子系统
17.1 Linux V4L2一般子系统
17.1.1 V4L2数据结构
17.1.2 V4L2接口
17.1.3 V4L2虚拟驱动vivi
17.2 Android V4L2实践
17.2.1硬件基础
17.2.2 CPU侧CCIC驱动模块
17.2.3 OV5642模组驱动模块
17.3 Android系统对V4L2的使用
第18章Binder IPC通信子系统
18.1 Binder驱动概述
18.2 Binder通信模型
18.3 Binder驱动
18.3.1 Binder相关的结构体
18.3.2 Android Binder子系统的架构设计
18.4 Binder的工作流程
第19章USB子系统
19.1 USB协议基础知识
19.1.1 USB物理连接
19.1.2 USB通信协议
19.2 USB子系统底层
19.2.1 USB Core
19.2.2 Linux USB gadget三层架构
19.3 Android USB子系统实践
19.3.1 Android IPC通信补充
19.3.2 Android USB Mass Storage流程分析
第20章Bootloader引导子系统
20.1 Bootloader流程分析
20.1.1 Bootloader概述
20.1.2 U-Boot启动流程分析
20.2 Bootloader修改指南
20.2.1开机第一帧图的修改
20.2.2开机模式的定制
参考文献