第1章 嵌入式系统基础 1
1.1 嵌入式系统的定义 2
1.2 嵌入式系统的分类 3
1.3 嵌入式系统的特点 5
1.4 嵌入式系统的组成架构 6
1.5 32位嵌入式处理器 9
1.6 嵌入式操作系统的使用 11
1.7 嵌入式系统开发 12
1.8 嵌入式系统应用 14
1.9 嵌入式系统的发展现状及趋势 15
1.10 学习嵌入式系统的意义 18
本章小结 19
思考题 19
第2章 嵌入式系统设计开发流程 20
2.1 嵌入式系统的一般开发流程 21
2.2 需求分析阶段 21
2.3 设计阶段 22
2.3.1 硬件的选择 23
2.3.2 软件的选择 25
2.3.3 开发工具的选择 27
2.3.4 软件组件的选择 29
2.4 实现阶段 29
2.4.1 嵌入式软件开发的特点 29
2.4.2 软件开发平台 31
2.4.3 软件开发过程 32
2.5 测试阶段 33
本章小结 35
思考题 35
第3章 嵌入式实时操作系统 36
3.1 操作系统 37
3.1.1 基本概念及功能 37
3.1.2 发展史 38
3.1.3 分类 39
3.2 实时操作系统 40
3.2.1 实时操作系统的概念 40
3.2.2 RTOS的发展历史 41
3.2.3 RTOS的特点 43
3.2.4 RTOS的分类 44
3.2.5 RTOS的性能分析 47
3.3 主流的嵌入式实时操作系统 48
3.4 典型的实时操作系统 50
3.4.1 Linux 50
3.4.2 uC/OSⅡ 52
3.4.3 Windows CE 54
3.4.4 VxWorks 56
3.5 如何选择合适的嵌入式操作系统 57
3.6 嵌入式实时操作系统的分析比较 58
3.6.1 uC/OS和uCLinux操作系统的比较 58
3.6.2 其他实时操作系统的比较 60
3.7 嵌入式实时操作系统的发展前景 62
本章小结 63
思考题 63
第4章 嵌入式处理器 64
4.1 重要概念 65
4.1.1 冯·诺依曼结构和哈佛结构 65
4.1.2 流水线技术 65
4.1.3 CISC和RISC 66
4.1.4 多核技术 66
4.2 嵌入式处理器的分类 68
4.2.1 嵌入式微控制器(MCU) 68
4.2.2 嵌入式微处理器(EMPU) 69
4.2.3 嵌入式DSP(EDSP) 69
4.2.4 嵌入式片上系统(SoC) 70
4.2.5 嵌入式处理器的变迁 70
4.3 各公司嵌入式处理器 71
4.3.1 ARM处理器系列 71
4.3.2 Freescale PowerPC 74
4.3.3 i.MX处理器 74
4.3.4 Intel Atom(凌动)处理器 75
4.3.5 TI OMAP芯片 76
4.3.6 SamSung的常用芯片 77
4.3.7 Philips(NZP)的微处理器 77
4.3.8 龙芯的处理器 78
4.3.9 国芯的32位RISC CPU 79
4.4 嵌入式处理器的选择 79
4.5 32位嵌入式处理器的发展趋势 80
4.5.1 ARM技术的发展趋势 80
4.5.2 32位逐渐成为主流 82
4.5.3 32位市场格局 83
本章小结 83
思考题 83
第5章 开发调试方法 84
5.1 简单设备的调试 85
5.1.1 串行口 85
5.1.2 发光二极管 86
5.1.3 示波器 86
5.2 Monitor方式 87
5.3 BDM、JTAG、Nexus 88
5.3.1 背景调试模式(BDM) 88
5.3.2 联合测试行动组(JTAG) 89
5.3.3 Nexus 91
5.4 ROM仿真器 92
5.5 实时在线仿真系统ICE 92
5.6 使用GDB调试嵌入式系统 94
5.6.1 GDB使用前的准备工作 94
5.6.2 基本的GDB命令 96
5.6.3 GDB应用举例 97
5.7 嵌入式系统软件调试技术的发展趋势 101
本章小结 103
思考题 103
第6章 嵌入式软件开发 104
6.1 嵌入式系统软件开发 105
6.1.1 嵌入式系统软件开发的特点 105
6.1.2 嵌入式编程简介及编写稳定可靠软件的建议 107
6.1.3 嵌入式高级编程语言 108
6.1.4 嵌入式高级编程语言的发展趋势及选择 109
6.2 基于嵌入式的C语言编程 110
6.2.1 开发入门 110
6.2.2 语言风格 111
6.2.3 预处理 112
6.2.4 系统引导与main函数 112
6.2.5 变量定义 113
6.2.6 软件开发流程 115
6.2.7 软件项目组织与管理 116
6.2.8 模块化的C语言编程 116
6.2.9 汇编与C语言程序的混合编程 119
6.2.10 嵌入式C语言程序的优化 120
6.2.11 嵌入式C语言编程经验 126
本章小结 130
思考题 130
第7章 操作系统的移植 131
7.1 嵌入式应用中使用RTOS的必要性 132
7.2 操作系统移植的概念及意义 133
7.2.1 移植的概念和目的 133
7.2.2 嵌入式操作系统的移植分析 133
7.3 uC/OSⅡ的移植 134
7.3.1 uC/OSⅡ概述 135
7.3.2 移植条件 135
7.3.3 工具和运行环境 136
7.3.4 移植的过程 136
7.3.5 移植中的问题 140
7.3.6 uC/OSⅡ的不足之处 142
7.3.7 uC/OSⅡ下的驱动程序特点 142
7.4 Linux的移植 142
7.4.1 移植过程 145
7.4.2 启动代码(Bootloader)的移植 145
7.4.3 Linux内核的移植、重编译 147
7.4.4 移植Linux的关键问题 152
7.4.5 库的选择 156
本章小结 156
思考题 157
第8章 嵌入式图形用户界面 158
8.1 嵌入式GUI概述 159
8.1.1 什么是嵌入式GUI 159
8.1.2 嵌入式GUI的发展历史 159
8.1.3 嵌入式GUI的发展趋势 161
8.2 嵌入式系统GUI 162
8.2.1 GUI与嵌入式系统 162
8.2.2 嵌入式GUI的特点及地位 164
8.2.3 当今典型的嵌入式GUI系统 165
8.2.4 几种GUI系统的综合对比 171
8.2.5 MiniGUI的技术优势 172
8.2.6 MiniGUI的应用实例 173
8.2.7 为什么要自主开发新的GUI系统 175
8.3 嵌入式GUI的设计 176
8.3.1 硬件设计 177
8.3.2 驱动程序的设计 178
8.3.3 用户界面的设计 178
8.3.4 MicroWindows的体系结构 181
本章小结 185
思考题 185
第9章 SoC设计方法、平台、工具 186
9.1 SoC简介 187
9.1.1 SoC产生的背景 187
9.1.2 系统级芯片SoC 187
9.1.3 IP与IP核 189
9.1.4 SoC与IP产业 190
9.2 SoC的设计方法学 192
9.2.1 软硬件协同设计 192
9.2.2 IP核的生成和复用 194
9.2.3 超深亚微米设计 196
9.3 SoC的设计平台、工具以及基于平台的设计 198
9.3.1 SoC的设计平台和工具 198
9.3.2 基于平台的SoC设计 199
9.4 SoC的验证与测试 200
9.4.1 SoC的验证 201
9.4.2 SoC的测试 203
9.5 SoC的总线架构 206
9.5.1 CoreConnect总线 207
9.5.2 AMBA总线 207
9.5.3 Wishbone总线 209
9.5.4 Avalon总线 209
9.6 SoC发展遇到的挑战 210
9.6.1 SoC设计方法学的核心技术 210
9.6.2 设计工具带来的问题 212
9.6.3 资金问题 213
9.7 SoC的发展趋势 214
9.7.1 SoPC的出现 214
9.7.2 SoC发展的市场前景 214
本章小结 216
思考题 216
第10章 STM32系列控制器理论及实践 217
10.1 ARM Corte-M3微控制器及STM32实验箱概述 218
10.1.1 ARM Corte-M3处理器概述 218
10.1.2 STM32实验箱规格介绍 220
10.2 基于STM32的编程基础 222
10.2.1 ST公司为STM32提供的源程序 222
10.2.2 主要程序的编写方法 223
10.2.3 其他ST库程序功能介绍 226
10.2.4 编写STM32应用程序总结 227
10.3 嵌入式实验环境及入门实验 228
10.4 通用输入/输出端口实验(GPIO) 232
10.5 嵌套向量中断控制器(NVIC) 238
10.6 通用串行同步异步收发器(USART) 246
10.7 LCD液晶显示器 251
本章小结 262
思考题 263
第11章 MP4工程实践 264
11.1 MP4概述 265
11.2 流行的MP4解决方案对比 266
11.3 MP4的设计 269
11.3.1 功能要求 269
11.3.2 硬件平台 270
11.3.3 软件平台 273
11.4 MP4实现流程 274
11.4.1 程序总体框架 274
11.4.2 软件界面设计及控件的使用 275
11.4.3 视频播放功能的实现 275
11.4.4 音频播放功能的实现 281
11.4.5 录音功能的实现 282
11.4.6 其他功能的实现 286
本章小结 287
思考题 287
参考文献 288