
嵌入式Linux设备驱动开发详解
《嵌入式Linux设备驱动开发详》是人民邮电出版社2008年出版的图书,作者李俊。
基本介绍
- 书名:嵌入式Linux设备驱动开发详解
- 作者:李俊
- ISBN:10位[7115173427] 13位[9787115173423]
- 定价:¥49.00 元
- 出版社:人民邮电出版社
- 出版时间:2008-3-1
内容提要
该书详细讲解了嵌入式Linux的各种设备驱动。嵌入式Linux设备驱动是嵌入式系统中十分重要的组成部分。本书详细讲解了嵌入式Linux的各种设备驱动,包括字元设备驱动、数字显示驱动、键盘驱动、A/D驱动、D/A驱动、LCD驱动、触控萤幕驱动、CAN汇流排驱动、IIC汇流排驱动、音频汇流排驱动、IDE接口驱动、快闪记忆体晶片驱动、USB驱动、串口驱动、网路设备驱动等,并结合大量实例进行讲解,读者可以快速熟悉和掌握相关知识。
编辑推荐
本书特色:本书系统地介绍了嵌入式Linux设备驱动开发的相关知识和实例,主要包括:
数码管驱动程式;键盘驱动程式;A/D、D/A驱动程式;LCD驱动程式;触控萤幕驱动程式;CAN汇流排驱动程式;I2C汇流排驱动程式;音频汇流排驱动程式;IDE驱动程式;NAND Flash和NOR Flash驱动程式;USB设备驱动程式;串口驱动程式;网路设备驱动程式。
实例丰富、讲解细緻、代码分析详尽,嵌入式Linux设备驱动开发的理想参考用书。
目录
第1章 嵌入式系统与驱动程式 1
本章目标 1
1.1 嵌入式系统概述 1
1.1.1 嵌入式系统的概念 1
1.1.2 嵌入式系统的特点 2
1.1.3 嵌入式系统的体系结构 2
1.2 嵌入式处理器介绍 4
1.2.1 嵌入式处理器分类 4
1.2.2 ARM概述 5
1.2.3 ARM系列晶片简介 5
1.3 嵌入式作业系统介绍 7
1.3.1 主流嵌入式作业系统 7
1.3.2 嵌入式系统的发展状况 8
1.3.3 嵌入式Linux介绍 8
1.3.4 嵌入式系统开发环境的建立 9
1.3.5 嵌入式软体开发 10
1.4 嵌入式Linux驱动程式 12
1.4.1 嵌入式Linux的核心空间和用户空间 12
1.4.2 嵌入式Linux的档案系统 12
1.4.3 嵌入式Linux的设备管理 14
1.4.4 嵌入式Linux的驱动程式 16
1.5 知识索引 20
1.6 思考与练习 21
第2章 简单的字元设备驱动程式 23
本章目标 23
2.1 嵌入式Linux字元设备的驱动程式结构 23
2.1.1 嵌入式Linux驱动程式常用的头档案 24
2.1.2 File_operations结构体 24
2.1.3 字元设备驱动程式的入口 25
2.1.4 驱动程式的设备注册 26
2.2 设备驱动程式中的具体问题 27
2.2.1 I/O连线埠 28
2.2.2 记忆体操作 29
2.2.3 中断处理 29
2.3 LED的驱动程式实例及测试 30
2.3.1 LED I/O连线埠设定 30
2.3.2 LED硬体电路设计 32
2.3.3 LED驱动程式设计 33
2.3.4 LED测试程式设计 36
2.4 嵌入式Linux中断处理驱动程式及测试 37
2.4.1 中断处理过程 37
2.4.2 中断向量表 39
2.4.3 中断的处理模式 39
2.4.4 中断的优先权 40
2.4.5 中断的嵌套 40
2.4.6 中断源的扩展 40
2.4.7 中断控制暂存器的设定 41
2.5 按键中断的驱动程式实例 45
2.5.1 按键中断的电路设计 45
2.5.2 按键中断的驱动程式设计 45
2.6 知识索引 48
2.7 思考与练习 49
第3章 数字显示驱动程式 50
本章目标 50
3.1 数字显示器 50
3.1.1 数码管简介 50
3.1.2 数码管的分类 51
3.1.3 数码管显示原理 51
3.2 数码管显示电路的硬体设计 52
3.2.1 解码器的使用 52
3.2.2 数码管的驱动方式 53
3.2.3 串/并变换的解码设计 55
3.3 数码管驱动程式实例 56
3.3.1 驱动程式的初始化和卸载模组 56
3.3.2 档案操作结构模组 57
3.3.3 数码管的打开模组 57
3.3.4 数码管的读写模组 58
3.3.5 数码管的I/O控制模组 58
3.3.6 数码管的退出模组 58
3.3.7 驱动程式的模组载入和卸载 59
3.4 数码管显示电路测试程式设计 60
3.4.1 数码管测试设计 60
3.4.2 数码管测试程式 60
3.4.3 数码管测试效果 61
3.5 知识索引 61
3.6 思考与练习 62
第4章 键盘驱动程式 63
本章目标 63
4.1 键盘接口概述 63
4.1.1 键盘的分类 63
4.1.2 键盘的防抖 65
4.1.3 键盘的扫描 65
4.1.4 键盘的缓冲算法 67
4.2 键盘的驱动设计实例 67
4.2.1 锁存器和缓冲器扩展键盘 67
4.2.2 锁存器和缓冲器的接口 68
4.2.3 锁存器和缓冲器扩展键盘驱动程式设计 69
4.2.4 锁存器和缓冲器扩展键盘测试程式设计 71
4.3 智慧型控制晶片HD7279扩展键盘 72
4.3.1 HD7279的电路设计 72
4.3.2 HD7279的指令介绍 73
4.3.3 HD7279的串列接口 74
4.3.4 HD7279的驱动程式设计 75
4.3.5 HD7279的测试程式设计 84
4.4 知识索引 85
4.5 思考与练习 85
第5章 A/D驱动程式 86
本章目标 86
5.1 A/D转换的过程 86
5.1.1 採样和保持 86
5.1.2 量化和编码 88
5.1.3 ADC的分类 89
5.2 A/D转换器的基本原理 89
5.2.1 逐次逼近型A/D转换器 89
5.2.2 双积分型A/D转换器 90
5.2.3 V/F和F/V型转换器 93
5.2.4 其他A/D转换器 95
5.3 A/D转换器接口技术 97
5.3.1 ADC的主要参数及意义 97
5.3.2 ADC的电路选择方法 98
5.3.3 ADC实际套用中的问题 99
5.4 S3C2410 A/D转换驱动设计实例 99
5.4.1 S3C2410的A/D转换电路 99
5.4.2 S3C2410X的A/D转换控制暂存器 100
5.4.3 S3C2410X的A/D转换数据暂存器 101
5.4.4 S3C2410X中A/D转换驱动程式的设计 102
5.4.5 S3C2410X中A/D转换测试程式的设计 105
5.5 知识索引 106
5.6 思考与练习 107
第6章 D/A驱动程式 108
本章目标 108
6.1 D/A的原理介绍 108
6.1.1 D/A转换的概念及基本原理 108
6.1.2 电子模拟开关 109
6.1.3 D/A转换器的基本结构 110
6.1.4 D/A转换的静态参数 114
6.1.5 D/A转换的动态参数 115
6.2 D/A转换的硬体电路设计 116
6.2.1 D/A转换的接口技术 116
6.2.2 D/A转换晶片介绍 117
6.2.3 D/A转换的电路设计 118
6.3 D/A转换器的驱动程式实例 118
6.3.1 D/A驱动程式中的宏定义 118
6.3.2 D/A的模组载入 118
6.3.3 D/A转换器的档案操作模组 119
6.3.4 D/A转换器的读写控制模组 120
6.3.5 D/A转换器的打开、退出模组 120
6.4 测试程式的设计 120
6.4.1 D/A测试程式中的宏定义 121
6.4.2 D/A测试程式的主函式 121
6.4.3 D/A测试程式中的功能函式 122
6.4.4 D/A测试程式中的功能列印函式 123
6.4.5 D/A测试程式中的波形生成函式 123
6.4.6 D/A测试程式的效果 124
6.5 知识索引 125
6.6 思考与练习 125
第7章 LCD驱动程式 126
本章目标 126
7.1 LCD显示器概述 126
7.1.1 液晶 126
7.1.2 LCD显示屏的背光 127
7.1.3 LCD显示器的分类 127
7.1.4 LCD的显示原理 127
7.1.5 LCD的驱动方式 130
7.1.6 LCD的常用指标 131
7.2 LCD的显示接口 131
7.2.1 灰度STN的时序 132
7.2.2 彩色STN的时序 133
7.2.3 TFT的时序 134
7.3 嵌入式处理器的LCD控制器 136
7.3.1 LCD控制器 136
7.3.2 LCD控制器的设定 137
7.3.3 LCD的字元显示快取 139
7.4 LCD的驱动程式设计 140
7.4.1 LCD驱动程式相关的宏定义 140
7.4.2 LCD驱动程式的底层操作函式 142
7.4.3 LCD驱动程式提供的API 145
7.4.4 LCD驱动程式的模组化载入 151
7.4.5 LCD的测试程式 152
7.5 基于Framebuffer的LCD驱动程式实例 155
7.5.1 Framebuffer概述 155
7.5.2 LCD的电路连线 155
7.5.3 Framebuffer设备驱动程式的结构 156
7.5.4 Framebuffer设备驱动程式的设计 159
7.5.5 Framebuffer设备测试程式的设计 164
7.5.6 嵌入式Linux常用的GUI 166
7.6 知识索引 166
7.7 思考与练习 167
第8章 触控萤幕驱动程式 168
本章目标 168
8.1 触控萤幕概述 168
8.2 触控萤幕的分类 168
8.2.1 电阻技术触控萤幕 168
8.2.2 表面声波技术触控萤幕 169
8.2.3 电容电感技术触控萤幕 170
8.2.4 红外线技术触控萤幕 170
8.3 触控萤幕的特性 171
8.3.1 透明度和色彩失真 171
8.3.2 反光性 171
8.3.3 清晰度 171
8.3.4 漂移 172
8.3.5 检测和定位 172
8.4 触控萤幕的硬体电路设计 172
8.4.1 电阻式触控萤幕的电路原理 172
8.4.2 电阻式触控萤幕原点的定位 173
8.4.3 电阻式触控萤幕的电路连线 174
8.5 触控萤幕的驱动程式实例 176
8.5.1 触控萤幕接口的模式 176
8.5.2 A/D转换和触控萤幕暂存器的设定 177
8.5.3 触控萤幕的坐标 179
8.5.4 触控萤幕的电路连线 180
8.5.5 触控萤幕的驱动程式接口 181
8.6 测试程式的设计 182
8.6.1 触控萤幕的数据定义 183
8.6.2 触控萤幕的数据处理 183
8.6.3 触控萤幕的运行测试 185
8.7 知识索引 186
8.8 思考与练习 187
第9章 CAN汇流排驱动程式 188
本章目标 188
9.1 CAN汇流排接口设计 188
9.1.1 CAN汇流排概述 188
9.1.2 CAN的工作特点及主要优点 189
9.1.3 CAN汇流排的电气特徵和MAC帧结构 189
9.2 嵌入式处理器上CAN汇流排接口的扩展 190
9.2.1 SJA1000简介 190
9.2.2 SJA1000扩展 191
9.3 SJA1000扩展CAN汇流排接口的设计 192
9.3.1 CAN 控制器SJA1000的操作模式 192
9.3.2 CAN控制器SJA1000的特徵功能 193
9.3.3 CAN 控制器SJA1000的Basic CAN模式设定 194
9.4 SJA1000扩展CAN汇流排接口的通信 196
9.4.1 通过CAN汇流排建立通信的步骤 196
9.4.2 SJA1000的初始化 196
9.4.3 驱动程式的结构设计 198
9.4.4 驱动程式init、exit、open、close函式的实现 200
9.4.5 驱动程式read、write函式的实现 201
9.4.6 驱动程式interrupt、ioctl函式实现 202
9.4.7 测试程式的编写 202
9.5 驱动程式的载入 204
9.6 知识索引 204
9.7 思考与练习 205
第10章 IIC汇流排驱动程式 206
本章目标 206
10.1 IIC汇流排概述 206
10.1.1 IIC汇流排介绍 206
10.1.2 IIC汇流排引入的原因 206
10.1.3 IIC汇流排的特点 206
10.1.4 IIC汇流排的基本结构 207
10.1.5 IIC汇流排的术语 207
10.1.6 IIC汇流排的工作 208
10.1.7 IIC汇流排的竞争仲裁 209
10.1.8 IIC汇流排的工作流程 210
10.2 嵌入式处理器的IIC接口 211
10.2.1 IIC汇流排控制暂存器 212
10.2.2 IIC汇流排控制/状态暂存器 213
10.2.3 IIC汇流排地址暂存器 214
10.2.4 IIC汇流排移位数据暂存器 214
10.2.5 S3C2410中与IIC对应的I/O连线埠 215
10.3 基于IIC的键盘晶片套用 216
10.3.1 ZLG7290的功能 217
10.3.2 ZLG7290的控制方式 218
10.3.3 ZLG7290的暂存器 218
10.3.4 ZLG7290的通信接口 219
10.3.5 ZLG7290的指令介绍 219
10.4 IIC汇流排驱动程式实例 221
10.4.1 ZLG7290的电路连线 221
10.4.2 ZLG7290的通信流程 223
10.4.3 ZLG7290驱动中变数的定义 225
10.4.4 ZLG7290驱动中实时时钟的改变 226
10.4.5 ZLG7290和IIC暂存器的初始化 227
10.4.6 ZLG7290驱动程式的模组化 228
10.4.7 ZLG7290的档案操作结构 228
10.5 IIC汇流排的测试程式 230
10.6 知识索引 231
10.7 思考与练习 231
第11章 音频汇流排驱动程式 232
本章目标 232
11.1 音频汇流排接口概述 232
11.1.1 音频的採样精度 233
11.1.2 音频编码 233
11.2 IIS音频汇流排接口 233
11.2.1 IIS汇流排的物理连线 233
11.2.2 IIS的汇流排协定 234
11.2.3 IIS汇流排的硬体设计 235
11.2.4 IIS汇流排的暂存器 236
11.3 AC97音频汇流排接口 239
11.4 IIS汇流排的驱动程式设计 240
11.4.1 音频设备基础知识 240
11.4.2 音频设备档案 241
11.4.3 WAV声音档案 243
11.4.4 音频设备和驱动程式的通信 243
11.4.5 设备的初始化和载入 244
11.4.6 DMA的操作和宏定义 246
11.4.7 audio设备档案的操作 248
11.4.8 mixer设备档案的操作 260
11.5 音频驱动程式的测试 262
11.6 知识索引 262
11.7 思考与练习 263
第12章 IDE接口驱动程式 264
本章目标 264
12.1 IDE接口概述 264
12.1.1 硬碟知识介绍 264
12.1.2 IDE接口标準 267
12.1.3 IDE接口的传输模式 269
12.1.4 IDE接口暂存器 269
12.2 IDE接口驱动程式的移植 271
12.2.1 嵌入式Linux下IDE驱动程式接口 271
12.2.2 嵌入式Linux下IDE驱动程式 272
12.2.3 IDE硬碟的读/写操作 274
12.3 IDE驱动程式测试 282
12.3.1 磁碟档案系统简介 283
12.3.2 IDE分区测试 283
12.4 知识索引 285
12.5 思考与练习 285
第13章 快闪记忆体晶片的驱动程式 286
本章目标 286
13.1 快闪记忆体晶片概述 286
13.1.1 快闪记忆体晶片的物理特性 286
13.1.2 嵌入式档案系统概述 289
13.1.3 MTD体系介绍 289
13.1.4 Flash专有名词 291
13.2 NAND Flash 291
13.2.1 NAND Flash的结构 291
13.2.2 NAND Flash的操作 292
13.2.3 NAND Flash控制器 294
13.2.4 NAND Flash的时序 296
13.2.5 NAND Flash的驱动程式实例 297
13.3 NOR Flash 301
13.3.1 NOR Flash的结构 301
13.3.2 NOR Flash的操作 302
13.3.3 NOR Flash的驱动程式实例 303
13.4 基于快闪记忆体的档案系统 307
13.5 知识索引 309
13.6 思考与练习 310
第14章 USB 设备驱动程式 311
本章目标 311
14.1 USB接口概述 311
14.1.1 USB系统 311
14.1.2 USB的电气特性 312
14.1.3 USB汇流排的拓扑结构 313
14.1.4 USB的通信协定 313
14.2 嵌入式系统中USB的使用 315
14.2.1 OHCI概述 315
14.2.2 Host接口硬体设计 316
14.3 嵌入式系统中USB设备的驱动程式设计 316
14.3.1