第1章 嵌入式系统导论 1
1.1 嵌入式系统概述 1
1.1.1 嵌入式系统的发展历程 2
1.1.2 嵌入式系统的特点 6
1.1.3 嵌入式系统的分类 7
1.2 嵌入式系统的应用领域 10
1.3 嵌入式系统的发展趋势 12
思考题1 13
第2章 嵌入式硬件系统 15
2.1 嵌入式硬件系统的基本组成 15
2.2 嵌入式微处理器 17
2.2.1 嵌入式微处理器的特点 18
2.2.2 主流的嵌入式微处理器 21
2.2.3 ARM指令集体系架构 28
2.2.4 典型ARM CPU Core体系结构 31
2.3 ARM编程模型 33
2.3.1 基于ARMv4的编程模型 33
2.3.2 ARMv7-A&R的应用级编程模型 49
2.3.3 ARMv7-A&R系统级编程模型 55
2.3.4 处理器存储器子系统 60
2.3.5 存储器数据模式及I/O编址 69
2.4 嵌入式系统总线 71
2.4.1 AMBA总线 71
2.4.2 PCI/CPCI总线 75
2.4.3 USB总线 77
2.5 嵌入式系统存储器 80
2.5.1 嵌入式系统的存储结构 80
2.5.2 NandFlash 81
思考题2 83
第3章 ARM汇编程序设计 85
3.1 ARM嵌入式微处理器指令集 85
3.1.1 ARM指令集 85
3.1.2 ARM v4T架构指令体系 88
3.1.3 ARM v5TE架构指令体系 95
3.1.4 ARMv6架构指令体系 97
3.1.5 ARMv7-A&R架构指令体系 101
3.1.6 Thumb和Thumb-2指令集 108
3.2 ARM汇编 114
3.2.1 汇编、汇编器和汇编语言程序 114
3.2.2 ARM伪指令 115
3.2.3 ARM宏与宏指令 122
3.2.4 汇编语句格式 124
3.2.5 ARM汇编语言中的表达式及运算符 124
3.3 ARM程序设计 127
3.3.1 ARM工程 127
3.3.2 ARM汇编语言程序设计 128
3.3.3 ARM程序的框架结构 134
3.3.4 C语言程序与汇编程序之间的函数调用 136
3.3.5 ARM汇编与C语言的混合程序设计 142
思考题3 146
第4章 嵌入式软件系统 149
4.1 嵌入式软件系统分类和体系结构 149
4.1.1 嵌入式软件分类 150
4.1.2 嵌入式软件体系结构 151
4.1.3 嵌入式软件运行流程 152
4.2 嵌入式操作系统 153
4.2.1 体系结构 153
4.2.2 功能及特点 155
4.2.3 发展趋势 158
4.3 嵌入式软件开发工具 159
4.3.1 嵌入式软件开发工具的分类 159
4.3.2 嵌入式软件的交叉开发环境 161
4.3.3 嵌入式软件实现阶段的开发过程 161
4.3.4 嵌入式软件开发工具的发展趋势 168
思考题4 169
第5章 任务管理与调度 170
5.1 概述 170
5.2 任务 172
5.3 任务管理 174
5.3.1 任务状态与变迁 174
5.3.2 任务控制块 175
5.3.3 任务切换 175
5.3.4 任务队列 177
5.3.5 任务管理机制 181
5.4 任务调度 184
5.4.1 任务调度概述 184
5.4.2 基于优先级的可抢占调度 186
5.4.3 时间片轮转调度 186
5.4.4 静态调度 187
5.4.5 动态调度 190
5.4.6 静态调度与动态调度之间的比较 191
5.5 优先级反转 191
5.5.1 优先级反转概述 191
5.5.2 优先级继承协议 192
5.5.3 优先级天花板协议 193
5.6 基于多核的任务调度 199
5.6.1 局部调度 200
5.6.2 全局调度 201
5.6.3 混合调度 205
5.7 与任务有关的性能指标 206
5.7.1 任务上下文切换时间 206
5.7.2 任务响应时间 207
思考题5 208
第6章 同步、互斥和通信 210
6.1 概述 210
6.2 信号量 212
6.2.1 信号量的种类及用途 212
6.2.2 互斥信号量 212
6.2.3 二值信号量 215
6.2.4 计数信号量 215
6.2.5 信号量机制的主要数据结构 218
6.2.6 典型的信号量操作 219
6.2.7 与信号量有关的资源配置问题 221
6.3 邮箱和消息队列 221
6.3.1 嵌入式系统的通信 221
6.3.2 消息队列机制的主要数据结构 223
6.3.3 典型的消息队列操作 226
6.3.4 与消息队列有关的资源配置问题 228
6.3.5 消息队列的其他典型使用 228
6.4 事件 229
6.4.1 事件机制 229
6.4.2 事件机制的主要数据结构 230
6.4.3 典型的事件操作 232
6.4.4 与事件机制有关的资源配置问题 233
6.4.5 事件机制的典型应用 233
6.5 异步信号 234
6.5.1 异步信号机制 234
6.5.2 异步信号机制与中断机制的比较 235
6.5.3 异步信号机制与事件机制的比较 236
6.5.4 异步信号机制的主要数据结构 236
6.5.5 典型的异步信号操作 237
6.6 多核系统中的同步、互斥与通信 238
6.6.1 多核系统的硬件基础 238
6.6.2 多核系统的互斥机制 239
6.6.3 核间通信 245
6.6.4 核间同步 250
思考题6 252
第7章 中断、时间、内存和I/O管理 254
7.1 中断管理 254
7.1.1 实时内核的中断管理 254
7.1.2 中断的分类 255
7.1.3 中断处理的过程 256
7.1.4 实时内核的中断管理 258
7.1.5 用户中断服务程序 260
7.1.6 中断相关的性能指标 262
7.2 时间管理 266
7.2.1 硬件时钟设备 266
7.2.2 实时内核的时间管理 267
7.3 内存管理 270
7.3.1 内存管理概念 270
7.3.2 内存管理机制 271
7.4 I/O管理 278
7.4.1 I/O管理的功能 278
7.4.2 I/O系统的实现考虑 279
思考题7 282
第8章 虚拟化技术 283
8.1 概述 283
8.2 虚拟化技术分类 284
8.2.1 进程级虚拟机 284
8.2.2 系统级虚拟机 285
8.3 微内核虚拟化技术 290
8.3.1 微内核的系统特征 291
8.3.2 微内核技术的起源和发展 291
8.3.3 L4微内核技术 293
8.3.4 微内核虚拟化架构 303
8.4 虚拟化产品实例 303
思考题8 305
参考文献 306