查看: 3953|回复: 30

[Linux电子书] 《Linux驱动开发入门与实战》

  [复制链接]

2244

主题

2562

帖子

2万

积分

管理团队

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

贡献
51
技术
142
活跃
2
在线时间
121 小时
擅长技术
思科华为
发表于 2014-2-16 21:53:43 | 显示全部楼层 |阅读模式
《Linux驱动开发入门与实战》

资源介绍
摘要:《Linux驱动开发入门与实战》本书由浅入深,全面、系统地介绍了Linux驱动开发技术,提供了大量实例供读者实战演练。另外,作者在实例讲解中详细分析了各种重要的理论知识,让读者能够举一反三。本节为目录部分。 标签:Linux驱动开发Linux驱动开发入门与实战




目录


第1篇 Linux驱动开发基础
第1章 Linux驱动开发概述 2
1.1 Linux设备驱动的基本概念 2
1.1.1 设备驱动程序概述 2
1.1.2 设备驱动程序的作用 2
1.1.3 设备驱动的分类 3
1.2 Linux操作系统与驱动的关系 4
1.3 Linux驱动程序开发 4
1.3.1 用户态和内核态 5
1.3.2 模块机制 5
1.3.3 编写设备驱动程序需要了解的知识 6
1.4 编写设备驱动程序的注意事项 6
1.4.1 应用程序开发与驱动程序开发的差异 6
1.4.2 GUN C开发驱动程序 7
1.4.3 不能使用C库开发驱动程序 7
1.4.4 没有内存保护机制 7
1.4.5 小内核栈 8
1.4.6 重视可移植性 8
1.5 Linux驱动的发展趋势 9
1.5.1 Linux驱动的发展 9
1.5.2 驱动的应用 9
1.5.3 相关学习资源 9
1.6 小结 10
第2章 嵌入式处理器和开发板简介 11
2.1 处理器的选择 11
2.1.1 处理器简述 11
2.1.2 处理器的种类 11
2.2 ARM处理器 13
2.2.1 ARM处理器简介 14
2.2.2 ARM处理器系列 14
2.2.3 ARM处理器的应用 16
2.2.4 ARM处理器的选型 16
2.2.5 ARM处理器选型举例 19
2.3 S3C2440开发板 20
2.3.1 S3C2440开发板简介 20
2.3.2 S3C2440开发板的特性 20
2.4 小结 22
第3章 构建嵌入式驱动程序开发环境 23
3.1 虚拟机和Linux安装 23
3.1.1 在Windows上安装虚拟机 23
3.1.2 在虚拟机上安装Linux 27
3.1.3 设置共享目录 28
3.2 代码阅读工具Source Insight 29
3.2.1 Source Insight简介 30
3.2.2 阅读源代码 30
3.3 小结 33
第4章 构建嵌入式Linux操作系统 34
4.1 Linux操作系统的介绍 34
4.1.1 Linux操作系统 34
4.1.2 Linux操作系统的优点 35
4.2 Linux内核子系统 36
4.2.1 进程管理 36
4.2.2 内存管理 37
4.2.3 文件系统 37
4.2.4 设备管理 37
4.2.5 网络功能 38
4.3 Linux源代码结构分析 38
4.3.1 arch目录 38
4.3.2 drivers目录 39
4.3.3 fs目录 39
4.3.4 其他目录 40
4.4 内核配置选项 41
4.4.1 配置编译过程 41
4.4.2 常规配置 42
4.4.3 模块配置 44
4.4.4 块设备层配置 44
4.4.5 CPU类型和特性配置 45
4.4.6 电源管理配置 47
4.4.7 总线配置 49
4.4.8 网络配置 50
4.4.9 设备驱动配置 53
4.4.10 文件系统配置 60
4.5 嵌入式文件系统基础知识 62
4.5.1 嵌入式文件系统 62
4.5.2 嵌入式系统的存储介质 63
4.5.3 JFFS文件系统 64
4.5.4 YAFFS文件系统 64
4.6 构建根文件系统 64
4.6.1 根文件系统概述 65
4.6.2 Linux根文件系统目录结构 65
4.6.3 BusyBox构建根文件系统 66
4.7 小结 71
第5章 构建第一个驱动程序 72
5.1 开发环境配置之内核升级 72
5.1.1 为什么升级内核 72
5.1.2 内核升级 73
5.1.3 make menconfig的注意事项 75
5.2 Hello World驱动程序 77
5.2.1 驱动模块的组成 77
5.2.2 Hello World模块 78
5.2.3 编译Hello World模块 79
5.2.4 模块的操作 81
5.2.5 Hello World模块加载后文件系统的变化 82
5.3 模块参数和模块之间通信 83
5.3.2 模块的文件格式ELF 83
5.3.3 模块之间的通信 84
5.3.4 模块之间的通信实例 85
5.4 将模块加入内核 88
5.4.1 向内核添加模块 88
5.4.2 Kconfig 88
5.4.3 Kconfig的语法 89
5.4.4 应用实例:在内核中新增加add_sub模块 92
5.4.5 对add_sub模块进行配置 94
5.5 小结 95
第6章 简单的字符设备驱动程序 96
6.1 字符设备驱动程序框架 96
6.1.1 字符设备和块设备 96
6.1.2 主设备号和次设备号 97
6.1.3 申请和释放设备号 98
6.2 初识cdev结构 99
6.2.1 cdev结构体 99
6.2.2 file_operations结构体 101
6.2.3 cdev和file_operations结构体的关系 102
6.2.4 inode结构体 103
6.3 字符设备驱动的组成 103
6.3.1 字符设备加载和卸载函数 103
6.3.2 file_operations结构体和其成员函数 104
6.3.3 驱动程序与应用程序的数据交换 105
6.3.4 字符设备驱动程序组成小结 106
6.4 VirtualDisk字符设备驱动 106
6.4.1 VirtualDisk的头文件、宏和设备结构体 106
6.4.2 加载和卸载驱动程序 107
6.4.3 cdev的初始化和注册 108
6.4.4 打开和释放函数 109
6.4.5 读写函数 110
6.4.6 seek()函数 111
6.4.7 ioctl()函数 113
6.5 小结 113
第2篇 Linux驱动开发核心技术
第7章 设备驱动中的并发控制 116
7.1 并发与竞争 116
7.2 原子变量操作 116
7.2.1 原子变量操作 116
7.2.2 原子整型操作 117
7.2.3 原子位操作 119
7.3 自旋锁 120
7.3.1 自旋锁概述 120
7.3.2 自旋锁的使用 120
7.3.3 自旋锁的使用注意事项 122
7.4 信号量 122
7.4.1 信号量概述 122
7.4.2 信号量的实现 123
7.4.3 信号量的使用 123
7.4.4 自旋锁与信号量的对比 125
7.5 完成量 126
7.5.1 完成量概述 126
7.5.2 完成量的实现 126
7.5.3 完成量的使用 127
7.6 小结 128
第8章 设备驱动中的阻塞和同步机制 129
8.1 阻塞和非阻塞 129
8.2 等待队列 130
8.2.1 等待队列概述 130
8.2.3 等待队列的实现 130
8.2.3 等待队列的使用 131
8.3 同步机制实验 132
8.3.1 同步机制设计 132
8.3.2 实验验证 136
8.4 小结 137
第9章 中断与时钟机制 138
9.1 中断简述 138
9.1.1 中断的概念 138
9.1.2 中断的宏观分类 139
9.1.3 中断产生的位置分类 140
9.1.4 同步和异步中断 140
9.1.5 中断小结 140
9.2 中断的实现过程 141
9.2.1 中断信号线(IRQ) 141
9.2.2 中断控制器 141
9.2.3 中断处理过程 142
9.2.4 中断的安装与释放 142
9.3 按键中断实例 144
9.3.1 按键设备原理图 144
9.3.2 有寄存器设备和无寄存器设备 144
9.3.3 按键设备相关端口寄存器 145
9.4 按键中断实例程序分析 147
9.4.1 按键驱动程序组成 147
9.4.2 初始化函数s3c2440_buttons_init() 147
9.4.3 中断处理函数isr_button() 148
9.4.4 退出函数s3c2440_buttons_exit() 149
9.5 时钟机制 150
9.5.1 时间度量 150
9.5.2 时间延时 150
9.6 小结 151
第10章 内外存访问 152
10.1 内存分配 152
10.1.1 kmalloc()函数 152
10.1.2 vmalloc()函数 153
10.1.3 后备高速缓存 155
10.2 页面分配 156
10.2.1 内存分配 156
10.2.2 物理地址和虚拟地址之间的转换 159
10.3 设备I/O端口的访问 160
10.3.1 Linux I/O端口读写函数 160
10.3.2 I/O内存读写 160
10.3.3 使用I/O端口 164
10.4 小结 166
第3篇 Linux驱动开发实用实战
第11章 设备驱动模型 168
11.1 设备驱动模型概述 168
11.1.1 设备驱动模型的功能 168
11.1.2 sysfs文件系统 169
11.1.3 sysfs文件系统的目录结构 170
11.2 设备驱动模型的核心数据结构 171
11.2.1 kobject结构体 171
11.2.2 设备属性kobj_type 175
11.3 注册kobject到sysfs中的实例 179
11.3.1 设备驱动模型结构 179
11.3.2 kset集合 180
11.3.3 kset与kobject的关系 181
11.3.4 kset相关的操作函数 182
在线IT学习航母 百万IT视频资源尽在三通IT学院 www.santongit.com
在线IT学习航母 百万IT
11.3.5 注册kobject到sysfs中的实例 183
11.3.6 实例测试 187
11.4 设备驱动模型的三大组件 188
11.4.1 总线 188
11.4.2 总线属性和总线方法 192
11.4.3 设备 194
11.4.4 驱动 196
11.5 小结 198
第12章 RTC实时时钟驱动 199
12.1 RTC实时时钟硬件原理 199
12.1.1 RTC实时时钟 199
12.1.2 RTC实时时钟的功能 199
12.1.2 RTC实时时钟的工作原理 201
12.2 RTC实时时钟架构 205
12.2.1 加载卸载函数 205
12.2.2 RTC实时时钟的平台驱动 206
12.2.3 RTC驱动探测函数 207
12.2.4 RTC实时时钟的使能函数s3c_rtc_enable() 210
12.2.5 RTC实时时钟设置频率函数s3c_rtc_setfreq() 211
12.2.6 RTC设备注册函数 rtc_device_register() 212
12.3 RTC文件系统接口 214
12.3.1 文件系统接口rtc_class_ops 214
12.3.2 RTC实时时钟打开函数s3c_rtc_open() 215
12.3.3 RTC实时时钟关闭函数s3c_rtc_release() 216
12.3.4 RTC实时时钟获得时间函数s3c_rtc_gettime() 216
12.3.5 RTC实时时钟设置时间函数s3c_rtc_settime() 218
12.3.6 RTC驱动探测函数s3c_rtc_getalarm() 219
12.3.7 RTC实时时钟设置报警时间函数s3c_rtc_setalarm() 220
12.3.8 RTC设置脉冲中断使能函数s3c_rtc_setpie() 222
12.3.9 RTC时钟脉冲中断判断函数s3c_rtc_proc() 222
12.4 小结 223
第13章 看门狗驱动程序 224
13.1 看门狗硬件原理 224
13.1.1 看门狗 224
13.1.2 看门狗工作原理 224
13.2 平台设备模型 226
13.2.1 平台设备模型 226
13.2.2 平台设备 227
13.2.3 平台设备驱动 229

购买主题 已有 1 人购买  本主题需向作者支付 2 金币 才能浏览

0

主题

388

帖子

4403

积分

论坛VIP原价+免回复特权

Rank: 8Rank: 8

贡献
0
技术
0
活跃
-2
在线时间
0 小时
发表于 2014-3-17 20:45:06 | 显示全部楼层
五体投地的佩服楼主中!

0

主题

361

帖子

831

积分

论坛VIP原价+免回复特权

Rank: 8Rank: 8

贡献
0
技术
0
活跃
-2
在线时间
0 小时
发表于 2014-3-24 01:47:32 | 显示全部楼层
学习CCNA,CCNP,CCIE技术就来www.santongit.com!

0

主题

378

帖子

1092

积分

论坛VIP原价+免回复特权

Rank: 8Rank: 8

贡献
0
技术
0
活跃
0
在线时间
0 小时
发表于 2014-4-8 12:20:43 | 显示全部楼层
虚拟化,据库,程学习就在www.santongit.com!

0

主题

168

帖子

378

积分

Kib

Rank: 3Rank: 3

贡献
0
技术
0
活跃
-1
在线时间
0 小时
发表于 2014-4-8 20:40:28 | 显示全部楼层
五体投地的佩服楼主中!

0

主题

211

帖子

611

积分

Gib

Rank: 5Rank: 5

贡献
0
技术
0
活跃
0
在线时间
0 小时
发表于 2014-4-11 01:38:37 | 显示全部楼层
谁知盘中餐,发帖真辛苦!

0

主题

29

帖子

163

积分

Kib

Rank: 3Rank: 3

贡献
0
技术
0
活跃
20
在线时间
2 小时
发表于 2014-10-8 12:04:07 | 显示全部楼层
每天来学习,跟三通一起成长!

0

主题

601

帖子

3290

积分

Eib

Rank: 6Rank: 6

贡献
0
技术
0
活跃
929
在线时间
28 小时
发表于 2015-3-23 09:52:47 | 显示全部楼层
强烈支持中

0

主题

5

帖子

30

积分

Byte

Rank: 2

贡献
0
技术
0
活跃
24
在线时间
1 小时
发表于 2015-4-15 18:51:23 | 显示全部楼层
啊撒旦法撒旦法撒旦飞洒地方

1

主题

1207

帖子

7996

积分

论坛贵宾VIP-永久权限

Rank: 8Rank: 8

贡献
0
技术
0
活跃
1216
在线时间
149 小时
发表于 2015-4-19 21:10:48 | 显示全部楼层
感谢楼主分享
使用 高级模式(可批量传图、插入视频等)
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表