《嵌入式Linux驱动程序开发实例教程》PDF下载

  • 购买积分:9 如何计算积分?
  • 作  者:张光建,刘政编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302260592
  • 页数:176 页
图书介绍:本书详细介绍了嵌入式Linux系统的三类驱动程序开发,即字符驱动程序的设计开发、块设备驱动程序的设计开发和网络驱动程序的设计开发等。

第1章 设备驱动概述 1

1.1 设备驱动程序的作用 1

1.1.1 嵌入式系统的硬件组成 1

1.1.2 嵌入式系统的软件组成 2

1.1.3 驱动程序的作用 3

1.2 Linux设备驱动 3

1.2.1 Linux设备驱动程序的分类及特点 3

1.2.2 Linux设备驱动程序与整个软件系统的关系 4

1.3 Linux设备驱动程序开发技术的学习方法 5

习题1 5

第2章 Linux基本操作 6

2.1 Linux常用命令 6

2.1.1 文件及目录操作命令 6

2.1.2 显示命令 11

2.1.3 文件压缩及解压命令 11

2.1.4 网络命令 13

2.1.5 改变文件访问权限的命令 14

2.1.6 帮助命令 15

2.1.7 安装卸载文件系统命令 15

2.2 Linux基本编程 17

2.2.1 emacs编辑器 17

2.2.2 使用gcc编译程序 19

2.2.3 make命令 21

2.2.4 描述文件 22

习题2 24

第3章 嵌入式Linux驱动程序开发环境的建立 25

3.1 交叉编译环境的建立 25

3.2 超级终端的配置 26

3.3 文件共享的配置 27

3.3.1 配置防火墙 28

3.3.2 配置samba使Windows与Linux共享 29

3.3.3 配置NFS使宿主机Linux与目标机Linux共享 31

习题3 33

第4章 Linux设备驱动内核基础 34

4.1 Linux设备的表示 34

4.2 设备文件系统(devfs) 34

4.3 模块 36

4.4 I/O端口的访问 38

4.5 中断管理 39

4.5.1 中断的注册 39

4.5.2 中断的释放 39

4.5.3 中断处理例程 40

4.5.4 中断的禁止和使能 40

4.6 设备驱动程序中的并发控制 41

4.6.1 信号量的初始化 41

4.6.2 信号量的申请 42

4.6.3 信号量的释放 42

4.7 内核空间和用户空间数据复制 42

4.8 使用printk()函数调试设备驱动程序 43

习题4 43

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

5.1 有关字符设备的数据结构 44

5.1.1 file_operations结构 44

5.1.2 file结构 45

5.1.3 chrdevs数组 46

5.2 字符设备驱动程序的设计 47

5.2.1 字符设备驱动程序的组成 47

5.2.2 file_operations结构体变量 47

5.2.3 字符设备驱动程序的加载及卸载函数 48

5.2.4 字符设备驱动程序的接口函数 48

5.3 访问字符设备的系统调用 49

5.3.1 open()函数和create()函数 50

5.3.2 close()函数 51

5.3.3 read()函数 51

5.3.4 write()函数 52

5.3.5 应用举例 52

5.4 内核访问字符设备驱动程序的流程 53

5.4.1 open()系统调用的执行流程 53

5.4.2 read()和write()系统调用的执行流程 53

5.4.3 close()系统调用的执行流程 54

5.5 字符设备驱动程序示例:虚拟字符设备驱动程序 54

5.5.1 虚拟字符设备驱动程序代码 55

5.5.2 测试程序代码 57

5.5.3 虚拟字符设备驱动程序的编译 58

5.5.4 虚拟字符设备驱动程序的测试 59

习题5 59

第6章 字符设备驱动程序实例:S3C2410.ADC驱动程序 60

6.1 S3C2410X的ADC概述 60

6.1.1 S3C2410X ADC的转换频率及转换时间 60

6.1.2 S3C2410X与A/D转换有关的寄存器 60

6.2 S 3C2410X的ADC驱动程序设计 61

6.2.1 ADC驱动程序需要包含的头文件 62

6.2.2 ADC驱动程序的file_operations结构体变量 62

6.2.3 ADC驱动程序的加载函数 62

6.2.4 ADC驱动程序的卸载函数 63

6.2.5 ADC驱动程序的接口函数 64

6.2.6 ADC中断处理函数 66

6.3 ADC驱动程序的编译及测试 66

6.3.1 测试程序 66

6.3.2 ADC驱动程序的编译 67

6.3.3 ADC驱动程序的测试 68

习题6 69

第7章 块设备驱动程序 70

7.1 有关块设备的数据结构 70

7.1.1 block device operations结构 70

7.1.2 gendisk结构 71

7.1.3 request queue结构 72

7.1.4 buffer_head结构 72

7.1.5 request结构 73

7.2 块设备驱动程序的设计 74

7.2.1 块设备驱动程序的组成 74

7.2.2 文件包含与宏定义 74

7.2.3 block device operations结构体变量 75

7.2.4 块设备驱动程序的接口函数 75

7.2.5 块设备驱动程序的request()函数 79

7.2.6 块设备驱动的加载函数 80

7.2.7 块设备驱动的卸载函数 84

7.3 块设备驱动程序示例:虚拟块设备驱动程序 85

7.3.1 虚拟块设备驱动程序代码 86

7.3.2 虚拟块设备驱动程序的编译 89

7.3.3 虚拟块设备驱动程序的测试 90

习题7 91

第8章 块设备驱动程序实例:SD卡驱动程序 92

8.1 SD卡功能概述 92

8.1.1 总线协议 92

8.1.2 SD卡的引脚 92

8.1.3 SD卡的命令 92

8.1.4 SD卡的响应 96

8.1.5 SD卡的寄存器 97

8.1.6 SD卡的状态及操作模式 101

8.2 S3C2410X SDI接口概述 103

8.2.1 SDI寄存器 103

8.2.2 SDI的初始化 106

8.2.3 SD卡命令的发送 107

8.2.4 数据的读写 107

8.3 基于S3C2410X的SD卡驱动程序设计 107

8.3.1 SD卡驱动程序的加载函数 107

8.3.2 SD卡驱动程序的卸载函数 111

8.3.3 SD卡驱动程序的接口函数 111

8.3.4 SD卡驱动程序的request()函数 111

8.4 SD卡驱动程序的编译及测试 122

8.4.1 SD卡驱动程序的编译 122

8.4.2 SD卡驱动程序的测试 123

习题8 123

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

9.1 有关网络设备的数据结构 124

9.1.1 net_device结构体 124

9.1.2 sk_buff结构体 130

9.2 网络设备驱动程序开发常用的内核函数 134

9.2.1 sk_buff结构操作函数 134

9.2.2 内存申请和释放函数 136

9.2.3 网络驱动程序注册和解除注册函数 136

9.2.4 以太网设备通用初始化函数 136

9.2.5 发送队列的启动、唤醒及停止函数 137

9.2.6 查询网络设备是否在运行的函数 137

9.2.7 向上层传递数据包的函数 137

9.3 网络设备驱动程序的设计 137

9.3.1 网络设备驱动程序的组成 137

9.3.2 网络设备驱动程序的加载函数 138

9.3.3 网络设备驱动程序的卸载函数 139

9.3.4 网络设备驱动程序的接口函数 139

9.3.5 网卡中断处理程序 141

9.4 网络设备驱动程序示例:虚拟网络设备驱动程序 142

9.4.1 虚拟网络设备驱动程序代码 142

9.4.2 虚拟网络设备驱动程序的编译 144

9.4.3 虚拟网络设备驱动程序的测试 145

习题9 146

第10 章网络设备驱动程序实例:AX88796驱动程序 147

10.1 AX88796芯片与CPU的接口 147

10.1.1 AX88796与CPU的接口信号 147

10.1.2 S3C2410 CPU与AX88796接口的信号 148

10.1.3 S3C2410 CPU与网卡芯片接口相关的寄存器 149

10.1.4 UP-NETARM 2410-S中AX88796与S3C2410 CPU的连接 151

10.2 AX88796 MAC核心寄存器 152

10.2.1 MAC核心寄存器概述 152

10.2.2 常用的MAC核心寄存器 154

10.3 AX88796芯片的缓冲区操作 157

10.3.1 数据包的接收 157

10.3.2 数据包的发送 160

10.3.3 填充数据包到发送缓冲区以及从接收缓冲区环移走数据包 161

10.4 AX88796驱动程序设计 162

10.4.1 AX88796.h 162

10.4.2 AX88796驱动程序的加载函数 165

10.4.3 AX88796驱动程序的卸载函数 165

10.4.4 AX88796驱动程序的接口函数 165

10.4.5 AX88796驱动程序的中断处理程序 169

10.5 AX88796驱动程序的编译及测试 173

10.5.1 AX88796网络驱动程序的编译 173

10.5.2 AX88796驱动程序的测试 174

习题10 175

参考文献 176