第1章 嵌入式Linux操作系统简介 1
1.1操作系统 1
1.2嵌入式系统 3
1.3嵌入式操作系统 3
1.4嵌入式Linux基础 5
1.4.1 Linux发展概述 5
1.4.2 Linux作为嵌入式操作系统的优势 6
1.4.3 Linux发行版本 7
1.4.4如何学习Linux 7
1.5 Linux安装 8
1.5.1基本概念 8
1.5.2硬件需求 9
1.5.3安装准备 10
1.5.4安装过程 10
1.6 Linux文件及文件系统 16
1.6.1文件类型及文件属性 16
1.6.2文件系统类型介绍 18
1.6.3 Linux目录结构 18
思考题 20
第2章 Linux操作系统使用与系统配置 21
2.1 Linux基本命令 21
2.1.1用户系统相关命令 22
2.1.2文件目录相关命令 27
2.1.3压缩打包相关命令 36
2.1.4比较合并文件相关命令 38
2.1.5网络相关命令 42
2.2 Linux系统服务 46
2.2.1独立运行的服务 46
2.2.2 xinetd设定的服务 47
2.2.3设定服务命令的常用方法 47
思考题 48
第3章 嵌入式Linux编程环境 49
3.1 Linux编辑器vi的使用 49
3.1.1 vi的模式 49
3.1.2 vi的基本流程 50
3.1.3 vi各模式的功能键 51
3.2 gcc编译器 52
3.2.1 gcc编译流程解析 52
3.2.2 gcc编译选项分析 54
3.3 gdb调试器 57
3.3.1 gdb使用流程 57
3.3.2 gdb基本命令 60
3.4 Make工程管理器 63
3.4.1 Makefile基本结构 64
3.4.2 Makefile变量 64
3.4.3 Makefile规则 67
3.4.4 Make管理器的使用 68
3.5使用autotools 68
3.5.1 autotools使用流程 69
3.5.2使用autotools所生成的Makefile 72
思考题 73
第4章 存储管理 74
4.1进程虚存空间的管理 74
4.1.1进程的虚存区域 75
4.1.2虚存空间的映射和虚存区域的建立 77
4.2内存空间/地址类型 78
4.3分页机制与MMU 79
4.4高速缓存 81
4.5内存区域zone 82
4.6获得内存页面 85
4.7 slab分配器 89
4.8 kmalloc 92
4.9高端内存 93
4.10虚拟内存的申请和释放 94
思考题 96
第5章 操作系统进程 97
5.1进程的基本概念 97
5.2 Linux系统进程 98
5.2.1 Linux进程基础 98
5.2.2进程描述符 100
5.2.3进程的状态与转换 102
5.2.4进程队列指针 105
5.2.5进程队列的全局变量 107
5.3 Linux进程的创建 108
5.4 Linux进程相关的系统调用 111
5.4.1 execve?系统调用 112
5.4.2 wait?系统调用 116
5.4.3 exit?系统调用 116
5.5 Linux的进程调度 117
5.6实时Linux 118
思考题 119
第6章 进程间通信 121
6.1什么是进程间通信 121
6.2互斥与同步 122
6.3信号量 123
6.3.1什么是信号量 123
6.3.2信号量的内核实现 124
6.3.3信号量的使用 128
6.4共享内存 130
6.4.1什么是共享内存 130
6.4.2共享内存的内核实现 131
6.4.3共享内存的使用 131
6.5消息队列 134
6.5.1什么是消息队列 134
6.5.2消息队列的内核实现 134
6.5.3消息队列的使用 135
6.6管道 138
6.6.1什么是管道 138
6.6.2管道的内核实现 139
6.6.3管道的读写规则 140
思考题 141
第7章 中断与系统调用 142
7.1什么是中断 142
7.2嵌入式平台硬件中断特点 143
7.3 Linux内核中断机制概述 144
7.4编写中断处理程序ISR 146
7.4.1中断处理系统结构 146
7.4.2注册中断处理函数 147
7.4.3中断标志flags 149
7.4.4 ISR上下文 149
7.5 Tasklet机制 149
7.6上半部和下半部 152
7.6.1上半部和下半部的设计 152
7.6.2中断处理程序的不可重入性 152
7.7工作队列 153
7.8系统调用 154
7.8.1初始化系统调用 154
7.8.2 system_call函数 156
7.8.3参数的传递与验证 159
思考题 160
第8章 文件管理 161
8.1磁盘的物理组织 161
8.2文件和目录 162
8.2.1文件的分类 162
8.2.2目录 163
8.2.3文件系统 164
8.3虚拟文件系统 164
8.3.1虚拟文件系统概述 164
8.3.2 VFS超级块 165
8.3.3文件控制块 169
8.3.4 VFS的目录项 175
8.3.5文件对象 177
8.3.6主要数据结构间的关系 180
8.4文件系统注册与卸载 181
8.4.1和文件系统相关的数据结构 181
8.4.2文件系统类型注册函数 184
8.4.3挂载文件系统 184
8.4.4文件系统卸载 185
思考题 185
第9章 设备管理 186
9.1设备及设备管理的功能 186
9.1.1设备分类 186
9.1.2设备管理 187
9.2 I/O内核子系统 187
9.2.1 I/O系统的基本功能 188
9.2.2 I/O空间 188
9.2.3 I/O控制方式 192
9.3 Linux设备驱动程序 193
9.3.1设备管理 194
9.3.2 Linux字符设备 194
9.3.3 Linux块设备 195
9.3.4 Linux网络接口 196
9.3.5 Linux设备文件 196
9.3.6 Linux设备注册与注销 198
9.3.7操作I/O端口 199
9.3.8 Linux逻辑I/O与设备驱动程序的接口 200
思考题 204
第10章 嵌入式Linux的构建 205
10.1嵌入式开发环境的搭建 205
10.1.1嵌入式交叉编译环境的搭建 205
10.1.2超级终端和Minicom配置及使用 207
10.1.3下载映像到开发板 212
10.1.4编译嵌入式Linux内核 215
10.1.5 Linux内核目录结构 218
10.1.6制作文件系统 218
10.2 Bootloader介绍 221
10.2.1 U-Boot概述 224
10.2.2 U-Boot的常用命令 225
10.3嵌入式Linux根文件系统构建 231
10.3.1根文件系统目录结构 231
10.3.2 FHS目录结构 232
10.3.3文件存放规则 235
思考题 235
参考文献 236