当前位置:首页 > 工业技术
深入理解Linux驱动程序设计
深入理解Linux驱动程序设计

深入理解Linux驱动程序设计PDF电子书下载

工业技术

  • 电子书积分:9 积分如何计算积分?
  • 作 者:吴国伟,姚琳,毕成龙编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302401636
  • 页数:192 页
图书介绍:讲解Linux内核的组成和机制,包括进程管理、设备管理、中断机制、内核同步互斥机制等,着重讲解Linux驱动设计,包括Linux下字符设备、块设备、网络设备、framebuffer设备、sd卡等驱动程序、usb驱动的开发,同时阐述嵌入式Linux的系统开发和分析方法。
《深入理解Linux驱动程序设计》目录

第1章 Linux内核组成和机制 1

1.1 Linux内核版本与发展 1

1.1.1 Linux操作系统的诞生 1

1.1.2 Linux内核版本的变迁 2

1.2 Linux内核编译 3

1.2.1 获取内核源码 3

1.2.2 内核源码树 3

1.2.3 编译内核 4

1.3 Linux内核组成 6

1.4 Linux内核机制 7

1.4.1 内核启动过程 7

1.4.2 模块机制 8

第2章 Linux内核设备管理方式 10

2.1 devfs设备文件系统 10

2.2 sysfs文件系统 10

2.3 udev设备文件系统 12

2.4 主要数据结构 12

2.4.1 kobject 12

2.4.2 ktype 14

2.4.3 kset 14

2.4.4 三者关系 15

2.5 热插拔设备管理机制 16

2.5.1 热插拔事件流程 16

2.5.2 涉及的模块 18

2.5.3 关键驱动函数 19

第3章 Linux驱动开发基础 20

3.1 同步机制 20

3.1.1 内核同步机制分类 21

3.1.2 自旋锁与信号量的比较 33

3.2 make及makefile 33

3.2.1 makefile文件 34

3.2.2 编写makefile文件 34

3.2.3 make命令 38

3.3 调试方法 41

3.3.1 printk 42

3.3.2 /proc文件系统 43

3.3.3 调试器及相关工具 44

第4章 Linux字符设备驱动开发 46

4.1 关键数据结构 48

4.2 接口函数部分内核代码分析 51

4.3 字符设备驱动设计 57

4.3.1 字符设备驱动设计场景描述 57

4.3.2 字符设备驱动设计过程 57

第5章 Linux内核中断机制 61

5.1 中断 61

5.2 中断处理 62

5.2.1 注册中断处理程序 62

5.2.2 编写中断处理程序 63

5.3 中断上半部与下半部的对比 63

5.4 中断下半部 64

5.5 BH机制与任务队列机制 64

5.6 软中断 65

5.6.1 软中断的实现 65

5.6.2 软中断的使用 66

5.7 tasklet 66

5.7.1 tasklet的实现 66

5.7.2 tasklet的使用 68

5.8 工作队列 68

5.8.1 工作队列的实现 68

5.8.2 工作队列的使用 69

第6章 Linux块设备驱动开发 71

6.1 块设备管理机制 71

6.1.1 块设备基本概念 71

6.1.2 块设备在Linux中的结构 72

6.2 块设备关键数据结构 73

6.2.1 gendisk数据结构 73

6.2.2 block_device_operations数据结构 74

6.2.3 request数据结构 75

6.2.4 request_queue数据结构 77

6.2.5 bio数据结构 78

6.3 块设备驱动设计函数 81

6.3.1 块设备驱动注册与注销函数 81

6.3.2 块设备驱动打开与关闭函数 81

6.3.3 块设备驱动ioctl、read和write函数 81

6.3.4 块设备驱动的请求函数 82

6.4 Ramdisk块设备驱动实例 83

6.4.1 Ramdisk块设备驱动实例分析 83

6.4.2 Ramdisk块设备驱动实例测试 84

第7章 Linux网络设备驱动开发 86

7.1 网络设备 86

7.1.1 网络系统分层结构 86

7.1.2 网络设备管理 87

7.2 NAPI机制 89

7.3 关键数据结构 90

7.4 内核提供的网络设备驱动设计函数 92

7.4.1 alloc_netdev 92

7.4.2 register_netdev 92

7.4.3 ether_setup 92

7.4.4 unregister_netdev 93

7.5 网络设备驱动开发实例 93

7.5.1 snull_init_module函数 94

7.5.2 snull_init函数 94

7.5.3 相关操作函数 95

第8章 Linux MMC/SD驱动开发 100

8.1 MMC子系统基本架构 100

8.2 关键数据结构 101

8.2.1 基本数据结构 101

8.2.2 基本数据结构主要成员及关系 101

8.3 MMC/CD卡驱动实例 105

8.3.1 MMC/SD卡设备驱动设计场景 105

8.3.2 MMC/SD卡设备驱动实例实现 107

第9章 LinuxUSB驱动开发 115

9.1 USB设备管理机制 115

9.1.1 USB与串口 115

9.1.2 USB设备属性拓扑结构管理机制 115

9.1.3 USB设备逻辑组织管理机制 116

9.2 USB驱动关键数据结构分析 117

9.3 USB设备驱动函数及其使用说明 119

9.3.1 客户端驱动管理 119

9.3.2 USB设备配置和管理 120

9.3.3 主机控制器的管理 121

9.3.4 协议控制命令集和数据传输管理 122

9.4 USB设备驱动开发实例 123

9.4.1 实例开发场景设计 123

9.4.2 USB设备驱动开发实例的实现 123

9.4.3 驱动测试分析 128

第10章 Linux I2C总线设备驱动 130

10.1 Linux总线驱动及I2C总线 130

10.1.1 Linux总线驱动设计过程 130

10.1.2 I2C总线的工作原理与应用 131

10.1.3 总线基本操作 132

10.2 Linux I2C体系结构 133

10.2.1 Linux的I2C体系结构组成 133

10.2.2 Linux I2C关键数据结构 134

10.3 Linux I2C核心 139

10.4 Linux I2C总线驱动 141

10.4.1 I2C适配器驱动加载与卸载 141

10.4.2 I2C总线通信方法 141

10.5 Linux I2C设备驱动 143

10.5.1 Linux I2C设备驱动模块加载与卸载 144

10.5.2 Linux I2C设备驱动的数据传输 144

10.5.3 Linux i2c-dev.c文件分析 145

10.6 Linux I2C驱动实例——EEPROM 146

10.6.1 初始化 146

10.6.2 探测设备 147

10.6.3 检查适配器的功能 148

10.6.4 访问设备 148

10.6.5 其他函数 149

第11章 Linux PCI总线设备驱动 151

11.1 PCI总线设备 151

11.1.1 PCI总线 151

11.1.2 PCI设备 152

11.2 PCI设备驱动结构 155

11.3 PCI设备驱动实例 156

11.3.1 PCI设备驱动程序基本框架 156

11.3.2 初始化设备模块 158

11.3.3 打开设备模块 159

11.3.4 数据读写和控制信息模块 160

11.3.5 中断处理模块 160

11.3.6 释放设备模块 161

11.3.7 卸载设备模块 162

第12章 Linux输入设备驱动 163

12.1 Linux输入子系统结构 163

12.2 输入设备驱动核心数据结构分析 164

12.3 Linux输入设备驱动实例 168

12.3.1 输入设备驱动流程 168

12.3.2 USB鼠标驱动编写实例 169

第13章 Linux Flash驱动开发 174

13.1 Flash存储器 174

13.2 Linux MTD系统层次结构 174

13.3 关键数据结构 175

13.3.1 mtd_info结构体 176

13.3.2 mtd_table结构体 178

13.3.3 mtd_part结构体 179

13.3.4 mtd_partition结构体 179

13.3.5 map_info结构体 179

13.4 驱动相关函数 180

13.4.1 add_mtd_device函数 180

13.4.2 del_mtd_device函数 180

13.4.3 add_mtd_partitions函数 180

13.4.4 del_mtd_partitions函数 181

13.4.5 do_map_probe函数 182

13.5 Nor型Flash驱动实例 183

13.5.1 Nor型Flash驱动设计流程 183

13.5.2 Nor型Flash驱动详细设计 184

13.6 Nand型Flash驱动实例 188

13.6.1 Nand型Flash设备驱动设计步骤 188

13.6.2 Nand型Flash驱动实现 189

参考文献 192

返回顶部