《嵌入式Linux驱动模板精讲与项目实践》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:林锡龙编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2014
  • ISBN:9787121230820
  • 页数:306 页
图书介绍:本书从实用的角度对嵌入式Linux驱动设计开发从理论到实践做了比较深入的介绍,以Mini2440开发板为基础,对各种常见驱动开发进行模板化设计训练,各种模板可以直接应用到实际项目开发中,其中的一线研发技巧和案例分析可以供专业特训和广大嵌入式Linux开发者实战使用。

第1章 驱动总论 1

1.1 总论 1

1.1.1 驱动在内核中的比例 1

1.1.2 驱动开发需要具备的能力 1

1.1.3 驱动开发重点关注的内容 2

1.2 驱动理论与思想 3

1.2.1 分类思想 4

1.2.2 分层思想 4

1.2.3 分离思想 10

1.2.4 总线思想 11

本章小结 11

第2章 内核编程及基础知识点 12

2.1 内核线程 12

2.2 内核定时器 16

2.3 链表 18

2.4 内存操作 18

2.5 I/O端口 20

2.6 内核相关宏 21

2.7 内核态文件操作 22

2.8 内核通知链 25

本章小结 30

第3章 模块与常用字符设备方法 31

3.1 Linux驱动 31

3.2 内核驱动模块剖析 32

3.2.1 内核模块 34

3.2.2 模块工具集 34

3.2.3 模块文件结构分析 36

3.2.4 内核管理 37

3.2.5 Modutils工具包及Module-init-tools移植 37

3.2.6 符号 37

3.2.7 驱动模块之间的依赖 38

3.2.8 模块编译流程细节 38

3.2.9 模块编写 39

3.3 宏观分析Linux驱动 39

3.4 设备文件 41

3.5 设备管理系统 46

3.5.1 自动创建和管理设备文件揭秘 46

3.5.2 devfs、mdev和udev 46

3.5.3 udev基本原理与流程 47

3.5.4 热插拔与冷插拔 48

3.5.5 class 48

3.6 字符设备驱动 50

3.6.1 原始方式 51

3.6.2 静态设定设备号方式 51

3.6.3 使用udev工具自动生成设备文件方式 52

3.6.4 简洁型字符设备驱动——misc字符设备驱动方式 53

3.7 设备操作方法file operations 55

3.7.1 ioctl和unlocked ioctl操作 57

3.7.2 read/write设备方法 65

3.7.3 llseek设备方法 70

3.7.4 mmap设备方法 70

3.7.5 利用mmap在应用层实现硬件操作 75

本章小结 76

第4章 同步和互斥 77

4.1 概述 77

4.2 基本概念 77

4.3 互斥和同步机制 79

4.4 互斥 79

4.4.1 屏蔽中断 79

4.4.2 原子操作 80

4.4.3 自旋锁 81

4.4.4 信号量 82

4.4.5 自旋锁与信号量 83

4.4.6 互斥体:专用于互斥 84

4.5 同步 84

本章小结 86

第5章 中断系统 87

5.1 中断概述 87

5.2 基本概念 87

5.3 中断原理及使用注意事项 89

5.4 中断接口函数 89

5.4.1 中断申请和释放 89

5.4.2 中断共享 90

5.4.3 中断例程之一:按键中断 92

5.4.4 中断例程之二:A/D转换驱动 96

5.5 底半部:tasklet、工作队列 104

5.6 时间管理 106

本章小结 107

第6章 设备高级特性 108

6.1 字符设备file_operations的高级特性 108

6.2 Linux设备驱动的I/O模型 109

6.2.1 同步阻塞I/O 109

6.2.2 同步非阻塞I/O 109

6.2.3 异步阻塞I/O 110

6.2.4 异步非阻塞I/O 110

6.2.5 异步通知 110

6.2.6 同步阻塞型I/O的实现:建立在等待队列的基础上 117

6.2.7 异步阻塞型I/O的实现:基于poll系统调用操作接口函数 121

6.3 设备复用 126

本章小结 128

第7章 高级类型驱动 129

7.1 misc类型驱动 129

7.1.1 概述 129

7.1.2 结构与流程分析 129

7.1.3 关于设备节点的创建 130

7.2 input类型驱动 130

7.2.1 input驱动概述 130

7.2.2 三个主要结构体 133

7.2.3 Input驱动步骤 136

7.3 触摸屏驱动 144

7.4 I2C驱动 150

7.4.1 I2C总线接口 150

7.4.2 I2C内核驱动层及相关文件分析 151

7.4.3 重要的数据结构及相关联系 153

7.4.4 流程分析 157

7.4.5 i2c-tools 165

7.5 块设备驱动 169

7.5.1 块设备驱动分析 169

7.5.2 制作一个块设备例子:RamDisk驱动 174

本章小结 177

第8章 虚拟文件系统 178

8.1 内核在线窗口——虚拟文件系统 178

8.2 proc文件系统 179

8.2.1 目录介绍 179

8.2.2 创建目录与文件 184

8.2.3 相关应用 185

8.3 sys文件系统 186

8.3.1 sys文件系统概述 186

8.3.2 sys文件目录 187

8.3.3 sys文件系统接口函数与创建文件夹模板 189

本章小结 192

第9章 设备驱动模型 193

9.1 设备驱动模型概述 193

9.2 sys文件系统与设备驱动模型 194

9.3 认识设备驱动模型 195

9.4 两大基石kobject和kset 197

9.4.1 内核对象kobject 197

9.4.2 另外一个基石kset 199

9.5 subsystem 203

9.6 三角关系核心——总线、设备、驱动 204

9.6.1 总线 204

9.6.2 设备 207

9.6.3 驱动 209

9.7 platform总线 211

9.8 serio总线 220

9.8.1 serio子系统介绍 220

9.8.2 serio子系统框架 220

9.8.3 主要数据结构 223

本章小结 229

第10章 嵌入式Linux文件系统 230

10.1 文件系统介绍 230

10.2 创建最简单的根文件系统 233

10.3 YAFFS文件系统移植 241

10.4 JFFS2文件系统制作 250

10.5 ramdisk文件系统制作 250

10.6 cramfs文件系统制作 252

本章小结 253

第11章 开发与调试技巧 254

11.1 vim使用 254

11.2 工具使用 254

11.3 printk使用技巧 259

11.4 使用proc在线打开打印开关 260

11.5 异常崩溃oops处理 261

11.6 动态修改模块参数 269

11.7 使用devmem2操作物理地址 269

11.8 时间测量 270

11.9 善于使用开源项目 270

本章小结 271

第12章 底层驱动规划与管理探索 272

12.1 底层驱动规划探索 272

12.1.1 设计理念概述 272

12.1.2 底层平台软件设计 273

12.1.3 底层平台软件管理规则 276

12.1.4 独立驱动模块的版本管理 276

12.1.5 提供最基本的系统 278

12.1.6 驱动开发注意事项 278

12.1.7 版本库 279

12.1.8 平台版本构建发布 282

12.2 研发管理 283

12.2.1 嵌入式软件研发管理畅想 284

12.2.2 嵌入式软件V字形开发模式 285

12.3 软件开发文档 286

12.3.1 可行性分析报告 286

12.3.2 嵌入式软件系统设计方案文档 289

12.3.3 嵌入式软件概要设计 290

12.3.4 嵌入式软件详细设计 293

12.3.5 案例分析 294

本章小结 295

第13章 Linux设备驱动编程规范 296

13.1 基本原则 296

13.2 布局 297

13.3 基本格式 299

13.4 对齐 300

13.5 空行空格 301

13.6 注释 301

13.7 命名 302

13.8 函数 302

13.9 可靠性 303

13.1 0其他 303

本章小结 305

参考文献 306