《嵌入式Linux驱动开发教程》一书由华清远见嵌入式学院、姜先刚、刘洪涛 编着,电子工业出版社2017年6月出版
基本介绍
- 书名:嵌入式Linux驱动开发教程
- 作者:华清远见嵌入式学院 姜先刚 刘洪涛
- ISBN:978-7-121-31359-2
- 页数:400
- 定价:69.00
- 出版社:电子工业出版社
- 出版时间:2017年6月
- 开本:16
内容提要
《嵌入式Linux驱动开发教程》结合大量实例,在基于ARM Cortex-A9四核处理器Exynos4412的硬体教学平台和PC上,全面详细地讲解了Linux设备驱动开发。主要内容包括开发环境的搭建、核心模组、字元设备驱动框架、高级I/O、中断和时间管理、互斥和同步、记忆体和DMA、Linux设备模型、外设的驱动实例、汇流排类设备驱动、块设备驱动、网路设备驱动和核心调试技术。每一个知识点都有一个对应的典型实例,大多数实例既可以在上面说到的嵌入式平台上运行,也可以在PC上运行。另外,《嵌入式Linux驱动开发教程》也引入了新核心的一些新特性,比如高解析度定时器、针对嵌入式平台的dmaengine和设备树。在需要重点关注的地方还加入了大量的核心源码分析,使读者能够快速并深刻理解Linux设备驱动的开发。
《嵌入式Linux驱动开发教程》可作为大学院校电子、通信、计算机、自动化等专业的嵌入式Linux设备驱动开发课程的教材,也可供嵌入式Linux驱动开发人员参考。
目录
第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