嵌入式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/O58

4.4 阻塞型I/O60

4.5 I/O多路复用65

4.6 异步I/O69

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 tasklet104

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章 内存和DMA137

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 NAPI340

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 panic364

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 安装串口终端软件PuTTY376

14.2.3 安装串口终端软件minicom377

14.3 安装TFTP和NFS服务器379

14.4 准备Linux内核源码381

14.5 在目标板上运行Linux系统382

14.6 源码浏览及编辑器环境386

习题答案388

参考文献389

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值