当前位置:首页 > 工业技术
Linux驱动程序开发实例  第2版
Linux驱动程序开发实例  第2版

Linux驱动程序开发实例 第2版PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:冯国进编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2017
  • ISBN:9787111567066
  • 页数:418 页
图书介绍:Linux设备驱动程序是高级应用程序与硬件设备之间的桥梁。驱动程序开发是软硬件相互结合的技术。本书是一本专门介绍Linux设备驱动程序开发的书籍,涵盖了Linux驱动程序基础、驱动模型、内存管理、内核同步机制、I2C驱动程序、LCD驱动程序、网络驱动程序、USB驱动程序、输入子系统驱动程序、块设备驱动程序、音频设备驱动等内容。本书以实例为主线,是为Linux设备驱动程序开发人员量身打造的学习精品书籍和实战指南。本书基于Linux 4.5内核,提供了丰富的实例代码和详细的注释,并附赠完整源代码供读者下载。本书主要面向各种层次的嵌入式Linux软硬件开发工程师,也可以作为各类嵌入式系统培训机构的培训实验教材和高校计算机课程教辅书籍。
《Linux驱动程序开发实例 第2版》目录

第1章 Linux设备驱动程序入门 1

1.1 设备驱动程序基础 1

1.1.1 驱动程序的概念 1

1.1.2 驱动程序的加载方式 2

1.1.3 编写可加载模块 3

1.1.4 带参数的可加载模块 4

1.1.5 模块依赖 5

1.1.6 printk的等级 7

1.1.7 设备驱动程序类别 8

1.2 字符设备驱动程序原理 9

1.2.1 file_operations结构 9

1.2.2 使用register_chrdev注册字符设备 11

1.2.3 使用cdev_add注册字符设备 14

1.2.4 字符设备的读写 16

1.2.5 IOCTL接口 17

1.2.6 seek接口 20

1.2.7 poll接口 22

1.2.8 异步通知 26

1.3 seq_file机制 28

1.3.1 seq_file原理 28

1.3.2 seq_file实例 29

1.4 /proc文件系统 35

1.4.1 /proc文件系统概述 35

1.4.2 /proc文件系统接口 36

1.5 Linux内核导读 40

1.5.1 Linux内核组成 40

1.5.2 Linux的代码结构 42

1.5.3 内核Makefile 43

第2章 Linux设备驱动模型 44

2.1 内核对象 44

2.1.1 kobject 44

2.1.2 kobj_type 45

2.1.3 kset 45

2.2 设备模型层次 46

2.3 sysfs文件系统 49

2.4 platform概念 51

2.5 Attributes 56

2.6 设备事件通知 60

2.6.1 kobject uevent 60

2.6.2 uevent helper 61

2.6.3 udev 63

2.7 设备树 64

第3章 Linux内核同步机制 67

3.1 原子操作 67

3.2 锁机制 68

3.2.1 自旋锁 68

3.2.2 读写锁 70

3.2.3 RCU 71

3.2.4 信号量 75

3.2.5 读写信号量 77

3.2.6 互斥量 77

3.3 等待队列 78

3.3.1 等待队列原理 78

3.3.2 阻塞模式读实例 78

3.3.3 完成事件 81

3.4 通知链 83

第4章 内存管理与链表 86

4.1 物理地址和虚拟地址 86

4.2 内存分配与释放 87

4.3 cache 88

4.4 IO端口到虚拟地址的映射 88

4.4.1 静态映射 88

4.4.2 ioremap 89

4.5 内核空间到用户空间的映射 90

4.5.1 mmap接口 90

4.5.2 mmap系统调用 91

4.6 DMA映射 93

4.7 内核链表 93

4.7.1 Linux内核中的链表 93

4.7.2 内核链表实例 95

第5章 任务与调度 98

5.1 schedule 98

5.2 内核线程 99

5.3 内核调用应用程序 101

5.4 软中断机制 103

5.4.1 软中断原理 103

5.4.2 tasklet 106

5.5 工作队列 108

5.5.1 工作队列原理 108

5.5.2 延迟工作队列 110

5.6 内核时间 110

5.6.1 Linux下的时间概念 110

5.6.2 Linux下的延迟 111

5.6.3 内核定时器 112

第6章 简单硬件设备驱动程序 115

6.1 硬件基础知识 115

6.1.1 硬件设备原理 115

6.1.2 时序图原理 116

6.1.3 嵌入式Linux系统构成 117

6.1.4 硬件初始化 117

6.1.5 clk体系 120

6.2 dev/mem与dev/kmem 121

6.3 寄存器访问 124

6.3.1 S3C6410X地址映射 124

6.3.2 S3C6410X看门狗驱动程序实例 128

6.4 电平控制 131

6.4.1 S3C6410X LED驱动程序实例 132

6.4.2 扫描型按键驱动程序实例 135

6.5 硬件中断处理 137

6.5.1 硬件中断处理原理 137

6.5.2 中断型按键驱动程序实例 141

6.6 看门狗驱动架构 146

6.7 RTC驱动 148

6.8 LED类设备 153

第7章 I2C设备驱动程序 157

7.1 I2C接口原理 157

7.2 Linux的I2C驱动程序架构 159

7.2.1 I2C适配器 160

7.2.2 I2C算法 161

7.2.3 I2C从设备 161

7.2.4 I2C从设备驱动 162

7.2.5 I2C从设备驱动开发 163

7.3 I2C控制器驱动 163

7.3.1 S3C2410X的I2C控制器 163

7.3.2 S3C2410X的I2C控制器驱动 164

7.4 通用I2C从设备 172

7.4.1 通用I2C从设备驱动 172

7.4.2 通过read与write接口读写 174

7.4.3 通过I2C_RDWR命令读写 177

7.4.4 I2Ctools 180

7.5 个性化I2C从设备驱动 181

第8章 TTY与串口驱动程序 185

8.1 TTY概念 185

8.2 Linux TTY驱动程序体系 185

8.2.1 TTY驱动程序架构 185

8.2.2 TTY文件层 186

8.2.3 线路规程层 188

8.2.4 TTY驱动层 190

8.2.5 TTY数据链路分析 193

8.3 串口驱动层 194

8.3.1 uart_driver 194

8.3.2 uart_port 195

8.4 S3C6410X串口设备驱动程序 197

8.5 TTY应用层 201

第9章 Framebuffer驱动程序 203

9.1 Linux Framebuffer驱动程序原理 203

9.1.1 Framebuffer核心数据结构 203

9.1.2 Framebuffer操作接口 206

9.1.3 Framebuffer驱动的文件接口 207

9.1.4 Framebuffer驱动框架代码分析 209

9.2 S3C6410X显示控制器 210

9.3 S3C6410X LCD驱动程序实例 215

9.3.1 注册与初始化 215

9.3.2 fb_ops实现 220

9.3.3 DMA传输机制 222

9.3.4 内核配置 227

9.4 Framebuffer应用层 227

9.5 Qt界面系统移植 229

第10章 输入子系统 231

10.1 Linux输入子系统概述 231

10.2 Linux输入子系统原理 231

10.2.1 输入设备 232

10.2.2 输入事件 233

10.2.3 input Handler层 234

10.2.4 常用的Input Handler 236

10.3 输入设备应用层 241

10.4 键盘输入设备驱动程序实例 243

10.5 Event接口实例 249

10.6 触摸屏驱动程序实例 253

10.6.1 S3C6410X触摸屏控制器 253

10.6.2 S3C6410X触摸屏驱动程序 255

10.7 Linux红外遥控驱动 263

第11章 块设备驱动与文件系统 268

11.1 块设备驱动原理 268

11.1.1 block_device 268

11.1.2 gendisk 269

11.1.3 bio 270

11.1.4 请求队列 271

11.2 Linux文件系统概述 276

11.2.1 虚拟文件系统 277

11.2.2 日志文件系统和非日志文件系统 278

11.2.3 根文件系统 279

11.2.4 文件系统总结 280

11.2.5 文件系统挂载 280

11.3 虚拟文件系统接口 281

11.3.1 VFS文件接口 281

11.3.2 VFS目录接口 283

11.4 根文件系统制作 284

11.4.1 Busybox 284

11.4.2 shell基础 286

11.4.3 根文件系统构建实例 288

11.4.4 添加mdev 288

11.5 NFS根文件系统搭建 289

第12章 NAND Flash驱动 293

12.1 MTD设备层 293

12.1.1 MTD架构 293

12.1.2 MTD字符设备 295

12.1.3 MTD块设备 300

12.2 NAND Flash驱动层概述 304

12.2.1 硬件原理 304

12.2.2 NAND核心层架构 305

12.2.3 NAND Flash坏块处理 308

12.3 S3C6410X NAND Flash驱动 310

12.4 Ubifs文件系统实例 315

第13章 网络设备驱动程序 319

13.1 网络设备程序概述 319

13.1.1 网络设备的特殊性 319

13.1.2 sk_buff结构 320

13.1.3 网络设备驱动程序架构 321

13.1.4 虚拟网络设备驱动程序实例 325

13.1.5 网络硬件接口的分层结构 329

13.2 DM9000A网卡驱动程序开发 329

13.2.1 DM9000A原理 329

13.2.2 DM9000A驱动程序分析 331

13.2.3 DM9000A网卡驱动程序移植 341

13.4 ethtool 344

13.5 PHY芯片驱动 347

13.6 Netlink Socket 352

13.6.1 Netlink机制 352

13.6.2 Netlink应用层编程 357

13.6.3 Netlink驱动程序实例 357

第14章 USB驱动程序 361

14.1 USB体系概述 361

14.1.1 USB系统组成 361

14.1.2 USB主机 361

14.1.3 USB设备逻辑层次 362

14.2 Linux USB驱动程序体系 364

14.2.1 USB总体结构 364

14.2.2 USB设备驱动 364

14.2.3 USB设备 365

14.2.4 主机控制器驱动 366

14.2.5 USB请求块urb 367

14.3 USB设备枚举 370

14.4 S3C6410X USB主机控制器驱动程序 372

14.4.1 驱动程序原理分析 372

14.4.2 S3C6410X加载U盘实例 374

14.5 USB键盘设备驱动程序分析 375

第15章 音频设备驱动程序 380

15.1 ALSA音频体系 380

15.2 ALSA核心层 381

15.2.1 声卡 381

15.2.2 音频设备 382

15.2.3 PCM 382

15.2.4 音频控制接口 384

15.2.5 AC97声卡 387

15.3 ALSA SOC架构 388

15.3.1 SOC声卡 389

15.3.2 DAI 392

15.3.3 codec 393

15.3.4 SOC平台 394

15.3.5 PCM运行时配置 394

15.3.6 DAPM 397

15.4 ALSA驱动程序实例 400

15.4.1 S3C6410X的AC97控制单元 401

15.4.2 Machine Driver 402

15.4.3 Platform Driver 403

15.4.4 Codec Driver 408

15.5 ALSA音频缓冲逻辑 409

15.6 ALSA应用编程接口 413

参考文献 418

相关图书
作者其它书籍
返回顶部