《嵌入式Linux驱动开发教程》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:华清远见嵌入式学院
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2017
  • ISBN:9787121313592
  • 页数:389 页
图书介绍:本书结合大量实例,在基于ARM Cortex—A9四核处理器Exynos4412的硬件教学平台和PC机上,全面详细讲解了Linux设备驱动开发。主要内容包含开发环境的搭建,内核模块,字符设备驱动框架,高级I/O,中断和时间管理,互斥和同步,内存和DMA,Linux设备模型,外设的驱动实例,总线类设备驱动,块设备驱动,网络设备驱动和内核调试技巧。对每一个知识点都有一个对应的典型实例,大多数实例既可以在上面说到的嵌入式平台上运行,也可以在PC机上运行。

第1章 概述 1

第2章 内核模块 6

2.1第一个内核模块程序 7

2.2内核模块的相关工具 10

2.3内核模块一般的形式 11

2.4将多个源文件编译生成一个内核模块 13

2.5内核模块参数 15

2.6内核模块依赖 17

2.7关于内核模块的进一步讨论 20

2.8习题 21

第3章 字符设备驱动 23

3.1字符设备驱动基础 24

3.2字符设备驱动框架 30

3.3虚拟串口设备 35

3.4虚拟串口设备驱动 35

3.5一个驱动支持多个设备 39

3.6习题 45

第4章 高级I/O操作 46

4.1 ioctl设备操作 47

4.2 proc文件操作 56

4.3非阻塞型I/O 58

4.4阻塞型I/O 60

4.5 I/O多路复用 65

4.6异步I/O 69

4.7几种I/O模型总结 73

4.8异步通知 74

4.9 mmap设备文件操作 83

4.10定位操作 88

4.11习题 90

第5章 中断和时间管理 92

5.1中断进入过程 93

5.2驱动中的中断处理 98

5.3中断下半部 101

5.3.1软中断 102

5.3.2 tasklet 104

5.3.3工作队列 106

5.4延时控制 108

5.5定时操作 109

5.5.1低分辨率定时器 109

5.5.2高分辨率定时器 112

5.6习题 114

第6章 互斥和同步 116

6.1一种典型的竞态 117

6.2内核中的并发 117

6.3中断屏蔽 118

6.4原子变量 119

6.5自旋锁 120

6.6读写锁 122

6.7顺序锁 123

6.8信号量 125

6.9读写信号量 127

6.10互斥量 127

6.11 RCU机制 128

6.12虚拟串口驱动加入互斥 130

6.13完成量 134

6.14习题 135

第7章 内存和DMA 137

7.1内存组织 138

7.2按页分配内存 139

7.3 slab分配器 142

7.4不连续内存页分配 144

7.5 per-CPU变量 145

7.6动态内存实例 146

7.7 I/O内存 147

7.8 DMA原理及映射 155

7.8.1 DMA工作原理 155

7.8.2 DMA映射 157

7.9 DMA统一编程接口 160

7.10习题 164

第8章 Linux设备模型 166

8.1设备模型基础 167

8.2总线、设备和驱动 171

8.3平台设备及其驱动 176

8.3.1平台设备 176

8.3.2平台驱动 178

8.3.3平台驱动简单实例 179

8.3.4电源管理 182

8.3.5 udev和驱动的自动加载 183

8.3.6使用平台设备的LED驱动 184

8.3.7自动创建设备节点 190

8.4 Linux设备树 193

8.4.1 Linux设备树的由来 193

8.4.2 Linux设备树的目的 194

8.4.3 Linux设备树的使用 195

8.4.4使用设备树的LED驱动 202

8.5习题 204

第9章 字符设备驱动实例 205

9.1 LED驱动 206

9.2基于中断的简单按键驱动 209

9.3基于输入子系统的按键驱动 213

9.4 ADC驱动 222

9.5 PWM驱动 231

9.6 RTC驱动 239

第10章 总线类设备驱动 243

10.1 I2C设备驱动 244

10.1.1 I2C协议简介 244

10.1.2 Linux I2C驱动 246

10.1.3 I2C设备驱动实例 251

10.2 SPI设备驱动 258

10.2.1 SPI协议简介 258

10.2.2 Linux SPI驱动 259

10.2.3 SPI设备驱-动范例 264

10.3 USB设备驱动 268

10.3.1 USB协议简介 268

10.3.2 Linux USB驱动 271

10.3.3 USB设备驱动实例 274

10.4 PCI设备驱动 283

10.4.1 PCI协议简介 283

10.4.2 Linux PCI驱动 287

10.4.3 PCI设备驱动实例 288

10.5习题 296

第11章 块设备驱动 298

11.1磁盘结构 299

11.2块设备内核组件 300

11.3块设备驱动核心数据结构和函数 301

11.4块设备驱动实例 308

11.5习题 316

第12章 网络设备驱动 317

12.1网络层次结构 318

12.2网络设备驱动核心数据结构和函数 319

12.3网络设备驱动实例 327

12.4 DM9000网络设备驱动代码分析 333

12.5 NAPI 340

12.6习题 343

第13章 内核调试技术 344

13.1内核调试方法 345

13.1.1内核调试概述 345

13.1.2学会分析内核源程序 346

13.1.3调试方法介绍 346

13.2内核打印函数 350

13.2.1内核镜像解压前的串口输出函数 350

13.2.2内核镜像解压后的串口输出函数 352

13.2.3内核打印函数 353

13.3获取内核信息 357

13.3.1系统请求键 357

13.3.2通过/proc接口 358

13.3.3通过/sys接口 359

13.4处理出错信息 362

13.4.1 oops信息 362

13.4.2 panic 364

13.4.3通过ioctl方法 366

13.5内核源码调试 367

13.6习题 369

第14章 搭建开发环境 370

14.1准备Linux开发主机 371

14.2安装串口相关软件 375

14.2.1安装串口驱动 375

14.2.2安装串口终端软件PuTTY 376

14.2.3安装串口终端软件minicom 377

14.3安装TFTP和NFS服务器 379

14.4准备Linux内核源码 381

14.5在目标板上运行Linux系统 382

14.6源码浏览及编辑器环境 386

习题答案 388

参考文献 389