Android驱动开发权威指南.杨柳(带详细书签) PDF 下载 高清 完整版
本书根据作者多年的从业经验,从开发实战出发,全面深入地讲解了Android驱动开发。本书以Android驱动本质为源,深入浅出地剖析了Android驱动程序开发要用到的DMA、中断、同步、等待队列与signal等多项技术。本书还从系统的角度描述了Android驱动与Android其他部分的有机结合,为Android用户提供各类智能输入/输出服务。 本书适合从事Linux开发、Android底层驱动开发、系统框架开发,以及Android底层模块验证测试等的相关软件工程人员阅读;也适合从事Android智能手机其他领域的研发人员参考;还适合作为大、中专院校与培训机构的相关实践性指导教材。 目 录 前言 第一篇 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 Linux I/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模块JNI 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 开机模式的定制 参考文献
《Android驱动开发权威指南》根据作者(杨柳)多年的从业经验,从开发实战出发,全面深入地讲解了Android驱动开发。全书以Android驱动本质为源,深入浅出地剖析了Android驱动程序开发要用到的DMA、中断、同步、等待队列与signal等多项技术。还从系统的角度描述了Android驱动与Android其他部分的有机结合,为Android用户提供各类智能输入/输出服务。
用户评论