第1章 嵌入式系统基础 1
1.1嵌入式系统概述 1
1.2嵌入式操作系统 3
1.3 Linux操作系统 5
1.3.1 Linux的发展历史 5
1.3.2 Linux的发行版本 5
1.3.3 Linux系统的特点和组成 7
1.4 ARM处理器平台 9
1.4.1 ARM处理器简介 9
1.4.2 ARM处理器的体系结构 10
1.4.3 ARM微处理器系列 11
1.4.4 ARM微处理器的应用领域及特点 15
1.4.5 ARM微处理器的结构 16
1.4.6 ARM微处理器的应用选型 17
1.5嵌入式系统开发 18
1.5.1嵌入式系统的开发流程 18
1.5.2 Linux程序设计流程 19
1.6思考与练习 20
第2章 文本编辑器的使用 21
2.1 Vi编辑器 21
2.1.1 Vi的基本模式 21
2.1.2 Vi的基本操作 22
2.2 Vim编辑器 25
2.3 Emacs编辑器 31
2.3.1 Emacs的启动与退出 31
2.3.2 Emacs的基本编辑 32
2.3.3 Emacs的c模式 34
2.3.4 Emacs的Shell模式 34
2.4 gedit编辑器 35
2.5思考与练习 36
第3章 构建嵌入式Linux开发环境 37
3.1嵌入式系统开发环境的构建 37
3.2移植U-Boot 40
3.2.1 Bootloader简介 40
3.2.2 Bootloader的启动流程 41
3.2.3 U-Boot的分析与移植 49
3.2.4 VIVI分析 52
3.3嵌入式Linux操作系统内核编译 53
3.3.1 Linux内核结构 53
3.3.2内核的配置 55
3.3.3内核编译的过程 56
3.3.4内核的移植 57
3.4思考与练习 58
第4章Linux常用命令 59
4.1目录命令 59
4.1.1 Is 59
4.1.2 cd 62
4.1.3 pwd 63
4.1.4 mkdir 63
4.1.5 rmdir 64
4.2文件命令 65
4.2.1 cp 66
4.2.2 rm 68
4.2.3 my 69
4.2.4 cat 71
4.2.5 chmod 72
4.2.6 find 74
4.2.7 grep 77
4.2.8 sort 79
4.3思考与练习 80
第5章 编译与调试 81
5.1嵌入式Linux编译器GCC 81
5.1.1 GCC编译分析 82
5.1.2 GCC编译选项分析 89
5.1.3库函数的使用方法 92
5.2调试工具GDB 95
5.2.1 GDB使用实例 96
5.2.2 GDB的帮助 99
5.2.3设置/删除断点 100
5.2.4各种相关命令 100
5.3 Make工程管理器 102
5.3.1 Makefile文件的构成 103
5.3.2 Makefile变量 105
5.3.3 Make管理器的使用 106
5.4思考与练习 108
第6章 图形界面应用程序开发 109
6.1嵌入式图形用户界面 109
6.2 Linux环境下几种主流的GUI 110
6.2.1 MiniGUI 110
6.2.2 Qt/Embedded 112
6.2.3 MicroWindows 113
6.2.4 OpenGUI 114
6.2.5 GTK+ 114
6.3基于MiniGUI的图形界面开发 115
6.3.1 MiniGUI程序框架 116
6.3.2 MiniGUI中的窗口与消息 116
6.3.3菜单 124
6.3.4键盘与鼠标 124
6.3.5对话框 125
6.3.6常用控件 126
6.4思考与练习 134
第7章 嵌入式文件系统与存储技术 135
7.1嵌入式文件系统的功能和特点 135
7.2 Linux操作系统支持的常见文件系统 136
7.3 Linux文件结构 140
7.3.1 Linux文件系统 142
7.3.2 Linux文件类型 143
7.3.3 Linux文件的访问权限控制 145
7.4 Flash存储技术 147
7.4.1 Flash的类型 147
7.4.2 Flash的技术特点 147
7.4.3 NOR Flash与NAND Flash的区别 148
7.5 NOR Flash与JFFS2文件系统 150
7.5.1 JFFS2原理 150
7.5.2 JFFS2文件系统在Linux中的实现 154
7.6 NAND Flash与YAFFS文件系统 155
7.6.1 YAFFS原理 156
7.6.2 YAFFS文件系统在Linux中的实现 159
7.7思考与练习 160
第8章Linux设备驱动程序开发 161
8.1 Linux设备驱动程序概述 161
8.2 Linux设备驱动程序与内核的关系 163
8.3 Linux设备驱动程序框架 164
8.4设备访问方式及实现 166
8.4.1查询方式 166
8.4.2中断方式 167
8.4.3 DMA方式 168
8.5字符设备驱动 169
8.6块设备驱动 174
8.6.1块设备驱动简介 174
8.6.2块设备相关结构体 175
8.7网络设备驱动 179
8.7.1网络设备简介 179
8.7.2网络设备的运行机制 180
8.7.3 sk buff数据结构 181
8.7.4数据包的发送与接收 182
8.7.5 网络设备驱动程序的加载 183
8.7.6 DM9000网卡驱动程序分析 184
8.8思考与练习 188
第9章 进程控制 189
9.1 Linux进程 189
9.1.1 Linux进程简介 189
9.1.2 Linux进程调度 193
9.1.3进程的内存映像 198
9.2进程控制 198
9.2.1创建进程 199
9.2.2创建守护进程 200
9.2.3进程退出 204
9.2.4改变进程的优先级 205
9.2.5执行新程序 206
9.2.6等待进程结束 207
9.3进程间通信 209
9.3.1管道 210
9.3.2有名管道 211
9.3.3消息队列 214
9.3.4信号量 217
9.3.5 共享内存 219
9.4思考与练习 224
第10章 线程控制 226
10.1 Linux线程 226
10.1.1线程和进程的关系 227
10.1.2线程的分类 228
10.2创建线程 229
10.3线程的属性 231
10.4线程等待终止 235
10.5私有数据 236
10.6线程同步 236
10.6.1互斥锁 237
10.6.2条件变量 240
10.6.3信号量 243
10.7出错处理 244
10.7.1错误码 245
10.7.2出错处理相关函数 245
10.8思考与练习 247
第11章 嵌入式车载终端的设计 248
11.1车载终端的硬件平台 248
11.1.1 S3C2440A微处理器 248
11.1.2车辆监控系统 249
11.1.3存储单元 250
11.1.4 LCD 250
11.1.5数字音频接口 250
11.2嵌入式开发环境的建立 251
11.3嵌入式车载终端软件的开发 252
11.3.1 GPRS通信模块 252
11.3.2温度自动调节系统 253
11.3.3可视倒车功能的实现 257
11.3.4车载语音电话 263
第12章 嵌入式BOA服务器的构建 269
12.1嵌入式Web服务器 269
12.2嵌入式Linux系统移植 270
12.2.1开发环境的构建 270
12.2.2 Boot Loader分析移植 271
12.2.3 Linux内核移植 272
12.2.4构建根文件系统 274
12.3嵌入式Linux的BOA服务器移植 276
12.3.1 BOA服务器 276
12.3.2 CGIC库的移植 281
12.3.3 HTML模板的制作 283
12.3.4 CGI程序的开发 283
第13章 嵌入式VNC远程控制的实现 291
13.1远程控制及VNC 291
13.2需求分析 292
13.2.1软件需求分析 292
13.2.2硬件需求分析 293
13.3嵌入式Linux系统移植 294
13.3.1交叉开发环境的构建 294
13.3.2 Bootloader的移植 297
13.3.3 Linux内核的移植 300
13.3.4 Linux根文件系统的构建 302
13.4 Tiny-X及应用程序移植 307
13.4.1 Linux X图形系统和嵌入式X 307
13.4.2配置编译Tiny-X 307
13.4.3编译Matchbox 312
13.4.4编译VNC Viewer 312
13.4.5编译Xterm 313
13.5 RFB协议简析及文件系统的裁剪 313
13.5.1 RFB协议简析 314
13.5.2文件系统的裁剪 315
第 14章ARM Linux指纹门禁系统 316
14.1指纹识别技术概述 316
14.2指纹识别系统的原理 318
14.3系统硬件结构 320
14.4指纹采集芯片fps200 321
14.5 Linux操作系统移植 322
14.5.1 BootLoader移植 323
14.5.2 Linux内核移植到S3C2410 324
14.5.3加载指纹芯片驱动程序 326
14.5.4加载文件系统 326
14.6系统软件设计 328
14.6.1系统的初始化 328
14.6.2指纹采集与处理 329
14.6.3指纹识别算法的实现 331
第15章 基于ARM Linux的家庭安全监控系统设计 336
15.1系统的功能和组成 336
15.1.1 S3C2410简介 337
15.1.2无线红外探头RD-HW14G 339
15.1.3系统模块功能描述 339
15.2软件平台与开发工具 340
15.2.1 Linux系统 341
15.2.2 Shell脚本 341
15.2.3 GCC编译器 342
15.2.4 Make项目管理器 342
15.2.5 Socket编程接口 343
15.3基于嵌入式平台的网络服务器 343
15.3.1嵌入式Web服务器 344
15.3.2嵌入式视频服务器 346
15.3.3嵌入式SSH服务器 348
15.4视频监控系统的实现 350
15.4.1基于Java的浏览器实现 350
15.4.2 Windows平台下客户端的分析和实现 351
15.5红外监控模块的设计 355
参考文献 356