第1章 嵌入式系统概述 1
1.1 嵌入式系统简介 1
1.1.1 嵌入式系统的基本概念 1
1.1.2 嵌入式系统的体系结构 2
1.1.3 嵌入式系统的特点 6
1.2 嵌入式系统的发展和应用领域 7
1.2.1 嵌入式系统的发展历史 7
1.2.2 嵌入式系统的发展前景及趋势 7
1.3 嵌入式操作系统 9
1.3.1 嵌入式操作系统的发展 9
1.3.2 嵌入式操作系统的特点 10
1.3.3 几种有代表性的嵌入式操作系统 11
1.4 嵌入式系统的开发过程 15
1.4.1 嵌入式应用系统开发 15
1.4.2 嵌入式系统设计与开发流程 16
1.4.3 嵌入式系统软件的特征 19
1.4.4 嵌入式软件开发人才需求和要求 19
第2章 ARM处理器体系结构 21
2.1 ARM处理器概述 21
2.1.1 ARM处理器简介 21
2.1.2 ARM体系结构发展 22
2.1.3 ARM处理器系列主要产品 24
2.2 Cortex-A8处理器结构 26
2.3 Cortex-A8处理器工作模式和状态 28
2.3.1 Cortex-A8处理器工作模式 28
2.3.1 Cortex-A8处理器状态 29
2.4 Cortex-A8数据类型 29
2.4.1 ARM的基本数据类型 29
2.4.2 浮点数据类型 29
2.4.3 大/小端存储模式 31
2.4.3 寄存器组 31
2.5 Cortex-A8存储器管理 34
2.5.1 协处理器 35
2.5.2 存储管理单元 35
2.5.3 高速缓存存储器Cache 36
2.6 Cortex-A8异常处理 37
2.6.1 异常向量和优先级 37
2.6.2 异常响应过程 38
2.6.3 异常返回过程 38
第3章 ARM指令集 40
3.1 ARM指令集概述 40
3.1.1 指令格式 41
3.1.2 指令的条件码 41
3.2 ARM指令的寻址方式 42
3.2.1 立即寻址 42
3.2.2 寄存器寻址 43
3.2.3 寄存器移位寻址 43
3.2.4 寄存器间接寻址 43
3.2.5 变址寻址 44
3.2.6 多寄存器寻址 44
3.2.7 堆栈寻址 44
3.2.8 块复制寻址 45
3.2.9 相对寻址 45
3.3 ARM指令简介 45
3.3.1 跳转指令 45
3.3.2 数据处理指令 47
3.3.3 程序状态寄存器处理指令 50
3.3.4 加载/存储指令 51
3.3.5 协处理器指令 52
3.3.6 异常产生指令 53
3.4 Thumb指令简介 53
3.5 ARM汇编语言编程简介 54
3.5.1 伪操作 54
3.5.2 伪指令 55
3.5.3 汇编语句格式 57
3.5.4 汇编语言的程序结构 57
3.6 C语言与汇编语言的混合编程 58
3.6.1 子程序调用的基本规则 58
3.6.2 C程序中的内联汇编、嵌入汇编 59
3.6.3 汇编中访问C语言程序变量 63
3.6.4 ARM中的汇编和C语言相互调用 63
第4章 S5PV210微处理器与接口 65
4.1 基于S5PV210微处理器的硬件平台体系结构 65
4.1.1 S5PV210处理器简介 65
4.1.2 S5PV210内部各模块介绍 66
4.2 存储系统 69
4.2.1 S5PV210的地址空间 69
4.2.2 S5PV210启动流程 71
4.3 时钟系统 72
4.3.1 S5PV210时钟概述 72
4.3.2 S5PV210的时钟结构 73
4.4 GPIO接口 75
4.4.1 GPIO概述 75
4.4.2 GPIO寄存器 76
4.4.3 GPIO操作步骤 76
4.4.4 一个LED灯的例子 77
4.5 串行通信接口 81
4.5.1 串行通信方式 82
4.5.2 RS-232C串行接口 83
4.5.3 S5PV210的异步串行通信 84
4.5.4 S5PV210的UART寄存器 85
4.5.5 UART通信示例 86
4.6 A/D转换器 91
第5章 嵌入式Linux程序设计基础 94
5.1 Linux系统下的开发环境以及常用工具介绍 94
5.1.1 Linux编程 94
5.2 嵌入式Linux编译器 95
5.2.1 Linux下C语言编译过程 97
5.2.2 GCC编译器 98
5.2.3 GDB调试技术 98
5.3 Makefile使用 100
5.3.1 Makefile基本原理 100
5.3.2 Makefile变量 101
5.3.3 Makefile规则 102
5.3.4 Make命令的使用 102
5.3.5 autoconf和automake生成Makefile 103
第6章 嵌入式Linux开发环境的建立与系统移植 105
6.1 嵌入式交叉编译环境的搭建 105
6.2 嵌入式主机通信环境的配置 106
6.2.1 配置超级终端 108
6.2.2 TFTP服务的配置 109
6.2.3 NFS服务的配置 110
6.3 编译嵌入式Linux系统内核 113
6.3.1 U-Boot的编译 113
6.3.2 内核裁剪配置及编译 113
6.3.3 文件系统的制作及编译 114
6.4 Bootloader的原理 115
6.5 U-Boot的代码结构和移植 116
6.6 嵌入式系统开发板的烧写 118
第7章 Linux文件处理及I/O编程 120
7.1 Linux文件系统概述 120
7.1.1 文件和目录的概念 120
7.1.2 文件的结构 121
7.1.3 文件的类型 122
7.1.4 文件系统的目录结构 123
7.1.5 文件和目录的存取权限 124
7.1.6 文件系统管理 126
7.1.7 Linux文件系统原理 127
7.2 嵌入式Linux的文件处理 128
7.2.1 文件描述符及文件处理 128
7.2.2 Linux设备文件的打开和创建 129
7.2.3 Linux设备文件的读写 133
7.3 Linux串口通信编程 135
7.3.1 Linux串口通信基础 135
7.3.2 Linux串口工作原理 136
7.3.3 Linux串口打开及初始化 137
7.3.4 Linux串口发送及接收 145
第8章 socket编程 149
8.1 TCP/IP协议简介 149
8.1.1 网络协议层次模型 149
8.1.2 网络模型的作用 150
8.1.3 网络通信遵循的原则 151
8.2 网络通信三要素 151
8.2.1 IP地址 151
8.2.2 MAC地址 151
8.2.3 端口号 152
8.3 socket编程接口 152
8.3.1 创建套接字函数 152
8.3.2 socket地址 154
8.3.3 网络字节序 155
8.3.4 socket与地址的绑定 155
8.3.5 侦听 156
8.3.6 接受连接请求 156
8.3.7 连接 157
8.3.8 数据发送与数据接收 157
8.3.9 关闭和切断连接 158
8.3.10 socket缓冲区 158
8.3.11 阻塞与非阻塞操作 159
8.4 socket编程实例 160
8.4.1 TCP通信例程 160
8.4.2 UDP通信例程 162
第9章 嵌入式设备驱动程序设计 166
9.1 嵌入式设备驱动程序基础 166
9.1.1 设备驱动程序概述 166
9.1.2 设备驱动程序的框架 168
9.1.3 设备驱动程序的加载过程 169
9.1.4 设备驱动程序的功能接口函数模块 172
9.1.5 设备驱动程序重要的数据结构体 174
9.2 字符设备驱动程序 176
9.2.1 字符设备的重要数据结构 176
9.2.2 字符设备驱动框架 179
9.2.3 字符设备驱动程序编写实例 181
9.3 GPIO驱动程序设计 185
9.3.1 GPIO重要数据结构 185
9.3.2 GPIO的驱动框架 187
9.3.3 GPIO驱动框架编写实例 189
第10章 QT图形界面应用程序开发 195
10.1 Qt简介 195
10.2 Qt的安装与配置 195
10.2.1 QtOpensource的安装 196
10.2.2 嵌入式Qt工具链的安装 198
10.2.3 QtCreator的安装 202
10.2.4 Qt的配置 203
10.3 Qt程序设计 204
10.3.1 编辑界面文件 204
10.3.2 源代码完善与解读 204
10.3.3 x86 Linux编译、调试与发布 206
10.3.4 EmbeddedLinux编译、发布与运行 207
10.4 嵌入式网络通信程序 211
10.4.1 网络通信概述 211
10.4.2 嵌入式服务器端程序开发 217
10.4.3 嵌入式客户端程序开发 222
第11章 嵌入式系统开发设计案例 229
11.1 嵌入式系统设计方法介绍 229
11.1.1 传统的嵌入式系统设计方法 229
11.1.2 “协同设计”概念的嵌入式系统设计方法 230
11.2 基于ARM的嵌入式Web服务器设计实例 231
11.2.1 系统环境搭建 231
11.2.2 Web服务器原理 232
11.2.3 嵌入式Web服务器设计 233
11.3 基于cortex-A8的智能安全网关系统 238
11.3.1 密码算法 238
11.3.2 安全网关系统设计 238
11.3.3 智能安全网关硬件设计 239
11.3.4 智能安全网关软件设计 240
11.4 基于嵌入式linux的智能安防门禁管理系统 258
11.4.1 韦根协议 258
11.4.2 SQlite数据库 258
11.4.3 门禁系统设计 259
11.4.4 门禁控制器硬件设计 260
11.4.5 门禁控制器软件设计 260
参考文献 286