第1章 嵌入式系统概论 1
1.1 嵌入式系统的基本概念 1
1.1.1 嵌入式系统的定义 1
1.1.2 嵌入式系统的特点 2
1.1.3 嵌入式系统的分类 4
1.1.4 嵌入式系统的组成 7
1.1.5 嵌入式系统的应用领域 8
1.2 嵌入式处理器 10
1.2.1 嵌入式处理器的分类 10
1.2.2 嵌入式微处理器 10
1.2.3 微控制器 11
1.2.4 DSP处理器 12
1.2.5 片上系统 12
1.2.6 典型嵌入式处理器 13
1.3 嵌入式操作系统 15
1.3.1 操作系统的概念及功能 15
1.3.2 操作系统的分类 16
1.3.3 实时操作系统 17
1.3.4 常见的嵌入式操作系统 18
1.4 嵌入式系统设计与开发过程 20
1.4.1 嵌入式软件开发的特点 20
1.4.2 嵌入式系统的设计考虑 22
1.4.3 嵌入式系统的设计挑战 23
1.4.4 软件与硬件的划分 24
1.4.5 软硬件平台的选择 25
1.4.6 嵌入式系统的设计与开发流程 27
1.5 嵌入式系统的发展趋势 28
第2章 ARM嵌入式处理器 32
2.1 ARM的由来 32
2.2 ARM处理器系列 32
2.2.1 ARM7系列微处理器 33
2.2.2 ARM9系列微处理器 34
2.2.3 ARM10系列微处理器 35
2.2.4 ARM11系列微处理器 36
2.2.5 SecurCore系列微处理器 37
2.2.6 StrongARM、Xscale系列微处理器 37
2.3 ARM处理器体系结构 38
2.3.1 RISC体系结构 38
2.3.2 ARM和Thumb状态 39
2.3.3 ARM7TDMI的寄存器结构 40
2.3.4 ARM异常中断 43
2.4 ARM处理器的应用选型 47
2.5 S3C4510B概述 48
2.5.1 S3C4510B简介 48
2.5.2 S3C4510B引脚分布及信号描述 51
2.5.3 S3C4510B内核概述及特殊功能寄存器 56
2.5.4 S3C4510B系统管理器 62
2.5.5 S3C4510B控制寄存器 66
第3章 ARM指令系统及程序设计基础 73
3.1 ARM指令集概述 73
3.1.1 ARM指令的分类 73
3.1.2 ARM指令的条件执行 74
3.2 ARM寻址方式 75
3.3 ARM指令集 78
3.3.1 数据处理指令 78
3.3.2 程序状态寄存器访问指令 85
3.3.3 跳转指令 85
3.3.4 加载/存储指令 87
3.3.5 协处理器指令 91
3.3.6 异常中断指令 92
3.4 Thumb指令集 93
3.4.1 Thumb指令集特点 93
3.4.2 Thumb状态切换 93
3.4.3 Thumb指令寄存器的使用 94
3.4.4 Thumb跳转指令 94
3.5 ARM程序设计基础 97
3.5.1 ARM伪指令 97
3.5.2 ARM汇编程序格式 108
3.5.3 汇编语言编程实例 111
3.6 汇编语言与C语言混合编程 113
第4章 嵌入式操作系统 121
4.1 操作系统的基本概念 121
4.1.1 操作系统的结构和功能 121
4.1.2 多进程和多线程 121
4.1.3 任务 122
4.1.4 任务切换 124
4.1.5 内核 124
4.1.6 信号量 124
4.1.7 任务调度 125
4.1.8 任务间的通信 127
4.1.9 任务间的同步 129
4.2 μC/OS-Ⅱ 130
4.2.1 μC/OS-Ⅱ简介 130
4.2.2 μC/OS-Ⅱ内核结构 133
4.2.3 μC/OS-Ⅱ在ARM上的移植 137
4.3 μCLinux 144
4.3.1 μCLinux简介 144
4.3.2 Linux内核 145
4.3.3 μCLinux内核与传统Linux的比较 147
4.3.4 μCLinux的内核结构 150
4.3.5 μCLinux在ARM上的移植 152
4.4 Windows CE 154
4.4.1 Windows CE简介 154
4.4.2 Windows CE内核结构 157
4.4.3 Windows CE的开发与应用 161
第5章 嵌入式最小系统设计 163
5.1 电源、晶振及复位电路 163
5.1.1 电源电路 163
5.1.2 晶振电路 163
5.1.3 复位电路 164
5.2 存储器接口 164
5.2.1 存储器概述 164
5.2.2 存储器接口电路 166
5.2.3 存储器应用示例 171
5.3 中断接口 176
5.3.1 中断概述 176
5.3.2 控制中断的寄存器 177
5.3.3 外部中断的应用示例 178
5.4 JTAG接口 180
5.4.1 JTAG概述 180
5.4.2 ARM的JTAG调试结构 181
5.4.3 ARM7TDMI内核的JTAG扫描链结构 182
5.4.4 JTAG接口电路 184
第6章 人机交互接口设计 185
6.1 键盘输入接口 185
6.1.1 键盘工作原理 185
6.1.2 常用键盘接口 186
6.1.3 键盘驱动程序实例 188
6.2 LCD显示接口 190
6.2.1 LCD简介 190
6.2.2 在嵌入式Linux中驱动LCD 192
6.2.3 LCD接口电路 195
6.2.4 μClinux下开发LCD应用程序 198
6.3 触摸屏交互接口 200
6.3.1 触摸屏的基本原理 201
6.3.2 触摸屏的输入系统 202
6.3.3 S3C44B0X触摸屏应用程序举例 203
第7章 通信接口设计 209
7.1 串行接口 209
7.1.1 串行通信概述 209
7.1.2 串行接口设计实例 212
7.2 I2C接口 216
7.2.1 I2C接口概述 216
7.2.2 I2C接口设计实例 218
7.3 以太网接口 223
7.3.1 以太网接口概述 224
7.3.2 以太网控制器RTL8019 225
7.3.3 以太网接口设计实例 228
7.4 USB接口 232
7.4.1 USB接口概述 232
7.4.2 USB接口设计实例 235
第8章 输入输出接口设计 242
8.1 A/D接口电路 242
8.1.1 A/D转换器概述 242
8.1.2 AD574 A/D转换接口实例 244
8.1.3 TLC2543 A/D转换接口实例 247
8.2 D/A接口电略 249
8.2.1 D/A转换器概述 249
8.2.2 AD7846 D/A转换接口实例 253
8.2.3 AD5320 D/A转换接口实例 255
8.3 开关量输入和输出通道 259
8.3.1 开关量输入输出通道的结构 260
8.3.2 开关量输入输出单元电路 260
8.3.3 开关量输入去抖动 261
第9章 嵌入式以太网智能测控系统实例 264
9.1 系统介绍 264
9.2 系统软硬件选型 264
9.2.1 微处理器选型 265
9.2.2 嵌入式操作系统选型 265
9.2.3 开发环境的搭建 265
9.3 硬件电路设计 267
9.3.1 嵌入式处理器 268
9.3.2 处理器存储编址 268
9.3.3 存储单元电路 270
9.3.4 以太网接口单元电路 273
9.3.5 AD采集单元电路 275
9.3.6 串行接口电路 277
9.3.7 JTAG调试接口电路 278
9.3.8 复位、晶振、电源单元电路 279
9.3.9 硬件线路板设计中注意的问题 280
9.4 软件设计 281
9.4.1 μCLinux嵌入式操作系统的分析 282
9.4.2 μCLinux系统的移植 283
9.4.3 驱动程序 285
9.4.4 网络通信程序的实现 287
9.4.5 嵌入式Web服务器的实现 290
9.5 程序调试 300
参考文献 303