第1章 内核基础 1
1.1 Linux内核组成 1
1.2 Linux内核的引导 2
1.3处理器 3
1.4存储器 4
第2章 进程管理 5
2.1进程调度 5
2.2 Linux调度的实现 5
2.3抢占和上下文切换 6
2.4进程概念 6
2.5进程上下文 7
2.6进程与线程的创建 7
2.7孤儿进程 8
2.8系统调用 8
2.9内核设计系统调用 9
第3章 中断处理 11
3.1中断和中断处理 11
3.2中断的下半部分 11
3.3中断下半部分的实现 12
第4章 定时计数 14
4.1定时器基本概念 14
4.2动态定时器的使用 15
第5章 并发同步 16
5.1内核同步与死锁问题 16
5.2解决并发同步的方法 17
第6章 内存管理 19
6.1内存管理中基本概念 19
6.2申请内存的几种方法 19
6.3内核栈 20
6.4进程地址空间的基本概念 21
6.5创建和撤销内存区域 22
6.6页表 22
6.7页高速缓存与页回写 23
第7章Platform总线 25
7.1 Platform设备驱动概念 25
7.1.1 Platform总线 25
7.1.2 Platform设备 26
7.1.3 Platform驱动 29
7.2平台设备的资源 29
7.2.1平台数据和私有数据的区别 29
7.2.2 Platform设备资源的读取 30
7.3平台设备驱动测试 30
7.3.1 Platform设备模块代码 31
7.3.2 Platform驱动模块代码 32
7.3.3应用层测试代码 37
第8章 单总线 39
8.1单总线驱动概述 39
8.2单总线驱动移植 39
8.3单总线驱动内核代码分析 40
8.3.1 master驱动分析 40
8.3.2 slave驱动分析 48
8.4单总线驱动测试 52
8.5脱离子系统的DS 18B20驱动 53
第9章 I2C总线 58
9.1系统理论 58
9.1.1 I2C驱动体系概述 58
9.1.2驱动工程师需要做的事 58
9.2内核代码 58
9.2.1内核/drivers/i2c目录下文件分析 58
9.2.2 I2C核心 59
9.2.3 I2C总线驱动 59
9.2.4 I2C设备驱动 73
9.3测试代码 80
第10章 串口总线 83
10.1系统理论 83
10.2串口内核配置 83
10.3 UART层内核代码 85
10.4 tty层内核代码 88
10.5线路规程内核代码 97
10.6串口测试代码 103
第11章 PCI总线 109
11.1 PCI总线理论 109
11.1.1 PCI总线的特点 109
11.1.2 PCI设备概述 109
11.1.3查询PCI总线和设备的命令 110
11.1.4 PCI总线架构 110
11.2 PCI驱动 111
11.2.1 PCI寻找空间 111
11.2.2 PCI总线支持的设备 112
11.2.3 PCI驱动其他API 112
11.3 PCI驱动模型 112
11.4 PCI设备的枚举过程 114
第12章 SPI总线 132
12.1 SPI理论介绍 132
12.2 SPI驱动移植 132
12.3 SPI设备和驱动的注册 135
12.3.1 SPI主控设备的注册 135
12.3.2 SPI接口设备的添加 136
12.3.3 SPI主控设备驱动的注册 137
12.3.4 SPI接口设备的注册 137
12.3.5 SPI接口设备驱动的注册 138
12.4 SPI内核代码分析 139
12.5 SPI测试代码 159
第13章 USB总线 162
13.1 USB总线理论 162
13.1.1 USB概述 162
13.1.2 USB主机控制器 162
13.1.3 USB设备与USB驱动的匹配 162
13.1.4 USB设备的逻辑结构和端点的传输方式 163
13.1.5 USB的URB请求块 163
13.1.6 USB的枚举过程 164
13.2 USB总线驱动分析 164
13.2.1 USB驱动框架usb-skeleton.c 164
13.2.2 USB鼠标驱动usbmouse.c 174
13.2.3 USB键盘驱动usbkbd.c 178
13.2.4 U盘驱动分析 183
13.3 U盘驱动测试 197
第14章 Keyboard子系统 198
14.1 Keyboard子系统移植与分析 198
14.2 Keyboard驱动测试 200
第15章 LED子系统 201
15.1 LED子系统移植与分析 201
15.2 LED驱动测试 205
第16章 RTC子系统 206
16.1 RTC子系统的移植与分析 206
16.2 RTC驱动测试 210
第17章 Input子系统 211
17.1 Input子系统系统理论 211
17.1.1 Input子系统概述 211
17.1.2 Input子系统几个重要数据结构 211
17.1.3 Input子系统核心层和事件处理层函数概述 214
17.2内核代码 214
17.2.1输入子系统设备驱动层 214
17.2.2输入子系统核心层 224
17.2.3输入子系统事件处理层 227
17.3测试代码 229
17.3.1设备驱动层代码 230
17.3.2应用层测试代码 232
17.3.3测试过程和结果 233
第18章 Backlight背光子系统 234
18.1 Backlight背光子系统概述 234
18.2 PWM核心驱动 234
18.3 Backlight核心驱动 239
18.4基于PWM&Backlight的蜂鸣器驱动 242
18.5驱动测试 246
第19章 Hwmon子系统 247
19.1 Hwmon子系统概述 247
19.2 ADC核心驱动 247
19.3 Hwmon核心驱动 251
19.4基于ADC&Hwmon的A/D驱动 252
19.5驱动测试 258
第20章 看门狗驱动 259
20.1看门狗驱动移植与分析 259
20.2看门狗驱动测试 260
第21章 LCD驱动 261
21.1 LCD屏理论 261
21.1.1 LCD屏基本概念 261
21.1.2帧缓冲的理解 261
21.2 Mini2440的X35型LCD移植 262
21.3 LCD文件层和驱动层设计思路 264
21.3.1 LCD驱动中几个重要的数据结构 265
21.3.2 LCD驱动层 268
21.3.3 LCD文件层 279
21.4 LCD驱动测试 284
第22章 触摸屏驱动 286
22.1触摸屏理论概述 286
22.2触摸屏驱动分析 286
22.3触摸屏驱动测试 294
第23章 Linux下的块设备驱动 296
23.1块设备驱动概论 296
23.2块设备驱动中几个重要的数据结构 296
23.3使用I/O调度的块设备驱动 298
23.4块设备驱动的测试 302
第24章 Linux下的网络设备驱动 305
24.1网络设备驱动基础 305
24.1.1以太网基础理论 305
24.1.2 Linux网络驱动层次 305
24.2网络设备驱动移植 307
24.3网络设备驱动测试 308
参考文献 309