第1章 嵌入式系统基础知识 1
1.1嵌入式系统概述 1
1.1.1嵌入式系统的发展史 2
1.1.2嵌入式系统的定义与特点 3
1.1.3嵌入式系统的特点 4
1.2嵌入式系统的组成 5
1.2.1嵌入式系统的硬件架构 6
1.2.2嵌入式操作系统 9
1.2.3嵌入式应用软件 11
1.3ARM处理器平台介绍 12
1.3.1ARM处理器简介 12
1.3.2ARM处理器系列 13
1.3.3ARM体系结构简介 17
1.3.4S3C2410处理器简介 18
1.4嵌入式系统硬件平台选型 22
1.4.1硬件平台的选择 22
1.4.2ARM处理器选型 23
1.5嵌入式系统开发概述 25
1.5.1嵌入式系统开发流程 25
1.5.2嵌入式软件开发流程 26
本章小结 31
动手练练 31
第2章 嵌入式Linux C语言开发工具 32
2.1嵌入式Linux下C语言概述 32
2.1.1C语言简史 33
2.1.2C语言特点 33
2.1.3嵌入式Linux C语言编程环境 34
2.2嵌入式Linux编辑器vi的使用 35
2.2.1vi的基本模式 35
2.2.2vi的基本操作 36
2.2.3vi的使用实例分析 40
2.3嵌入式Linux编译器GCC的使用 41
2.3.1GCC概述 41
2.3.2GCC编译流程分析 42
2.3.3GCC警告提示 45
2.3.4GCC使用库函数 47
2.3.5GCC代码优化 49
2.4嵌入式Linux调试器GDB的使用 49
2.4.1GDB使用实例 50
2.4.2设置/删除断点 53
2.4.3数据相关命令 54
2.4.4调试运行环境相关命令 55
2.4.5堆栈相关命令 55
2.5make工程管理器 55
2.5.1Makefile基本结构 56
2.5.2Makefile变量 58
2.5.3Makefile规则 61
2.5.4make使用 62
2.6Emacs综合编辑器 63
2.6.1Emacs的启动与退出 63
2.6.2Emacs的基本编辑 64
2.6.3Emacs的C模式 66
2.6.4Emacs的Shell模式 69
本章小结 70
动手练练 70
第3章 构建嵌入式Linux系统 71
3.1嵌入式系统开发环境的构建 71
3.1.1嵌入式交叉编译环境搭建 71
3.1.2minicom和超级终端配置及使用 76
3.1.3宿主机服务配置 83
3.2Bootloader 87
3.2.1Bootloader的概念 88
3.2.2Bootloader启动流程分析 89
3.2.3U-Boot概述 89
3.2.4U-Boot源码导读 90
3.3编译嵌入式Linux内核 91
3.4Linux内核目录结构 95
3.5制作文件系统 95
本章小结 97
动手练练 97
第4章 嵌入式Linux C语言基础——数据、表达式 98
4.1嵌入式Linux C语言概述 98
4.2基本数据类型 100
4.2.1整型家族 100
4.2.2实型家族 102
4.2.3字符型家族 103
4.2.4枚举家族 104
4.2.5指针家族 105
4.3变量与常量 107
4.3.1变量的定义 107
4.3.2typedef 113
4.3.3常量定义 114
4.3.4ARM-Linux基本数据类型综合应用实例 115
4.4运算符与表达式 118
4.4.1算术运算符和表达式 119
4.4.2赋值运算符和表达式 121
4.4.3逗号运算符和表达式 123
4.4.4位运算符和表达式 124
4.4.5关系运算符和表达式 126
4.4.6逻辑运算符和表达式 127
4.4.7sizeof操作符 129
4.4.8条件(?)运算符 130
4.4.9运算符优先级总结 131
4.4.10ARM-Linux运算符综合实例 133
本章小结 137
动手练练 137
第5章 嵌入式Linux C语言基础——控制语句及函数 138
5.1嵌入式Linux C语言程序结构概述 138
5.1.1嵌入式Linux C语言3种程序结构 138
5.1.2嵌入式Linux C语言基本语句 139
5.2选择语句 142
5.2.1if语句 142
5.2.2switch语句 145
5.2.3ARM-Linux选择语句应用实例 147
5.3循环语句 148
5.3.1while和do-while语句 148
5.3.2for循环语句 149
5.3.3break和continue语句 151
5.3.4ARM-Linux循环语句应用实例 152
5.4goto语句 154
5.4.1goto语句语法 154
5.4.2ARM-Linux中goto语句应用实例 154
5.5函数的定义与声明 155
5.5.1C语言函数概述 155
5.5.2函数定义 157
5.5.3函数声明 157
5.5.4ARM-Linux函数定义与声明实例 158
5.6函数的参数、值和基本调用 160
5.6.1函数的参数 160
5.6.2函数的值 161
5.6.3函数的基本调用 161
5.7函数的嵌套、递归调用 162
5.7.1函数的嵌套调用 162
5.7.2函数的递归调用 162
5.7.3ARM-Linux函数调用应用实例 165
本章小结 167
动手练练 167
第6章 嵌入式Linux C语言基础——数组、指针与结构 168
6.1数组 169
6.1.1一维数组 169
6.1.2字符串 172
6.1.3二维数组 174
6.2指针 175
6.2.1指针的概念 175
6.2.2指针变量的操作 177
6.2.3指针和数组 184
6.2.4指针高级议题 191
6.3结构体与联合 196
6.3.1结构体 196
6.3.2联合 200
6.3.3ARM-Linux指针、结构体使用实例 201
本章小结 203
动手练练 203
第7章 嵌入式Linux C语言基础——高级议题 204
7.1预处理 204
7.1.1预处理的概念 204
7.1.2预定义 205
7.1.3文件包含 211
7.1.4条件编译 212
7.2C语言中的内存分配 214
7.2.1C语言程序所占内存分类 214
7.2.2堆和栈的区别 215
7.3嵌入式Linux可移植性考虑 216
7.3.1字长和数据类型 216
7.3.2数据对齐 218
7.3.3字节顺序 218
7.4C和汇编的接口 219
7.4.1内嵌汇编的语法 219
7.4.2编译器优化介绍 221
7.4.3C语言关键字volatile 222
7.4.4memory描述符 222
7.4.5gcc对内嵌汇编语言的处理方式 223
本章小结 224
动手练练 224
第8章 嵌入式Linux C语言基础——ARM Linux内核常见数据结构 225
8.1链表 226
8.1.1链表概述 226
8.1.2单向链表 226
8.1.3双向链表 233
8.1.4循环链表 234
8.1.5ARM Linux中链表使用实例 235
8.2树、二叉树、平衡树 237
8.2.1树 237
8.2.2二叉树 238
8.2.3平衡树 245
8.2.4ARM Linux中红黑树使用实例 247
8.3哈希表 249
8.3.1哈希表的概念及作用 249
8.3.2哈希表的构造方法 250
8.3.3哈希表的处理冲突方法 252
8.3.4ARM Linux中哈希表使用实例 253
本章小结 255
动手练练 255
第9章 文件I/O相关实例 256
9.1Linux系统调用及用户编程接口(API) 257
9.1.1系统调用 257
9.1.2用户编程接口(API) 257
9.1.3系统命令 258
9.2ARM Linux文件I/O系统概述 258
9.2.1虚拟文件系统(VFS) 258
9.2.2通用文件模型 259
9.2.3ARM Linux的设备文件 264
9.3文件I/O操作 265
9.3.1不带缓存的文件I/O操作 265
9.3.2标准I/O开发 276
9.4嵌入式Linux串口应用开发 279
9.4.1串口概述 279
9.4.2串口设置详解 280
9.4.3串口使用详解 284
本章小结 287
动手练练 287
第10章 ARM Linux进程线程开发实例 288
10.1ARM Linux进程线程管理 289
10.1.1进程描述符及任务结构 289
10.1.2进程的调度 291
10.1.3Linux中的线程 293
10.1.4Linux中进程间通信 293
10.2ARM Linux进程控制相关API 294
10.3ARM Linux进程间通信API 301
10.3.1管道通信 301
10.3.2信号通信 303
10.3.3共享内存 308
10.3.4消息队列 309
10.4ARM Linux线程相关API 312
10.5Linux守护进程 317
10.5.1守护进程概述 317
10.5.2编写规则 318
10.5.3守护进程实例 319
本章小结 321
动手练练 321
第11章 ARM Linux网络开发实例 322
11.1TCP/IP协议简介 322
11.1.1TCP/IP的分层模型 322
11.1.2TCP/IP分层模型特点 324
11.1.3TCP/IP核心协议 325
11.2网络基础编程 328
11.2.1socket概述 328
11.2.2地址及顺序处理 328
11.2.3socket基础编程 333
11.3Web服务器 339
11.3.1Web服务器功能 339
11.3.2Web服务器协议 341
11.3.3Web服务器协议 342
11.3.4运行Web服务器 347
11.4Traceroute程序实例 347
11.4.1Traceroute原理简介 347
11.4.2traceroute实例与分析 348
11.4.3traceroute实例运行结果 354
本章小结 354
动手练练 354
第12章 嵌入式Linux设备驱动开发 355
12.1设备驱动概述 355
12.1.1设备驱动简介 355
12.1.2设备驱动程序的特点 356
12.2模块编程 357
12.2.1模块编程简介 357
12.2.2模块相关命令 357
12.2.3模块编程流程 358
12.3字符设备驱动编写 360
12.4块设备驱动编写 369
12.4.1块设备驱动程序描述符 369
12.4.2块设备驱动编写流程 369
12.5简单的skull驱动实例 375
12.5.1驱动简介 375
12.5.2驱动编写流程 376
12.5.3结果分析 379
12.6LCD驱动编写实例 379
12.6.1LCD工作原理 379
12.6.2LCD驱动实例 382
本章小结 389
动手练练 389
第13章 视频监控系统 390
13.1视频监控系统概述 390
13.1.1系统组成 390
13.1.2音视频服务器 391
13.1.3音视频客户端 392
13.1.4通信传输控制协议 393
13.2基本数据结构 395
13.3功能实现 398
13.3.1传输控制 398
13.3.2用户检验 401
13.3.3控制命令处理 403
13.3.4云台转动控制 404
13.3.5线程相关 407
本章小结 408
动手练练 408