第1章 嵌入式系统概述 1
1.1嵌入式系统的概念 1
1.2嵌入式系统的发展 2
1.2.1嵌入式系统的产生 2
1.2.2嵌入式系统的发展历史 3
1.2.3嵌入式系统的发展趋势 4
1.3嵌入式系统的特点 5
1.4嵌入式系统的组成 6
1.4.1嵌入式系统的硬件 6
1.4.2嵌入式系统的软件 10
1.5嵌入式系统的分类 11
1.6嵌入式系统的应用 13
习题 14
第2章 嵌入式系统设计的系统工程方法 15
2.1嵌入式系统设计模型和设计步骤 15
2.2系统需求分析 17
2.2.1需求描述阶段 17
2.2.2规格说明阶段 18
2.3系统设计 19
2.3.1体系结构设计 19
2.3.2硬件平台的选择 19
2.3.3软件平台的选择 20
2.3.4硬件和软件的划分 21
2.3.5嵌入式系统设计方法 21
2.4系统集成与调试 23
2.4.1系统集成 23
2.4.2系统调试 23
2.5系统测试 25
2.5.1嵌入式系统的测试方法 26
2.5.2嵌入式系统的测试工具 27
2.5.3嵌入式系统的测试策略 28
2.6系统维护 28
习题 29
第3章 嵌入式处理器 30
3.1嵌入式系统的硬件组成 30
3.1.1处理器 30
3.1.2存储器 32
3.1.3附属电路与I/O模块 34
3.1.4调试接口 35
3.2嵌入式处理器 37
3.2.1嵌入式微处理器 37
3.2.2嵌入式微控制器 37
3.2.3数字信号处理器 38
3.2.4如何选择嵌入式处理器 40
3.2.5嵌入式处理器的发展 41
3.3 SoC嵌入式处理器 42
3.4典型的嵌入式处理器 45
3.4.1 ARM系列 45
3.4.2 PowerPC系列 49
3.4.3 MC68HC12系列 50
3.4.4 ColdFire系列 50
3.4.5 x86系列 52
3.4.6 Intel 8051系列微控制器 53
3.4.7 Microchip系列微控制器 56
3.4.8 TI公司TMS320系列DSP 58
3.5 ARM体系结构 59
3.5.1 ARM处理器的运行模式 59
3.5.2 ARM微处理器的工作状态 60
3.5.3 ARM支持的数据类型 60
3.5.4 ARM微处理器的寄存器组织 61
3.5.5 ARM微处理器的异常处理机制 66
3.5.6 ARM处理器的应用选型 67
习题 68
第4章 嵌入式系统的I/O模块 70
4.1 I/O接口的基本结构 70
4.1.1 I/O接口电路的组成 70
4.1.2 I/O接口电路的编址方式 71
4.1.3 I/O接口电路的数据传送方式 72
4.2定时器/计数器 74
4.2.1内部结构 75
4.2.2基本操作 76
4.2.3应用实例 79
4.3 LCD接口 80
4.3.1内部结构 80
4.3.2基本操作 83
4.3.3应用实例 84
4.4通信接口 85
4.4.1 UART异步串行接口 85
4.4.2串行外设接口 95
4.4.3 USB接口 100
4.4.4以太网接口 106
4.4.5 I2C总线接口 114
4.4.6 CAN总线接口 117
4.5通用并行接口 122
4.5.1 S3C44B0X I/O功能概述 122
4.5.2应用实例 123
4.5.3并行接口标准 124
4.6中断接口 125
4.6.1中断源 125
4.6.2特殊功能寄存器 126
4.6.3中断优先级判断 127
4.6.4应用实例 128
4.7 DMA控制器 128
4.7.1简要说明 129
4.7.2 BDMA的寄存器 130
4.7.3 BDMA的结构 130
4.7.4 BDMA自动重装模式 131
4.8 A/D和D/A转换器 131
4.8.1内部结构 132
4.8.2基本操作 132
4.8.3应用实例 133
4.9其他接口 134
习题 135
第5章 嵌入式系统的软件 136
5.1嵌入式系统软件的开发方式 136
5.1.1嵌入式系统的软件 136
5.1.2软硬件结合的方式 136
5.2嵌入式系统软件的结构 137
5.2.1软件的层次结构 137
5.2.2嵌入式软件的分类 138
5.3嵌入式Linux系统的软件 139
5.3.1 Linux操作系统、中间件、应用层程序的关系 139
5.3.2嵌入式Linux中的中间件 140
习题 144
第6章 嵌入式网络与协议栈 145
6.1嵌入式网络 145
6.2嵌入式系统的联网 146
6.2.1网络连接方式 146
6.2.2开放式系统互连模型 147
6.2.3通信方式 149
6.3基于网络的嵌入式系统设计 150
6.3.1通信分析 150
6.3.2系统性能分析 151
6.3.3网络分配与调度 152
6.4嵌入式Internet 153
6.4.1嵌入式Internet概述 153
6.4.2嵌入式Internet的应用 153
6.4.3嵌入式Internet的原理 154
6.4.4嵌入式TCP/IP 155
6.5蓝牙技术 156
6.5.1蓝牙技术及特点 156
6.5.2蓝牙协议栈 158
习题 159
第7章 嵌入式操作系统 160
7.1操作系统简介 160
7.2嵌入式操作系统和实时系统 160
7.2.1嵌入式系统的概念 160
7.2.2实时操作系统的基本概念 161
7.2.3嵌入式实时系统 162
7.2.4嵌入式操作系统的功能 163
7.3常用的嵌入式操作系统 164
7.3.1嵌入式Linux 164
7.3.2 VxWorks 165
7.3.3 Windows CE 166
7.3.4 Nucleus PLUS 166
7.3.5 μC/OS-Ⅱ 167
7.3.6 Symbian OS 167
7.3.7 QNX 167
7.4 μC/OS-Ⅱ操作系统介绍 168
7.4.1 μC/OS-Ⅱ操作系统的组织结构 168
7.4.2 μC/OS-Ⅱ内核 170
7.4.3 μC/OS-Ⅱ任务管理 172
7.4.4 μC/OS-Ⅱ时间管理 176
7.4.5 μC/OS-Ⅱ内存管理 178
7.4.6 μC/OS-Ⅱ任务之间的通信与同步 179
习题 185
第8章 嵌入式Linux的开发环境 186
8.1嵌入式Linux开发环境综述 186
8.2程序生成工具GCC工具链 187
8.2.1 GNU工具 187
8.2.2 GCC交叉编译工具集合的使用 189
8.2.3 C语言库 201
8.2.4 ELF文件格式 203
8.3工程管理工具make和Makefile 204
8.3.1 make工具和Makefile 205
8.3.2 Makefile的实例 206
8.3.3自动生成Makefile 212
8.4 GDB调试工具 214
8.4.1 GDB调试在嵌入式系统中的应用 214
8.4.2远程GDB调试 215
8.4.3 GDB的安装与使用 216
8.4.4使用gdbstub实现调试用户程序 218
8.4.5使用gdbserver调试 220
8.5主机开发环境设置 223
8.5.1串口终端工具 224
8.5.2 TFTP 227
8.5.3 NFS 229
习题 230
第9章 嵌入式Linux系统的组成和构建 231
9.1嵌入式Linux系统的结构 231
9.1.1嵌入式Linux系统的组成 231
9.1.2嵌入式Linux构建的基本工作 232
9.2嵌入式Linux的BootLoader 233
9.2.1 BootLoader的开发要点 233
9.2.2 BootLoader的结构 235
9.2.3 U-Boot概述 236
9.2.4 U-Boot的结构和使用 237
9.2.5 U-Boot的生成和使用 240
9.2.6 U-Boot的启动流程 245
9.2.7 U-Boot的扩展 246
9.3嵌入式Linux内核的构建 251
9.4根文件系统 262
9.4.1 Linux下的文件系统 262
9.4.2嵌入式Linux的文件系统介绍 264
9.4.3 Linux的根文件系统 267
习题 269
第10章 嵌入式Linux系统内核原理和移植 271
10.1 Linux内核概述 271
10.1.1 Linux内核的结构 271
10.1.2 ARM处理器上运行的Linux系统 272
10.2 Linux内核的移植工作 273
10.2.1 ARM-Linux系统的移植 273
10.2.2 ARM-Linux系统的初始化过程 274
10.2.3压缩内核的入口 274
10.2.4非压缩内核的入口 278
10.3基于S3C2410的移植工作 281
10.3.1移植的内容 281
10.3.2处理器类型支持 282
10.3.3中断系统的移植 284
10.3.4定时器的移植 285
10.3.5编译和配置选项 286
习题 287
第11章 嵌入式Linux系统的驱动程序 288
11.1 Linux驱动程序的概念 288
11.1.1 Linux驱动程序的种类 288
11.1.2 Linux设备文件 289
11.2 Linux内核编程 290
11.2.1内存访问接口 290
11.2.2内核模块编写的注意事项 291
11.2.3内核模块的作用 292
11.2.4内核模块的编写 293
11.3 Linux驱动程序的编写基础 294
11.3.1驱动程序的框架 294
11.3.2驱动程序的基本操作 299
11.3.3驱动程序中使用中断 300
11.3.4竞态处理 301
11.3.5阻塞操作 302
11.3.6异步操作 302
11.4嵌入式Linux中的几种驱动程序 303
11.4.1内存设备驱动程序 303
11.4.2 Misc驱动程序框架 305
11.4.3帧缓冲驱动程序 306
11.4.4 TTY驱动程序 308
11.4.5回环块设备驱动程序 309
11.4.6 MTD驱动程序 310
11.4.7回环网络设备驱动 312
习题 313
第12章 嵌入式系统的实现和调试 314
12.1嵌入式系统的实现 314
12.2嵌入式系统的软件测试 317
12.2.1测试的目的 317
12.2.2何时开始测试 318
12.2.3测试内容和测试方法 319
12.2.4测试实例的选择 319
12.2.5何时停止测试 320
12.2.6测试和维护 320
12.2.7评估测试的覆盖率 321
12.2.8性能测试 323
12.3嵌入式系统的调试 324
12.3.1模拟调试 324
12.3.2远程调试器与调试内核 325
12.3.3 ROM仿真器 326
12.3.4在线仿真器 327
12.3.5 BDM 329
12.3.6示波器、存储示波器和逻辑分析仪 332
12.4嵌入式系统设计中的若干问题 335
12.4.1功耗问题 335
12.4.2电磁兼容性问题 339
习题 343