精通Linux设备驱动程序开发 PDF格式高清电子书免费下载

精通Linux设备驱动程序开发

作者 【印】Sreekrishnan Venkateswaran(斯里克里斯汉 温卡特斯瓦兰)
译者 宋宝华 何昭然 史海滨 吴国成
出版社 人民邮电出版社
出版日期 2016-04-01
页数 420
格式 Paper book / ebook (PDF)
ISBN 9787115402516
价格 89
  • 内容简介
  • 图书目录
  • 免费下载

出版信息

ISBN:9787115402516
语言:简体中文
包装/印刷类型:1
开本:16开
出版时间:2016-04-01
页数:420

内容简介

本书阐述了Linux设备驱动程序所涉及的所有概念和技术,主要内容包括Linux 2.6内核的功能、简单驱动类、串行总线、外部总线(如PCMCIA、PCI和USB)、视频、音频、网络驱动程序、用户空间驱动程序,等等。在解释每一个技术时,均讲解了相关的内核源码文件,并给出了完整的开发实例。

《精通Linux设备驱动程序开发》是Linux设备驱动程序开发领域的著作。全书基于2.6内核,不仅透彻讲解了基本概念和技术,更深入探讨了其他书没有涵盖或浅尝辄止的许多重要主题和关键难点,如PCMCIA、I2C和USB等外部总线以及视频、音频、无线连网和闪存等驱动程序的开发,并讲解了相关的内核源码文件,给出了完整的开发实例。

《精通Linux设备驱动程序开发》适合中高 级Linux开发人员阅读。

图书目录

目录

第 1章 引言 1

1.1 演进 1

1.2 GNU Copyleft 2

1.3 kernel.org 2

1.4 邮件列表和论坛 3

1.5 Linux发行版 3

1.6 查看源代码 4

1.7 编译内核 7

1.8 可加载的模块 8

1.9 整装待发 9

第 2章 内核 11

2.1 启动过程 11

2.1.1 BIOS-provided physical RAM map 12

2.1.2 758MB LOWMEM available 14

2.1.3 Kernel command line: ro

root=/dev/hda1 14

2.1.4 Calibrating delay...1197.46

BogoMIPS (lpj=2394935) 15

2.1.5 Checking HLT instruction 16

2.1.6 NET: Registered protocol family 2 17

2.1.7 Freeing initrd memory: 387k freed 17

2.1.8 io scheduler anticipatory

registered (default) 18

2.1.9 Setting up standard PCI resources 18

2.1.10 EXT3-fs: mounted filesystem 19

2.1.11 INIT: version 2.85 booting 19

2.2 内核模式和用户模式 20

2.3 进程上下文和中断上下文 20

2.4 内核定时器 21

2.4.1 HZ和Jiffies 21

2.4.2 长延时 22

2.4.3 短延时 24

2.4.4 Pentium时间戳计数器 24

2.4.5 实时钟 25

2.5 内核中的并发 26

2.5.1 自旋锁和互斥体 26

2.5.2 原子操作 30

2.5.3 读—写锁 31

2.5.4 调试 32

2.6 proc文件系统 32

2.7 内存分配 33

2.8 查看源代码 34

第3章 内核组件 37

3.1 内核线程 37

3.1.1 创建内核线程 37

3.1.2 进程状态和等待队列 41

3.1.3 用户模式辅助程序 42

3.2 辅助接口 43

3.2.1 链表 44

3.2.2 散列链表 49

3.2.3 工作队列 49

3.2.4 通知链 51

3.2.5 完成接口 54

3.2.6 kthread辅助接口 56

3.2.7 错误处理助手 57

3.3 查看源代码 58

第4章 基本概念 61

4.1 设备和驱动程序介绍 61

4.2 中断处理 63

4.2.1 中断上下文 63

4.2.2 分配IRQ号 64

4.2.3 设备实例:导航杆 65

4.2.4 softirq和tasklet 68

4.3 Linux设备模型 71

4.3.1 udev 71

4.3.2 sysfs、kobject和设备类 73

4.3.3 热插拔和冷插拔 76

4.3.4 微码下载 76

4.3.5 模块自动加载 77

4.4 内存屏障 78

4.5 电源管理 79

4.6 查看源代码 79

第5章 字符设备驱动程序 81

5.1 字符设备驱动程序基础 81

5.2 设备实例:系统CMOS 82

5.2.1 驱动程序初始化 83

5.2.2 打开与释放 86

5.2.3 数据交换 88

5.2.4 查找 92

5.2.5 控制 94

5.3 检测数据可用性 95

5.3.1 轮询 95

5.3.2 Fasync 98

5.4 和并行端口交互 99

5.5 RTC子系统 108

5.6 伪字符驱动程序 109

5.7 混杂驱动程序 110

5.8 字符设备驱动程序注意事项 115

5.9 查看源代码 115

第6章 串行设备驱动程序 118

6.1 层次架构 119

6.2 UART驱动程序 121

6.2.1 设备实例:手机 122

6.2.2 RS-485 132

6.3 TTY驱动程序 132

6.4 线路规程 134

6.5 查看源代码 141

第7章 输入设备驱动程序 143

7.1 输入事件驱动程序 144

7.2 输入设备驱动程序 150

7.2.1 serio 150

7.2.2 键盘 150

7.2.3 鼠标 152

7.2.4 触摸控制器 157

7.2.5 加速度传感器 158

7.2.6 输出事件 158

7.3 调试 159

7.4 查看源代码 160

第8章 I2C协议 161

8.1 I2C/SMBus是什么 161

8.2 I2C核心 162

8.3 总线事务 164

8.4 设备实例:EEPROM 164

8.4.1 初始化 165

8.4.2 探测设备 167

8.4.3 检查适配器的功能 169

8.4.4 访问设备 169

8.4.5 其他函数 170

8.5 设备实例:实时时钟 171

8.6 i2c-dev 174

8.7 使用LM-Sensors监控硬件 174

8.8 SPI总线 174

8.9 1-Wire总线 176

8.10 调试 176

8.11 查看源代码 176

第9章 PCMCIA和CF 179

9.1 PCMCIA/CF是什么 179

9.2 Linux-PCMCIA子系统 181

9.3 主机控制器驱动程序 183

9.4 PCMCIA核心 183

9.5 驱动程序服务 183

9.6 客户驱动程序 183

9.6.1 数据结构 184

9.6.2 设备实例:PCMCIA卡 185

9.7 将零件组装在一起 188

9.8 PCMCIA存储 189

9.9 串行PCMCIA 189

9.10 调试 191

9.11 查看源代码 191

第 10章 PCI 193

10.1 PCI系列 193

10.2 寻址和识别 195

10.3 访问PCI 198

10.3.1 配置区 198

10.3.2 I/O和内存 199

10.4 DMA 200

10.5 设备实例:以太网—调制解调器卡 203

10.5.1 初始化和探测 203

10.5.2 数据传输 209

10.6 调试 214

10.7 查看源代码 214

第 11章 USB 216

11.1 USB体系架构 216

11.1.1 总线速度 218

11.1.2 主机控制器 218

11.1.3 传输模式 219

11.1.4 寻址 219

11.2 Linux-USB子系统 220

11.3 驱动程序的数据结构 221

11.3.1 usb_device结构体 221

11.3.2 URB 222

11.3.3 管道 223

11.3.4 描述符结构 223

11.4 枚举 225

11.5 设备实例:遥测卡 225

11.5.1 初始化和探测过程 226

11.5.2 卡寄存器的访问 230

11.5.3 数据传输 233

11.6 类驱动程序 236

11.6.1 大容量存储设备 236

11.6.2 USB-串行端口转换器 241

11.6.3 人机接口设备 243

11.6.4 蓝牙 243

11.7 gadget驱动程序 243

11.8 调试 244

11.9 查看源代码 245

第 12章 视频驱动程序 247

12.1 显示架构 247

12.2 Linux视频子系统 249

12.3 显示参数 251

12.4 帧缓冲API 252

12.5 帧缓冲驱动程序 254

12.6 控制台驱动程序 265

12.6.1 设备实例:手机 266

12.6.2 启动logo 270

12.7 调试 270

12.8 查看源代码 271

第 13章 音频驱动程序 273

13.1 音频架构 273

13.2 Linux声音子系统 275

13.3 设备实例:MP3播放器 277

13.3.1 驱动程序函数和结构体 278

13.3.2 ALSA编程 287

13.4 调试 288

13.5 查看源代码 289

第 14章 块设备驱动程序 291

14.1 存储技术 291

14.2 Linux块I/O层 295

14.3 I/O调度器 295

14.4 块驱动程序数据结构和方法 296

14.5 设备实例:简单存储控制器 298

14.5.1 初始化 299

14.5.2 块设备操作 301

14.5.3 磁盘访问 302

14.6 高 级主题 304

14.7 调试 306

14.8 查看源代码 306

第 15章 网络接口卡 308

15.1 驱动程序数据结构 308

15.1.1 套接字缓冲区 309

15.1.2 网络设备接口 310

15.1.3 激活 311

15.1.4 数据传输 311

15.1.5 看门狗 311

15.1.6 统计 312

15.1.7 配置 313

15.1.8 总线相关内容 314

15.2 与协议层会话 314

15.2.1 接收路径 314

15.2.2 发送路径 315

15.2.3 流量控制 315

15.3 缓冲区管理和并发控制 315

15.4 设备实例:以太网NIC 316

15.5 ISA网络驱动程序 321

15.6 ATM 321

15.7 网络吞吐量 322

15.7.1 驱动程序性能 322

15.7.2 协议性能 323

15.8 查看源代码 324

第 16章 Linux无线设备驱动 326

16.1 蓝牙 327

16.1.1 BlueZ 328

16.1.2 设备实例:CF卡 329

16.1.3 设备实例:USB适配器 330

16.1.4 RFCOMM 331

16.1.5 网络 332

16.1.6 HID 334

16.1.7 音频 334

16.1.8 调试 334

16.1.9 关于源代码 334

16.2 红外 335

16.2.1 Linux-IrDA 335

16.2.2 设备实例:超级I/O芯片 337

16.2.3 设备实例:IR Dongle 338

16.2.4 IrCOMM 340

16.2.5 联网 340

16.2.6 IrDA套接字 341

16.2.7 LIRC 341

16.2.8 查看源代码 342

16.3 WiFi 343

16.3.1 配置 343

16.3.2 设备驱动程序 346

16.3.3 查看源代码 347

16.4 蜂窝网络 347

16.4.1 GPRS 347

16.4.2 CDMA 349

16.5 当前趋势 350

第 17章 存储技术设备 352

17.1 什么是闪存 352

17.2 Linux-MTD子系统 353

17.3 映射驱动程序 353

17.4 NOR芯片驱动程序 358

17.5 NAND芯片驱动程序 359

17.6 用户模块 361

17.6.1 块设备模拟 361

17.6.2 字符设备模拟 361

17.6.3 JFFS2 362

17.6.4 YAFFS2 363

17.7 MTD工具 363

17.8 配置MTD 363

17.9 XIP 364

17.10 FWH 364

17.11 调试 367

17.12 查看源代码 367

第 18章 嵌入式Linux 369

18.1 挑战 369

18.2 元器件选择 370

18.3 工具链 371

18.4 Bootloader 372

18.5 内存布局 374

18.6 内核移植 375

18.7 嵌入式驱动程序 376

18.7.1 闪存 377

18.7.2 UART 377

18.7.3 按钮和滚轮 378

18.7.4 PCMCIA/CF 378

18.7.5 SD/MMC 378

18.7.6 USB 378

18.7.7 RTC 378

18.7.8 音频 378

18.7.9 触摸屏 379

18.7.10 视频 379

18.7.11 CPLD/FPGA 379

18.7.12 连接性 379

18.7.13 专用领域电子器件 380

18.7.14 更多驱动程序 380

18.8 根文件系统 380

18.8.1 NFS挂载的根文件系统 381

18.8.2 紧凑型中间件 382

18.9 测试基础设施 383

18.10 调试 383

18.10.1 电路板返工 384

18.10.2 调试器 385

第 19章 用户空间的驱动程序 386

19.1 进程调度和响应时间 387

19.1.1 原先的调度器 387

19.1.2 O(1)调度器 387

19.1.3 CFS 388

19.1.4 响应时间 388

19.2 访问I/O区域 390

19.3 访问内存区域 393

19.4 用户模式SCSI 395

19.5 用户模式USB 397

19.6 用户模式I2C 400

19.7 UIO 401

19.8 查看源代码 402

第 20章 其他设备和驱动程序 403

20.1 ECC报告 403

20.2 频率调整 407

20.3 嵌入式控制器 408

20.4 ACPI 408

20.5 ISA与MCA 410

20.6 火线 410

20.7 智能输入/输出 411

20.8 业余无线电 411

20.9 VoIP 411

20.10 高速互联 412

20.10.1 InfiniBand 413

20.10.2 RapidIO 413

20.10.3 光纤通道 413

20.10.4 iSCSI 413

第 21章 调试设备驱动程序 414

21.1 kdb 414

21.1.1 进入调试器 415

21.1.2 kdb 415

21.1.3 kgdb 417

21.1.4 gdb 420

21.1.5 JTAG调试器 421

21.1.6 下载 423

21.2 内核探测器 423

21.2.1 kprobe 423

21.2.2 jprobe 427

21.2.3 返回探针 429

21.2.4 局限性 431

21.2.5 查看源代码 431

21.3 kexec与kdump 431

21.3.1 kexec 432

21.3.2 kdump与kexec协同工作 432

21.3.3 kdump 433

21.3.4 查看源代码 437

21.4 性能剖析 437

21.4.1 利用OProfile剖析内核性能 438

21.4.2 利用gprof剖析应用程序性能 440

21.5 跟踪 441

21.6 LTP 444

21.7 UML 444

21.8 诊断工具 444

21.9 内核修改配置选项 444

21.10 测试设备 445

第 22章 维护与发布 446

22.1 代码风格 446

22.2 修改标记 446

22.3 版本控制 447

22.4 一致性检查 447

22.5 构建脚本 448

22.6 可移植代码 450

第 23章 结束语 451

23.1 流程一览表 451

23.2 下一步该做什么 452

附录A Linux汇编 453

附录B Linux与BIOS 457

附录C seq文件 461

点击展开

点击收起

精通Linux设备驱动程序开发 PDF格式高清电子书免费下载

提醒:本站所有图书资源均索引自互联网,版权争议与本站无关。如有侵权或其他争议的可能性,请发起版权投诉,因本站未参与任何制作、转制、存储等任一环节,故无法对涉及到的资源进行删除,本站会依据DMCA原则, 对涉及的资源链接进行删除。因为所有图书资源均不属于本站,本站只提供索引服务,故本站不保证任何资源的准确性,权威性,请使用者自行判断。

  • 查看原页面 报告错误 直接下载

看了 精通Linux设备驱动程序开发 的用户也看了: