第1章 绪论 1
1.1 嵌入式系统的基本概念 1
1.2 嵌入式系统的特征 2
1.2.1 嵌入式系统的基本特征 2
1.2.2 嵌入式系统特征的模糊化 4
1.3 嵌入式系统的组成要素 4
1.3.1 嵌入式处理器 5
1.3.2 嵌入式操作系统 12
第2章 嵌入式系统的设计方法 14
2.1 嵌入式系统设计的基本流程 14
2.1.1 需求分析 15
2.1.2 详细说明 17
2.1.3 结构设计 17
2.1.4 组件设计 18
2.1.5 系统集成 19
2.2 嵌入式系统设计的流程模型 20
2.2.1 瀑布模型 20
2.2.2 逐步求精模型 21
2.2.3 螺旋模型 23
2.2.4 分层设计模型 24
2.2.5 其他流程模型 24
第3章 嵌入式系统的基础知识 27
3.1 基本概念 27
3.1.1 存储器结构 27
3.1.2 流水线技术 29
3.1.3 CISC&RISC 31
3.1.4 大端存储和小端存储 32
3.1.5 存储器管理单元MMU 34
3.1.6 BSP 36
3.1.7 BootLoader和OSLoader 36
3.1.8 进程和线程 37
3.2 开发相关知识 37
3.2.1 ICE和ICD 37
3.2.2 其他硬件调试工具 38
3.2.3 JTAG 38
3.2.4 编译器和交叉编译器 40
3.2.5 模拟器和仿真器 41
第4章 嵌入式系统的开发模式 45
4.1 面向硬件的开发模式 45
4.1.1 适用情况 45
4.1.2 需要的工具 45
4.1.3 开发场景 45
4.2 面向操作系统的开发模式 46
4.2.1 适用情况 46
4.2.2 需要的工具 46
4.2.3 开发场景 47
4.3 开发模式的控制 47
第5章 ARM处理器概述 49
5.1 ARM处理器概述 49
5.1.1 ARM的发展历史 49
5.1.2 ARM处理器的特点 49
5.1.3 ARM微处理器系列 50
5.1.4 ARM微处理器的应用选型 55
5.2 ARM微处理器的工作状态和工作模式 56
5.2.1 工作状态 56
5.2.2 ARM的工作模式 57
5.3 ARM微处理器的寄存器 57
5.3.1 ARM微处理器的寄存器结构 57
5.3.2 Thumb状态下的寄存器组织 62
5.4 ARM处理器的存储器组织结构 63
5.4.1 ARM的数据类型 63
5.4.2 存储器的格式 64
5.5 ARM处理器的异常 65
5.5.1 ARM体系结构所支持的异常类型 65
5.5.2 异常优先级(Exception Priorities) 67
5.5.3 应用程序中的异常处理 68
5.5.4 对异常的响应 68
5.5.5 异常返回 69
5.5.6 异常进入/退出时的指令 69
第6章 ARM指令系统 71
6.1 ARM处理器的寻址方式 71
6.1.1 立即数寻址 71
6.1.2 寄存器寻址 72
6.1.3 寄存器偏移寻址 73
6.1.4 寄存器间接寻址 73
6.1.5 寄存器基址变址寻址 74
6.1.6 多寄存器寻址 74
6.1.7 相对寻址 74
6.1.8 堆栈寻址 75
6.1.9 块拷贝寻址 76
6.2 ARM指令集合 77
6.2.1 ARM指令的基本格式 77
6.2.2 ARM指令详解 80
6.3 Thumb指令集合 98
6.3.1 Thumb指令集合 98
6.3.2 Thumb指令集与ARM指令集的区别 99
6.3.3 Thumb存储器访问指令 99
6.3.4 Thumb数据处理指令 101
6.3.5 Thumb跳转指令 102
6.3.6 Thumb杂项指令 103
6.4 伪指令 103
6.4.1 符号定义伪指令 104
6.4.2 数据定义伪指令 106
6.4.3 报告伪指令 111
6.4.4 汇编控制伪指令 112
6.4.5 杂项伪指令 114
6.4.6 ARM伪指令 120
6.4.7 Thumb伪指令 123
第7章 ARM程序设计 126
7.1 ARM汇编语言程序设计 126
7.1.1 汇编语言的语句格式 126
7.1.2 汇编程序中的符号 127
7.1.3 汇编语言程序中的表达式和运算符 129
7.1.4 汇编语言的程序结构 132
7.1.5 汇编语言程序设计举例 133
7.2 汇编语言与C/C++的混合编程 139
7.2.1 ATPCS规则 139
7.2.2 内嵌汇编 141
7.2.3 C程序与汇编程序相互调用 146
7.3 ARM集成开发环境ADS的使用 148
7.3.1 ADS简介 148
7.3.2 ADS快速使用教程 149
7.3.3 ADS具体介绍 155
第8章 嵌入式操作系统 161
8.1 嵌入式操作系统的发展 161
8.2 软件编程模式 162
8.2.1 无操作系统的软件编程模式 162
8.2.2 有操作系统的编程模式 164
8.3 嵌入式操作系统的特点 165
8.4 实时操作系统 166
8.4.1 实时和分时操作系统 166
8.4.2 实时操作系统的特点 167
第9章 嵌入式Linux操作系统概述 169
9.1 Linux的诞生 169
9.2 Linux相关的概念 170
9.2.1 Minix 170
9.2.2 Unix 170
9.2.3 共享软件(Shareware) 170
9.2.4 自由软件(Freeware或FreeSoftware) 170
9.2.5 免费软件(Freeware) 170
9.2.6 通用软件许可证(GPL,General Public License) 171
9.2.7 GNU 171
9.2.8 LGPL(Lesser GPL) 171
9.2.9 BSD 172
9.3 Linux操作系统的组成及其版本 172
9.3.1 Linux操作系统的组成 172
9.3.2 Linux的版本 173
9.4 Linux的特点 173
9.4.1 Linux的优点和不足 173
9.4.2 Linux下的硬盘分区与文件系统 176
9.5 嵌入式Linux的概念 178
9.6 嵌入式Linux操作系统介绍 178
9.6.1 uClinux 178
9.6.2 RTLinux 180
9.6.3 DSPLinux 181
第10章 嵌入式Linux的开发 183
10.1 嵌入式Linux开发步骤 183
10.2 开发环境的构建 184
10.2.1 安装Linux操作系统 184
10.2.2 配置开发工具 189
10.3 BootLoader的开发 192
10.3.1 BootLoader的基本知识 192
10.3.2 BootLoader的开发过程 193
10.3.3 BootLoader的移植 196
10.4 Linux系统的构建 197
10.4.1 Linux内核的构建 197
10.4.2 Linux根文件系统的构建 207
10.4.3 针对嵌入式应用的Linux系统开发 209
10.5 Linux系统下设备驱动程序的开发 211
10.5.1 Linux设备驱动程序的概念 212
10.5.2 设备的类型 213
10.5.3 特殊设备的使用 213
10.5.4 设备文件的创建 214
10.5.5 设备驱动程序的开发 214
10.5.6 设备驱动程序中的问题 218
10.6 Linux应用程序开发 219
10.6.1 几种流行的GUI 219
10.6.2 Qt/Embedded编程 222
10.6.3 Qt/Embedded编程示例 223
10.7 Linux系统的启动流程 227
10.7.1 内核的引导 228
10.7.2 运行init 229
10.7.3 系统初始化 231
10.7.4 启动对应运行级别的守护进程 231
10.7.5 建立终端 232
10.7.6 登录系统 232
10.8 常用的Linux工具和命令 233
10.8.1 vi的使用 233
10.8.2 GCC的使用 236
10.8.3 gdb的使用 237
10.8.4 ncftp工具的使用 240
10.8.5 mount和unmount指令 240
10.8.6 基本命令 242
10.8.7 Linux下软件安装指令 247
第11章 Linux系统构建的实战练习 251
11.1 使用现成工具构建U盘Linux 251
11.1.1 使用pup2 usb进行构建 251
11.1.2 使用Ultra ISO进行构建 252
11.2 从零开始构建自己的U盘Linux 254
11.2.1 前期准备 254
11.2.2 编译Linux内核 256
11.2.3 在U盘上建立根文件系统 257
11.2.4 安装grub到U盘中 260
11.2.5 使用initrd内核作为根文件系统 261
第12章 Android的开发与应用 264
12.1 Android操作系统简介 264
12.1.1 Android系统构架 264
12.1.2 Android系统开发环境的构建 267
12.1.3 Android应用程序开发实例 269
第13章 iPhone OS应用程序的开发 277
13.1 苹果操作系统简介 277
13.2 iPhone开发环境的构建 278
13.2.1 Mac OS虚拟机的安装 279
13.2.2 XCode和iPhone SDK的介绍与安装 286
13.3 iPhone应用程序的开发示例 287
第14章 Windows CE操作系统 292
14.1 微软的嵌入式产品简介 292
14.1.1 Windows Embedded Compact平台 292
14.1.2 Windows Embedded Standard平台 293
14.1.3 Windows Embedded Enterprise平台 293
14.1.4 Windows Embedded Server平台 293
14.1.5 Windows Phone 8平台 293
14.2 Windows CE简介 294
14.3 Windows CE的中断处理机制 297
14.3.1 中断体系结构 297
14.3.2 中断延迟 298
14.4 Windows CE的进程和线程 299
14.4.1 CE的进程 299
14.4.2 CE的线程 300
14.4.3 进程之间的通信 301
14.5 Windows CE的内存管理 301
14.5.1 内存结构 301
14.5.2 进程地址空间结构 302
14.5.3 堆和栈的内存分配 304
14.5.4 内存映射文件 304
14.6 Windows CE的编程模式 305
14.6.1 基于Win32的程序开发 305
14.6.2 基于MFC的程序开发 305
14.6.3 基于Microsoft.NET Framework精简版的程序开发 306
14.7 Windows CE 5.0的开发 307
14.7.1 开发层面 307
14.7.2 开发实例 308
14.7.3 CE系统的引导方式及其BootLoader 323
14.8 Windows Embedded Compact 7的开发 326
14.8.1 Windows Embedded Compact 7开发环境的构建 326
14.8.2 Windows Embedded Compact 7应用程序的开发 330
第15章 Windows Phone的开发 334
15.1 Windows Phone 7的开发 334
15.1.1 Windows Phone 7简介 334
15.1.2 Windows Phone 7开发环境的搭建 334
15.1.3 Windows Phone 7简单例程的开发 335
15.2 Windows Phone 8的开发 339
15.2.1 Windows Phone 8简介 339
15.2.2 Windows Phone 8的开发环境的构建 340
15.2.3 Windows Phone 8应用程序开发 341
参考文献 344