第1部分 嵌入式系统 2
第1章 嵌入式系统概述 2
1.1 嵌入式系统相关概念 2
1.2 嵌入式系统的特点 3
1.3 嵌入式系统的体系结构 4
1.3.1 硬件平台 5
1.3.2 硬件抽象层 5
1.3.3 实时操作系统 6
1.3.4 实时应用程序 7
1.4 嵌入式系统的分类 7
1.5 嵌入式系统的应用 8
本章小结 10
思考与练习题 11
第2章 嵌入式系统设计基本概念 12
2.1 嵌入式硬件系统 12
2.1.1 嵌入式处理器 13
2.1.2 存储器 16
2.1.3 外围设备 21
2.2 嵌入式操作系统 26
2.2.1 嵌入式操作系统的发展 27
2.2.2 嵌入式实时操作系统的分类 27
2.2.3 嵌入式实时操作系统的可裁剪性及其实现 28
2.2.4 常用的嵌入式操作系统 29
2.3 嵌入式系统的基本设计过程 32
2.3.1 需求分析与规格说明 32
2.3.2 体系结构设计 36
2.3.3 设计硬件构件和软件构件 38
2.3.4 系统调试与集成 39
2.3.5 系统测试 39
2.4 本教程选择的软硬件平台 39
2.4.1 教学硬件平台——ARM 39
2.4.2 教学软件平台——Linux 39
本章小结 40
思考与练习题 40
第2部分 嵌入式系统硬件开发技术 43
第3章 ARM体系结构与编程模式 43
3.1 ARM微处理器概述 43
3.1.1 ARM微处理器的特点 43
3.1.2 ARM微处理器的分类 44
3.1.3 ARM体系的变种 48
3.1.4 ARM的命名规则 49
3.2 ARM体系结构 49
3.2.1 ARM微处理器结构 49
3.2.2 ARM流水线 52
3.2.3 工作状态和运行模式 53
3.2.4 ARM微处理器的寄存器组织 54
3.2.5 ARM微处理器的存储器格式 59
3.3 ARM的异常处理 60
3.3.1 ARM体系结构支持的异常类型 60
3.3.2 各类异常的具体描述 61
3.3.3 对异常的响应 62
3.3.4 从异常返回 63
3.3.5 异常的进入/退出 64
3.4 ARM编程方法 65
3.4.1 ARM指令概述 65
3.4.2 ARM指令寻址方式 66
3.4.3 ARM汇编程序设计 70
3.4.4 ARM混合编程 70
本章小结 72
思考与练习题 73
第4章 ARM指令系统 74
4.1 ARM指令集 74
4.1.1 数据处理指令 74
4.1.2 跳转指令 79
4.1.3 Load/Store指令 81
4.1.4 程序状态寄存器指令 85
4.1.5 协处理器指令 85
4.1.6 异常中断指令 87
4.1.7 移位指令(操作) 88
4.2 Thumb指令集 89
4.2.1 Thumb指令集与ARM指令集的区别 89
4.2.2 Thumb数据处理指令 89
4.2.3 Thumb存储器访问指令 94
4.2.4 Thumb跳转指令 97
4.2.5 Thumb软件中断指令 97
4.2.6 Thumb伪指令 98
本章小结 99
思考与练习题 99
第3部分 嵌入式系统软件程序设计 101
第5章 嵌入式操作系统 101
5.1 嵌入式操作系统概述 101
5.2 嵌入式操作系统的进程管理 102
5.2.1 进程的概念 102
5.2.2 上下文切换 103
5.2.3 进程状态 105
5.2.4 进程调度 106
5.2.5 进程间通信机制 111
5.3 嵌入式操作系统的中断处理 116
5.3.1 中断向量表 116
5.3.2 中断的种类 116
5.3.3 实时内核的中断管理 118
5.3.4 中断服务程序 119
5.4 嵌入式操作系统的内存管理 119
5.4.1 内存管理的主要功能 119
5.4.2 内存保护 120
5.4.3 虚拟内存 122
5.4.4 内存管理方案 122
5.5 常用嵌入式操作系统 123
5.5.1 嵌入式Linux 123
5.5.2 Andriod 132
本章小结 139
思考与练习题 140
第6章 嵌入式Linux开发环境及其在ARM上的移植 141
6.1 嵌入式Linux开发环境 142
6.1.1 交叉编译工具介绍 143
6.1.2 交叉编译环境的建立 156
6.2 嵌入式Linux在ARM平台上的移植 161
6.2.1 Linux内核源代码的组织 161
6.2.2 嵌入式Linux内核裁剪方法 163
6.2.3 嵌入式Linux内核定制过程 166
6.2.4 内核编译及装载 169
6.2.5 文件系统及其实现 170
本章小结 173
思考与练习题 174
第7章 设备驱动程序 175
7.1 概述 175
7.1.1 设备驱动原理 176
7.1.2 模块化编程 177
7.1.3 设备类型 178
7.1.4 设备号 180
7.2 设备文件接口 180
7.2.1 用户访问接口 180
7.2.2 一些重要数据结构 181
7.2.3 I/O操作 185
7.3 中断处理 187
7.3.1 注册中断处理程序 187
7.3.2 中断处理程序实现 189
7.4 应用实例 190
7.4.1 USB设备驱动程序实现 190
7.4.2 网络设备——CS8900A芯片驱动程序 197
7.4.3 LCD设备驱动开发 204
本章小结 209
思考与练习题 210
第8章 用户图形接口GUI 211
8.1 嵌入式系统中的GUI 211
8.1.1 嵌入式GUI的发展需求 212
8.1.2 嵌入式GUI的功能特点 212
8.1.3 目前流行的嵌入式GUI系统 213
8.2 Qt/Embedded基础 217
8.2.1 Qt/Embedded简介 217
8.2.2 Qt/Embedded特点 218
8.2.3 Qt/Embedded体系架构 219
8.3 Qt/Embedded开发环境 224
8.3.1 Qt/E 2.x系列 225
8.3.2 Qt/E 3.x系列 227
8.4 Qt/Embedded开发实例 228
8.4.1 Qt/Embedded基本开发流程 228
8.4.2 触摸屏驱动的设计 231
8.5 智能化用户界面 235
8.5.1 Agent技术 236
8.5.2 Agent技术与用户界面的结合 238
本章小结 239
思考与练习题 240
第4部分 嵌入式系统开发应用实例 242
第9章 基于OMAP5912的开发应用实例 242
9.1 MAP5912的结构和特点 242
9.1.1 ARM926EJ-S内核 243
9.1.2 TMS320C55x内核 243
9.1.3 存储器管理 243
9.1.4 直接存储器访问控制器(DMA) 244
9.1.5 时钟和电源管理 245
9.1.6 外围控制模块 245
9.2 基于OMAP5912的硬件平台设计 246
9.2.1 电源管理模块 247
9.2.2 存储模块 248
9.2.3 音频处理模块 249
9.2.4 外围接口 250
9.3 基于OMAP5912的软件系统设计 251
9.3.1 OMAP5912系统的软件架构 251
9.3.2 嵌入式Linux系统的启动流程 252
9.3.3 Bootloader及其移植 252
9.3.4 MontaVista Linux内核的移植 259
9.3.5 文件系统的移植 262
9.3.6 设备驱动程序 263
本章小结 264
思考与练习题 264
第10章 基于S3C6410的开发应用实例 265
10.1 S3C6410的结构和特点 265
10.1.1 ARM 1176JZF-S内核 266
10.1.2 多媒体协处理器 266
10.1.3 存储器子系统 267
10.1.4 显示控制器 268
10.1.5 系统外设 268
10.1.6 接口 268
10.2 基于S3C6410的视频监控系统设计 269
10.2.1 系统的硬件设计 269
10.2.2 系统的软件设计 270
本章小结 273
思考与练习题 273
缩略语 274
参考文献 277