《Linux驱动程序开发实例》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:冯国进编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2011
  • ISBN:9787111333159
  • 页数:366 页
图书介绍:Linux设备驱动程序是高级应用程序与硬件设备之间的桥梁。驱动程序开发是软硬件结合的技术。本书是一本专门介绍Linux设备驱动程序开发的书籍,涵盖了Linux驱动程序基础、内核移植、I2C驱动程序、LCD驱动程序、网络驱动程序、USB驱动程序、输入子系统驱动程序、块设备驱动程序等内容。

第1章Linux设备驱动程序模型 1

1.1设备驱动程序基础 1

1.1.1驱动程序的概念 1

1.1.2驱动程序的加载方式 2

1.1.3编写可加载模块 3

1.1.4带参数的可加载模块 5

1.1.5设备驱动程序的分类 6

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

1.2.1 file_operations结构 7

1.2.2使用register chrdev注册字符设备 9

1.2.3使用cdev_add注册字符设备 11

1.2.4字符设备的读写 13

1.2.5 ioctl接口 14

1.2.6 seek接口 16

1.2.7 poll接口 18

1.2.8异步通知 22

1.3 proc文件系统 24

1.3.1 proc文件系统概述 24

1.3.2 seq_file机制 25

1.3.3使用proc文件系统 27

1.4块设备驱动程序 32

1.4.1 Linux块设备驱动程序原理 32

1.4.2简单的块设备驱动程序实例 35

1.5网络设备驱动程序 39

1.5.1网络设备的特殊性 39

1.5.2 sk_buff结构 40

1.5.3 Linux网络设备驱动程序架构 42

1.5.4虚拟网络设备驱动程序实例 46

1.6 Linux 2.6设备管理机制 50

1.6.1 kobject和kset 50

1.6.2 sysfs文件系统 51

1.6.3设备模型层次 52

1.6.4 platfonm的概念 54

第2章Linux内核同步机制 58

2.1锁机制 58

2.1.1自旋锁 58

2.1.2读写锁 60

2.1.3 RCU 61

2.2互斥 64

2.2.1原子操作 64

2.2.2信号量 65

2.2.3读写信号量 67

2.3等待队列 68

2.3.1等待队列原理 68

2.3.2阻塞式I/O实例 68

2.3.3完成事件 70

2.4关闭中断 71

第3章 内存管理与链表 72

3.1物理地址和虚拟地址 72

3.2内存分配与释放 72

3.3 IO端口到虚拟地址的映射 73

3.3.1静态映射 73

3.3.2动态映射 75

3.4内核空间到用户空间的映射 76

3.4.1内核空间到用户空间的地址映射原理 76

3.4.2 mmap地址映射实例 78

3.5内核链表 80

3.5.1 Linux内核中的链表 80

3.5.2内核链表实例 81

第4章 延迟处理 83

4.1内核线程 83

4.2软中断机制 85

4.2.1软中断原理 85

4.2.2 tasklet 87

4.3工作队列 89

4.3.1工作队列原理 89

4.3.2工作队列实例 91

4.4内核时间 92

4.4.1 Linux中的时间概念 92

4.4.2 Linux中的延迟 93

4.4.3内核定时器 93

第5章 简单设备驱动程序 96

5.1寄存器访问 96

5.1.1 S3C6410地址映射 96

5.1.2 S3C6410看门狗驱动程序实例 98

5.1.3 S3C6410蜂鸣器驱动程序实例 102

5.2电平控制 107

5.2.1 S3C6410 LED驱动程序实例 107

5.2.2扫描型S3C6410按键驱动程序实例 109

5.3时序产生 112

5.3.1时序图原理 112

5.3.2 AT24C02芯片原理 112

5.3.3 AT24C02驱动程序开发实例 115

5.4硬中断处理 123

5.4.1硬中断处理原理 123

5.4.2中断型S3C6410按键驱动程序实例 127

5.5 Linux I/O端口控制 132

5.5.1 Linux I/O端口读写 132

5.5.2在应用层访问Linux I/O端口 133

5.5.3 /dev/port设备 134

第6章 深入 Linux内核 135

6.1嵌入式Linux系统构成 135

6.2 Linux内核导读 136

6.2.1 Linux内核组成 136

6.2.2 Linux的代码结构 137

6.2.3内核Makefile 138

6.2.4 S3C6410硬件初始化 139

6.3 Linux文件系统 141

6.3.1虚拟文件系统 141

6.3.2根文件系统 143

6.3.3文件系统加载 143

6.3.4 ext3文件系统 145

6.4 Flash文件系统 145

6.4.1 MTD设备 145

6.4.2 MTD字符设备 148

6.4.3 MTD块设备 150

6.4.4 cramfs文件系统 153

6.4.5 JFFS2文件系统 153

6.4.6 YAFFS文件系统 155

6.4.7文件系统总结 156

6.5 Linux内核移植 156

6.5.1体系配置 156

6.5.2添加yaffs2 157

6.5.3 Nand flash驱动程序移植 157

6.5.4配置启动参数 159

6.5.5移植RTC驱动程序 160

6.6根文件系统制作 162

6.6.1 Busybox 162

6.6.2 shell基础 165

6.6.3根文件系统构建实例 166

6.7 udev模型 167

6.7.1 udev模型原理 167

6.7.2 mdev的使用 167

第7章I2C总线驱动程序 169

7.1 Linux的I2C驱动程序架构 169

7.1.1 I2C适配器 169

7.1.2 I2C算法 170

7.1.3 I2C 驱动程序结构 170

7.1.4 I2C从设备 171

7.1.5 i2c-dev设备层 171

7.2 Linux I2C驱动程序开发 174

7.2.1 S3C2410X的I2C控制器 174

7.2.2 S3C2410X的I2C驱动程序分析 175

7.3 S3C2410的I2C访问实例 182

7.4 I2C客户端驱动程序 185

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

8.1 TTY概念 190

8.2 Linux TTY驱动程序体系 190

8.2.1 TTY驱动程序调用关系 190

8.2.2 TTY驱动程序原理 191

8.3线路规程 194

8.4串口驱动程序与TTY 196

8.4.1串口设备驱动程序原理 196

8.4.2 S3C6410的串口驱动程序实例 199

8.5 TTY应用层 202

第9章 网络设备驱动程序 205

9.1 DM9000网卡驱动程序开发 205

9.1.1 DM9000原理 205

9.1.2 DM9000X驱动程序分析 207

9.1.3 DM9000网口驱动程序移植 215

9.2 NFS根文件系统搭建 219

9.2.1主机配置 219

9.2.2 NFS根文件系统搭建实例 220

9.3 netlink Socket 224

9.3.1 netlink机制 224

9.3.2 netlink应用层编程 228

9.3.3 netlink驱动程序实例 229

第10章framebuffer驱动程序 232

10.1 Linux framebuffer驱动程序原理 232

10.1.1 framebuffer核心数据结构 232

10.1.2 framebuffer操作接口 234

10.1.3 framebuffer驱动程序的文件接口 236

10.1.4 framebuffer驱动程序框架 236

10.2 S3C6410显示控制器 238

10.3 S3C6410 LCD驱动程序实例 243

10.4 framebuffer应用层 250

10.5 Qt4界面系统移植 251

第11章 输入子系统驱动程序 253

11.1 Linux输入子系统概述 253

11.1.1 input dev结构 253

11.1.2输入事件 255

11.2 input handler 256

11.2.1 Input Handler层 256

11.2.2常用的Input Handler 259

11.3输入设备应用层 261

11.4键盘输入设备驱动程序实例 262

11.5 event接口 267

11.6触摸屏驱动程序实例 270

11.6.1 S3C6410触摸屏控制器 270

11.6.2 S3C6410触摸屏驱动程序设计 273

11.7触摸屏校准 282

11.7.1触摸屏校准原理 282

11.7.2利用TSLIB库校准触摸屏 282

第12章USB驱动程序 284

12.1 USB体系概述 284

12.1.1 USB系统组成 284

12.1.2 USB主机 284

12.1.3 USB设备逻辑层次 285

12.2 Linux USB驱动程序体系 287

12.2.1 USB总体结构 287

12.2.2 USB设备驱动程序 287

12.2.3主机控制器驱动程序 288

12.2.4 USB请求块urb 289

12.2.5 USB请求块的填充 291

12.3 S3C6410 USB主机控制器驱动程序 292

12.3.1 USB主机控制器驱动程序分析 292

12.3.2 S3C6410 USB驱动程序加载 294

12.4 USB键盘设备驱动程序分析 296

12.5 USB Gadget驱动程序 301

12.5.1 Linux USB Gadget驱动程序 301

12.5.2 Linux USB Gadget驱动程序实例 302

第13章 音频设备驱动程序 303

13.1 ALSA音频体系 303

13.2 ALSA驱动层API 304

13.2.1声卡和设备管理 304

13.2.2 PCM API 304

13.2.3控制与混音API 305

13.2.4 AC97 API 306

13.2.5 SOC层驱动 307

13.3 ALSA驱动程序实例 308

13.3.1 S3C6410的AC97控制单元 308

13.3.2 S3C6410声卡电路原理 309

13.3.3 S3C6410的数字音频接口 310

13.3.4 wm9713的数字音频接口 313

13.4 ALSA音频编程接口 316

13.4.1 ALSA PCM接口实例 316

13.4.2 ALSA MIDI接口实例 320

13.4.3 ALSA mixer接口实例 321

13.4.4 ALSA timer接口实例 322

第14章video4linux2视频驱动程序 327

14.1 video4linux2驱动程序架构 327

14.1.1 video4linux2驱动程序的注册 327

14.1.2 v412_fops接口 33

14.1.3常用的结构 332

14.1.4 video4linux2的ioctl函数 333

14.2 S3C6410摄像头驱动程序分析 333

14.2.1电路原理 333

14.2.2驱动程序分析 334

14.3 video4linux2应用层实例 339

第15章SD卡驱动程序 346

15.1 Linux SD卡驱动程序体系 346

15.1.1 SD卡电路原理 346

15.1.2 MMC卡驱动程序架构 347

15.1.3 MMC卡驱动程序相关结构 347

15.1.4 MMC卡块设备驱动程序 350

15.1.5 SD卡主机控制器接口驱动程序 356

15.2 S3C6410 SD卡控制器驱动程序分析 360

15.2.1电路原理 360

15.2.2 S3C6410 SDHCI驱动程序原理 360

15.2.3 SD卡的加载实例 364

参考文献 366