目 录
第1章 嵌入式系统基础知识 1
1.1 嵌入式系统概述 1
1.1.1 嵌入式系统的发展史 2
1.1.2 嵌入式系统的定义与特点 3
1.1.3 嵌入式系统的特点 4
1.2 嵌入式系统的组成 5
1.2.1 嵌入式系统的硬件架构 5
1.2.2 嵌入式操作系统 8
1.2.3 嵌入式应用软件 10
1.3 ARM处理器平台介绍 11
1.3.1 ARM处理器简介 11
1.3.2 ARM处理器系列 12
1.3.3 ARM体系结构简介 16
1.3.4 S3C2410处理器简介 17
1.4 嵌入式系统硬件平台选型 21
1.4.1 硬件平台的选择 21
1.4.2 ARM处理器选型 22
1.5 嵌入式系统开发概述 25
1.5.1 嵌入式系统开发流程 25
1.5.2 嵌入式软件开发流程 25
本章小结 29
动手练练 30
第2章 嵌入式Linux C语言开发工具 31
2.1 嵌入式Linux下C语言概述 31
2.1.1 C语言简史 31
2.1.2 C语言特点 32
2.1.3 嵌入式Linux C语言编程环境 33
2.2 嵌入式Linux编辑器vi的使用 33
2.2.1 vi的基本模式 34
2.2.2 vi的基本操作 34
2.2.3 vi的使用实例分析 38
2.3 嵌入式Linux编译器GCC的使用 40
2.3.1 GCC概述 40
2.3.2 GCC编译流程分析 40
2.3.3 GCC警告提示 43
2.3.4 GCC使用库函数 45
2.3.5 GCC代码优化 46
2.4 嵌入式Linux调试器GDB的使用 47
2.4.1 GDB使用实例 47
2.4.2 设置/删除断点 50
2.4.3 数据相关命令 51
2.4.4 调试运行环境相关命令 52
2.4.5 堆栈相关命令 52
2.5 make工程管理器 53
2.5.1 Makefile基本结构 53
2.5.2 Makefile变量 55
2.5.3 Makefile规则 58
2.5.4 make使用 59
2.6 Emacs综合编辑器 59
2.6.1 Emacs的启动与退出 60
2.6.2 Emacs的基本编辑 61
2.6.3 Emacs的C模式 63
2.6.4 Emacs的Shell模式 66
本章小结 67
动手练练 67
第3章 构建嵌入式Linux系统 68
3.1 嵌入式系统开发环境的构建 68
3.1.1 嵌入式交叉编译环境搭建 68
3.1.2 minicom和超级终端配置及使用 72
3.1.3 宿主机服务配置 79
3.2 Bootloader 83
3.2.1 Bootloader的概念 84
3.2.2 Bootloader启动流程分析 84
3.2.3 U-Boot概述 85
3.2.4 U-Boot源码导读 86
3.3 编译嵌入式Linux内核 86
3.4 Linux内核目录结构 90
3.5 制作文件系统 91
本章小结 92
动手练练 92
第4章 嵌入式Linux C语言基础——数据、表达式 93
4.1 嵌入式Linux C语言概述 93
4.2 基本数据类型 94
4.2.1 整型家族 94
4.2.2 实型家族 96
4.2.3 字符型家族 98
4.2.4 枚举家族 99
4.2.5 指针家族 100
4.3 变量与常量 101
4.3.1 变量的定义 101
4.3.2 typedef 107
4.3.3 常量定义 108
4.3.4 ARM-Linux基本数据类型综合应用实例 109
4.4 运算符与表达式 111
4.4.1 算术运算符和表达式 112
4.4.2 赋值运算符和表达式 114
4.4.3 逗号运算符和表达式 116
4.4.4 位运算符和表达式 116
4.4.5 关系运算符和表达式 118
4.4.6 逻辑运算符和表达式 119
4.4.7 sizeof操作符 121
4.4.8 条件(?)运算符 122
4.4.9 运算符优先级总结 123
4.4.10 ARM-Linux运算符综合实例 125
本章小结 129
动手练练 129
第5章 嵌入式Linux C语言基础——控制语句及函数 130
5.1 嵌入式Linux C语言程序结构概述 130
5.1.1 嵌入式Linux C语言3种程序结构 130
5.1.2 嵌入式Linux C语言基本语句 131
5.2 选择语句 134
5.2.1 if语句 134
5.2.2 switch语句 136
5.2.3 ARM-Linux选择语句应用实例 138
5.3 循环语句 139
5.3.1 while和do-while语句 139
5.3.2 for循环语句 140
5.3.3 break和continue语句 141
5.3.4 ARM-Linux循环语句应用实例 143
5.4 goto语句 144
5.4.1 goto语句语法 144
5.4.2 ARM-Linux中goto语句应用实例 145
5.5 函数的定义与声明 146
5.5.1 C语言函数概述 146
5.5.2 函数定义 147
5.5.3 函数声明 148
5.5.4 ARM-Linux函数定义与声明实例 149
5.6 函数的参数、值和基本调用 150
5.6.1 函数的参数 150
5.6.2 函数的值 151
5.6.3 函数的基本调用 151
5.7 函数的嵌套、递归调用 152
5.7.1 函数的嵌套调用 152
5.7.2 函数的递归调用 152
5.7.3 ARM-Linux函数调用应用实例 155
本章小结 156
动手练练 156
第6章 嵌入式Linux C语言基础——数组、指针与结构 158
6.1 数组 158
6.1.1 一维数组 158
6.1.2 字符串 161
6.1.3 二维数组 163
6.2 指针 164
6.2.1 指针的概念 164
6.2.2 指针变量的操作 166
6.2.3 指针和数组 173
6.2.4 指针高级议题 178
6.3 结构体与联合 182
6.3.1 结构体 182
6.3.2 联合 186
6.3.3 ARM-Linux指针、结构体使用实例 187
本章小结 189
动手练练 189
第7章 嵌入式Linux C语言基础——高级议题 190
7.1 预处理 190
7.1.1 预处理的概念 190
7.1.2 预定义 191
7.1.3 文件包含 196
7.1.4 条件编译 197
7.2 C语言中的内存分配 199
7.2.1 C语言程序所占内存分类 199
7.2.2 堆和栈的区别 200
7.3 嵌入式Linux可移植性考虑 201
7.3.1 字长和数据类型 201
7.3.2 数据对齐 203
7.3.3 字节顺序 203
7.4 C和汇编的接口 203
7.4.1 内嵌汇编的语法 204
7.4.2 编译器优化介绍 206
7.4.3 C语言关键字volatile 207
7.4.4 memory描述符 207
7.4.5 gcc对内嵌汇编语言的处理方式 207
本章小结 209
动手练练 209
第8章 嵌入式Linux C语言基础——ARM Linux内核常见数据结构 210
8.1 链表 210
8.1.1 链表概述 210
8.1.2 单向链表 211
8.1.3 双向链表 217
8.1.4 循环链表 219
8.1.5 ARM Linux中链表使用实例 219
8.2 树、二叉树、平衡树 221
8.2.1 树 221
8.2.2 二叉树 222
8.2.3 平衡树 229
8.2.4 ARM Linux中红黑树使用实例 230
8.3 哈希表 232
8.3.1 哈希表的概念及作用 232
8.3.2 哈希表的构造方法 234
8.3.3 哈希表的处理冲突方法 235
8.3.4 ARM Linux中哈希表使用实例 236
本章小结 238
动手练练 239
第9章 文件I/O相关实例 240
9.1 Linux系统调用及用户编程接口(API) 240
9.1.1 系统调用 241
9.1.2 用户编程接口(API) 241
9.1.3 系统命令 241
9.2 ARM Linux文件I/O系统概述 242
9.2.1 虚拟文件系统(VFS) 242
9.2.2 通用文件模型 243
9.2.3 ARM Linux的设备文件 248
9.3 文件I/O操作 248
9.3.1 不带缓存的文件I/O操作 248
9.3.2 标准I/O开发 258
9.4 嵌入式Linux串口应用开发 261
9.4.1 串口概述 261
9.4.2 串口设置详解 262
9.4.3 串口使用详解 266
本章小结 269
动手练练 269
第10章 ARM Linux进程线程开发实例 270
10.1 ARM Linux进程线程管理 270
10.1.1 进程描述符及任务结构 270
10.1.2 进程的调度 273
10.1.3 Linux中的线程 274
10.1.4 Linux中进程间通信 275
10.2 ARM Linux进程控制相关API 276
10.3 ARM Linux进程间通信API 282
10.3.1 管道通信 282
10.3.2 信号通信 284
10.3.3 共享内存 289
10.3.4 消息队列 290
10.4 ARM Linux线程相关API 293
10.5 Linux守护进程 298
10.5.1 守护进程概述 298
10.5.2 编写规则 298
10.5.3 守护进程实例 300
本章小结 301
动手练练 302
第11章 ARM Linux网络开发实例 303
11.1 TCP/IP协议简介 303
11.1.1 TCP/IP的分层模型 303
11.1.2 TCP/IP分层模型特点 304
11.1.3 TCP/IP核心协议 305
11.2 网络基础编程 308
11.2.1 socket概述 308
11.2.2 地址及顺序处理 309
11.2.3 socket基础编程 313
11.3 Web服务器 319
11.3.1 Web服务器功能 319
11.3.2 Web服务器协议 320
11.3.3 Web服务器协议 321
11.3.4 运行Web服务器 326
11.4 traceroute程序实例 326
11.4.1 traceroute原理简介 326
11.4.2 traceroute实例与分析 327
11.4.3 traceroute实例运行结果 332
本章小结 332
动手练练 333
第12章 嵌入式Linux设备驱动开发 334
12.1 设备驱动概述 334
12.1.1 设备驱动简介 334
12.1.2 设备驱动程序的特点 335
12.2 模块编程 336
12.2.1 模块编程简介 336
12.2.2 模块相关命令 336
12.2.3 模块编程流程 337
12.3 字符设备驱动编写 338
12.4 块设备驱动编写 347
12.4.1 块设备驱动程序描述符 347
12.4.2 块设备驱动编写流程 348
12.5 简单的skull驱动实例 354
12.5.1 驱动简介 354
12.5.2 驱动编写流程 354
12.5.3 结果分析 357
12.6 LCD驱动编写实例 358
12.6.1 LCD工作原理 358
12.6.2 LCD驱动实例 360
本章小结 367
动手练练 367
第13章 视频监控系统 368
13.1 视频监控系统概述 368
13.1.1 系统组成 368
13.1.2 音视频服务器 369
13.1.3 音视频客户端 370
13.1.4 通信传输控制协议 370
13.2 基本数据结构 373
13.3 功能实现 375
13.3.1 传输控制 375
13.3.2 用户检验 379
13.3.3 控制命令处理 380
13.3.4 云台转动控制 381
13.3.5 线程相关 385
本章小结 386
动手练练 386
展开