第1章 嵌入式系统概述 1
1.1嵌入式系统诞生的背景 1
1.2嵌入式系统简介 2
1.2.1嵌入式系统的定义 2
1.2.2嵌入式系统的结构 4
1.2.3嵌入式系统的特点 4
1.2.4嵌入式系统的应用领域 7
1.3嵌入式系统的发展 7
1.3.1嵌入式系统过去的发展 7
1.3.2嵌入式系统的现状 8
1.3.3嵌入式系统的发展趋势 9
第2章 嵌入式系统的硬件平台ARM 10
2.1 ARM7内核基本结构 10
2.2 ARM9处理器 11
2.2.1与ARM7处理器的比较 11
2.2.2 ARM9TDMI内核 12
2.2.3基于ARM9处理器的三星S3C2410X处理器详解 12
2.2.4运行模式 23
2.3 ARM总线结构 24
2.4 ARM寄存器 24
2.4.1通用寄存器 25
2.4.2程序状态寄存器 26
2.4.3 ARM状态寄存器集与Thumb状态寄存器集 28
2.5存储设备 29
2.5.1存储系统结构 29
2.5.2存储空间管理单元MMU 31
2.5.3随机存储器 31
2.5.4只读存储器 34
2.6 ARM寻址方式 34
2.7 IO设备 36
2.7.1键盘 36
2.7.2 LED 37
2.7.3显示器 37
2.7.4 A/D及D/A转换器 38
2.7.5触摸屏 38
2.7.6计数器 39
2.8接口设备 40
2.8.1内存接口 40
2.8.2 I/O设备接口 40
2.9 ARM中断与异常 41
2.9.1中断 41
2.9.2异常 43
第3章ARM指令集 47
3.1计算机体系结构简介 47
3.2 ARM指令集概述 48
3.2.1 ARM指令的分类 49
3.2.2指令可选后缀 52
3.3指令集 54
3.3.1数据处理指令 54
3.3.2加载/存储指令 63
3.3.3寄存器访问指令 65
3.3.4跳转/中断指令 67
3.3.5协处理器指令 69
3.3.6伪指令 71
3.3.7浮点指令集 73
3.4 ARM指令应用实例——FIR滤波器 77
第4章 基本编程概念及编译技巧 79
4.1用高级语言C进行编码 79
汇编语言和高级语言的优点比较 79
4.2程序元素 80
4.2.1头文件、源文件及预处理指令 80
4.2.2宏与函数 82
4.2.3数据类型、数据结构的分类、修饰符、语句、循环和指针 83
4.2.4队列 92
4.2.5堆栈 95
4.2.6链表 97
4.3基础编译技术 105
4.3.1语句翻译 106
4.3.2数据结构 109
4.3.3表达式的简化 109
4.3.4消除死代码 110
4.3.5寄存器的分配 110
4.3.6调度 113
4.3.7指令的选择 114
4.3.8汇编与连接 115
第5章 程序建模 120
5.1程序设计范型 120
5.1.1状态机范型 121
5.1.2数据流范型 126
5.1.3 Petri网范型 127
5.2软件分析过程中的建模 132
5.2.1数据流图 133
5.2.2控制数据流图 134
5.3多处理器系统的建模 135
5.3.1同步数据流图模型 137
5.3.2同构的同步数据流图模型 138
5.3.3无环优先扩展图模型 138
5.3.4定时的Petri网和扩展预测/转换网模型 139
5.3.5多线程图系统模型 141
5.3.6图和Petri网在多处理器系统中的应用 142
5.4统一建模语言 146
第6章 程序设计和分析 152
6.1程序分析 152
6.1.1执行时间的分析与优化 152
6.1.2功耗的分析与优化 158
6.1.3程序大小的分析与优化 160
6.2程序的分析、设计与实现 162
6.2.1程序分析 162
6.2.2程序设计 164
6.2.3程序实现 166
6.3程序的验证及测试 166
6.3.1白盒测试 167
6.3.2黑盒测试 171
6.3.3功能评估测试 172
6.3.4性能测试 173
6.4实时程序设计问题 173
6.4.1在需求和规范的分析中存在的问题 173
6.4.2设计和实现中存在的问题 174
6.4.3系统集成中存在的问题 174
6.4.4测试中存在的问题 174
6.5软件维护 175
第7章 嵌入式系统开发案例 177
7.1嵌入式系统开发的一般过程 177
7.1.1需求分析 177
7.1.2详细设计 181
7.1.3实现阶段 184
7.1.4测试阶段 188
7.2嵌入式系统开发案例 191
7.2.1基于ARM和μCOS的嵌入式Web服务器设计 191
7.2.2嵌入式系统PDA智能手机设计方案 207
7.3嵌入式系统应用前景展望 212
7.3.1工业控制 212
7.3.2交通管理 213
7.3.3信息家电 213
7.3.4电子商务 214
7.3.5医疗设备 214
7.3.6机器人 214
第8章 嵌入式系统的实验设计部分 215
8.1背景知识 215
8.1.1嵌入式系统概念简介 216
8.1.2ARM简介 217
8.1.3Linux操作系统 219
8.2实验环境 221
8.2.1实验开发板 221
8.2.2 ARM开发工具 222
8.2.3 FL2440开发板基本设置 224
8.2.4小结 226
8.3实验一——熟悉ARM嵌入式平台 226
8.3.1实验概括 226
8.3.2实验目的 227
8.3.3实验内容 227
8.3.4小结 235
8.4实验二——外设与接口 235
8.4.1实验概括 235
8.4.2实验目的 235
8.4.3实验内容 236
8.4.4小结 242
8.5实验三——Linux操作系统 242
8.5.1实验概括 242
8.5.2实验目的 242
8.5.3嵌入式Linux 242
8.5.4 ARM系列与Linux 243
8.5.5 Linux系统安装 244
8.5.6交叉编译环境 246
8.5.7 Linux的常用指令 247
8.5.8连接方式 248
8.5.9 Minicom的使用 250
8.5.10 Bootloader 250
8.5.11 Linux内核移植 251
8.5.12 Linux下的一个A/D转换实验 251
8.5.13 Linux系统中的基本应用 254
8.5.14小结 254
8.6进阶实验 255
8.6.1实验概括 255
8.6.2交叉编译十网络服务器实验 255
8.6.3 Nand Flash应用实验 258
8.6.4 makefile实验 263
8.6.5实验小结 265
8.7嵌入式Linux网络编程 265
8.7.1基础知识 265
8.7.2程序实例 266
8.7.3网络地址的表示 267
8.7.4建立socket 268
8.7.5绑定本地地址 268
8.7.6 listen函数 268
8.7.7 accept函数 269
8.7.8数据通信 269
8.7.9小结 269
8.8总结 270
参考文献 271