第1章 嵌入式Linux操作系统简介 1
1.1操作系统 2
1.2嵌入式系统 3
1.3嵌入式操作系统 4
1.4嵌入式Linux基础 7
1.4.1 Linux发展概述 7
1.4.2 Linux作为嵌入式操作系统的优势 8
1.4.3 Linux发行版本 9
1.4.4如何学习Linux 10
1.5 Linux安装 10
1.5.1基础概念 11
1.5.2硬件需求 12
1.5.3安装准备 13
1.5.4安装过程 13
1.6 Linux文件及文件系统 21
1.6.1文件类型及文件属性 22
1.6.2文件系统类型介绍 24
1.6.3 Linux目录结构 24
1.7本章习题 27
第2章 Linux操作系统使用与系统配置 28
2.1 Linux基本命令 29
2.1.1用户系统相关命令 30
2.1.2文件目录相关命令 36
2.1.3压缩打包相关命令 47
2.1.4比较合并文件相关命令 50
2.1.5网络相关命令 54
2.2 Linux系统服务 59
2.2.1独立运行的服务 59
2.2.2 xinetd设定的服务 60
2.2.3设定服务命令常用方法 61
2.3本章习题 62
第3章 嵌入式Linux编程环境 63
3.1 Linux编辑器vi的使用 64
3.1.1 vi的模式 64
3.1.2 vi的基本流程 64
3.1.3 vi的各模式功能键 66
3.2 gcc编译器 67
3.2.1 gcc编译流程解析 68
3.2.2 gcc编译选项分析 70
3.3 gdb调试器 74
3.3.1 gdb使用流程 74
3.3.2 gdb基本命令 77
3.4 make工程管理器 81
3.4.1 Makefile基本结构 81
3.4.2 Makefile变量 82
3.4.3 Makefile规则 85
3.4.4 make管理器的使用 86
3.5使用autotools 86
3.5.1 autotools使用流程 87
3.5.2使用autotools生成的Makefile 91
3.6本章习题 92
第4章 存储管理 93
4.1进程虚存空间的管理 94
4.1.1进程的虚存区域 94
4.1.2虚存空间的映射和虚存区域的建立 96
4.2内存空间/地址类型 98
4.3分页机制与MMU 99
4.4高速缓存 102
4.5内存区域Zone 103
4.6获得内存页面 106
4.7 slab分配器 111
4.8 kmalloc 114
4.9高端内存 116
4.10虚拟内存的申请和释放 116
4.11本章习题 119
第5.章 操作系统进程 120
5.1进程的基本概念 121
5.2 Linux系统进程 122
5.2.1 Linux进程基础 122
5.2.2进程描述符 124
5.2.3进程的状态与转换 127
5.2.4进程队列指针 129
5.2.5进程队列的全局变量 132
5.3 Linux进程的创建 133
5.4 Linux进程相关的系统调用 137
5.4.1 execve()系统调用 137
5.4.2 wait()系统调用 142
5.4.3 exit()系统调用 142
5.5 Linux的进程调度 143
5.6实时Linux 145
5.7本章习题 147
第6章 进程间通信 148
6.1什么是进程间通信 149
6.2互斥与同步 150
6.3信号量 152
6.3.1什么是信号量 152
6.3.2信号量的内核实现 153
6.3.3信号量的使用 157
6.4共享内存 159
6.4.1什么是共享内存 159
6.4.2共享内存的内核实现 160
6.4.3共享内存的使用 161
6.5消息队列 163
6.5.1什么是消息队列 163
6.5.2消息队列的内核实现 164
6.5.3消息队列的使用 166
6.6管道 169
6.6.1什么是管道 169
6.6.2管道的内核实现 170
6.6.3管道的读/写规则 171
6.7本章习题 171
第7章 中断与系统调用 173
7.1什么是中断 174
7.2嵌入式平台硬件中断特点 174
7.3 Linux内核中断机制概述 176
7.4编写中断处理程序ISR 179
7.4.1中断处理系统结构 179
7.4.2注册中断处理函数 180
7.4.3中断标志flags 182
7.4.4 ISR上下文 182
7.5 tasklet机制 182
7.6上半部和下半部 185
7.6.1上半部和下半部的设计 185
7.6.2中断处理程序的不可重入性 186
7.7工作队列 187
7.8系统调用 188
7.8.1初始化系统调用 189
7.8.2 system_call函数 191
7.8.3参数的传递与验证 194
7.9本章习题 195
第8章 文件管理 196
8.1磁盘的物理组织 197
8.2文件和目录 198
8.2.1文件的分类 198
8.2.2目录 199
8.2.3文件系统 200
8.3虚拟文件系统 200
8.3.1虚拟文件系统概述 201
8.3.2 VFS超级块 202
8.3.3文件控制块 207
8.3.4 VFS的目录项 212
8.3.5文件对象 215
8.3.6主要数据结构间的关系 218
8.4文件系统注册与卸载 219
8.4.1和文件系统相关的数据结构 219
8.4.2文件系统类型注册函数 222
8.4.3挂载文件系统 223
8.4.4文件系统卸载 224
8.5本章习题 224
第9章 设备管理 225
9.1设备及设备管理的功能 226
9.1.1设备分类 226
9.1.2设备管理 226
9.2 I/O内核子系统 227
9.2.1 I/O系统的基本功能 227
9.2.2 I/O空间 228
9.2.3 I/O控制方式 233
9.3 Linux设备驱动程序 234
9.3.1设备管理 235
9.3.2 Linux字符设备 235
9.3.3 Linux块设备 237
9.3.4 Linux网络接口 238
9.3.5 Linux设备文件 238
9.3.6 Linux设备注册与注销 240
9.3.7操作I/O端口 241
9.3.8 Linux逻辑I/O与设备驱动程序的接口 242
9.4本章习题 247
第10章 嵌入式Linux的构建 248
10.1嵌入式开发环境的搭建 249
10.1.1嵌入式交叉编译环境的搭建 249
10.1.2超级终端和Minicom配置及使用 250
10.1.3下载映像(Image)到开发板 256
10.1.4编译嵌入式Linux内核 260
10.1.5 Linux内核目录结构 263
10.1.6制作文件系统 263
10.2 Bootloader介绍 267
10.2.1 Bootloader概述 267
10.2.2 U-Boot概述 270
10.3嵌入式Linux根文件系统构建 279
10.3.1根文件系统目录结构 279
10.3.2 FHS目录结构 280
10.3.3文件存放规则 283
10.4本章习题 284
第11章 Android系统的编译和移植 285
11.1移植背景与目标 286
11.2移植涉及的主要过程 286
11.3下载Android Linux内核 286
11.4安装交叉工具链 288
11.5 Android Linux内核支持EZ6410平台 288
11.5.1 CS8900a驱动移植 288
11.5.2键盘驱动编写 289
11.5.3液晶驱动 290
11.5.4触摸屏驱动 291
11.5.5 USB驱动修改 291
11.5.6提取Android根文件系统 294
11.5.7系统环境设置 295
11.6本章习题 297