第1章 嵌入式系统概论 1
1.1 嵌入式系统概述 1
1.2 嵌入式系统发展简史 2
1.2.1 微处理器的发展 2
1.2.2 嵌入式系统的发展 3
1.3 嵌入式系统的特点 3
1.4 嵌入式系统的基本分类 4
1.5 嵌入式系统的基本组成 5
1.6 嵌入式处理器 7
1.7 嵌入式系统的发展趋势 11
1.7.1 嵌入式系统的现状及主要制约因素 11
1.7.2 嵌入式系统的发展方向 12
1.8 嵌入式系统的相关研究领域 12
1.8.1 嵌入式系统的主干学科领域 12
1.8.2 与嵌入式系统关系密切的技术领域 12
1.9 本章小结 14
1.10 习题和思考题 14
第2章 可编程逻辑器件与IP核 16
2.1 EDA与可编程逻辑器件 16
2.1.1 EDA 16
2.1.2 硬件描述语言 18
2.1.3 可编程逻辑器件 19
2.1.4 主流的CPLD/FPGA开发工具 22
2.1.5 可编程逻辑器件CPLD/FPGA的设计流程 23
2.2 FPGA应用举例 25
2.2.1 FPGA应用举例一:16位m序列伪随机信号发生器 25
2.2.2 FPGA应用举例二:扩展的凯撒密码加密器 29
2.3 系统级芯片 33
2.3.1 硅知识产权和知识产权核 33
2.3.2 系统芯片 33
2.3.3 IP核标准化基础 34
2.3.4 IP核形态与优选原则 37
2.4 IP核互连与片上总线 38
2.4.1 IP核互连的拓扑结构 38
2.4.2 片上总线 39
2.4.3 片上总线CoreConnect 40
2.4.4 片上总线Avalon 40
2.4.5 五种片上总线的性能比较 41
2.5 低功耗设计的基本原理 42
2.5.1 硬件低功耗设计 42
2.5.2 软件低功耗设计 43
2.6 本章小结 44
2.7 习题和思考题 44
第3章 嵌入式微处理器技术基础 46
3.1 嵌入式微处理器的典型技术 46
3.1.1 I/O端口统一编址与特殊功能寄存器 46
3.1.2 哈佛结构 48
3.1.3 桶型移位器 49
3.1.4 正交指令集 51
3.1.5 双密度指令集 52
3.1.6 看门狗定时器 52
3.1.7 边界对准与端序 54
3.1.8 地址重映射 55
3.1.9 FIFO缓冲寄存器 56
3.1.10 主存控制器 57
3.2 主流嵌入式微处理器 58
3.2.1 ARM系列嵌入式微处理器 58
3.2.2 MIPS RISC嵌入式微处理器 61
3.2.3 PowerPC系列嵌入式微处理器 62
3.3 嵌入式系统调试技术 64
3.3.1 指令集模拟器 64
3.3.2 ROM仿真器 66
3.3.3 实时在线仿真 66
3.3.4 片上调试技术与背景调试模式 67
3.3.5 基于Angel的调试方案 68
3.3.6 边界扫描测试技术和JTAG接口 70
3.3.7 Nexus调试标准 77
3.3.8 半主机调试方式 78
3.4 本章小结 79
3.5 习题和思考题 79
第4章 ARM处理器的体系结构和指令集 81
4.1 ARM体系结构的版本及系列 81
4.1.1 ARM处理器的体系结构 81
4.1.2 ARM体系结构版本的变种 82
4.1.3 ARM体系结构版本的命名规则 83
4.1.4 ARM处理器核系列 83
4.2 ARM处理器的结构 85
4.2.1 ARM处理器的RSIC特征 86
4.2.2 流水线 86
4.2.3 ARM的工作模式和工作状态 90
4.2.4 ARM寄存器的组织 92
4.3 ARM存储器的组织 95
4.3.1 ARM存储器的数据类型和存储格式 95
4.3.2 ARM的存储体系 96
4.3.3 片内存储器的用法 97
4.3.4 协处理器CP15 97
4.3.5 存储管理单元 98
4.3.6 保护单元 105
4.3.7 ARM处理器的Cache 105
4.3.8 快速上下文切换扩展 107
4.3.9 写缓存区 109
4.4 ARM处理器的片上总线标准AMBA 109
4.4.1 AMBA 2.0片上总线的特点 110
4.4.2 AMBA 2.0片上总线的主控单元和从动单元 110
4.4.3 AMBA 2.0总线的时序 111
4.4.4 AMBA 3.0——AXI协议 111
4.5 ARM处理器核的典型范例:ARM7TDMI 112
4.5.1 复位 112
4.5.2 总线周期 113
4.5.3 ARM7TDMI处理器的总线优先级 115
4.6 ARM处理器的寻址方式和指令系统 115
4.6.1 ARM处理器指令系统的主要特征 115
4.6.2 ARM指令集的编码格式和语法 116
4.6.3 ARM处理器的寻址方式 119
4.6.4 ARM指令的分类说明 123
4.7 ARM的异常中断处理 132
4.7.1 ARM的异常中断响应过程 132
4.7.2 从异常中断处理程序返回 133
4.8 本章小结 135
4.9 习题与思考题 136
第5章 ARM汇编语言程序设计 138
5.1 ARM汇编语言程序的格式 138
5.1.1 预定义寄存器名及内部变量名 138
5.1.2 ARM汇编语言程序的语句格式 139
5.1.3 ARM汇编语言程序编写规范 141
5.1.4 ARM汇编语言指示符 142
5.1.5 ARM过程调用标准ATPCS和AAPCS 149
5.2 典型ARM汇编语言程序举例 151
5.2.1 入门的范例 151
5.2.2 基本结构 153
5.2.3 典型的ARM汇编程序范例 157
5.3 ARM汇编、C和C++混合编程 163
5.3.1 内嵌汇编 163
5.3.2 C/C++与汇编程序的相互调用 165
5.3.3 软中断和半主机方式ARM汇编程序设计 169
5.3.4 5级流水线的互锁问题 173
5.4 GNU格式的ARM汇编语言程序设计 174
5.4.1 GNU格式的ARM汇编语言程序的设计要点 174
5.4.2 GNU格式ARM汇编语言程序举例 176
5.5 本章小结 177
5.6 习题与思考题 177
第6章 ARM开发工具 180
6.1 ARM开发工具概述 180
6.2 ARM映像文件格式 180
6.2.1 ELF文件格式 181
6.2.2 ARM映像文件的组成 183
6.3 ADS的组成与使用 191
6.3.1 命令行开发工具 191
6.3.2 GUI开发工具 196
6.3.3 ADS实用工具 198
6.4 用ADS生成应用程序 199
6.4.1 生成简单应用程序hello 199
6.4.2 生成函数库mathlib 202
6.4.3 生成一个在目标板上运行的定时器程序 203
6.5 RVDS 206
6.5.1 RVDS的组件 206
6.5.2 RVDS使用概览 207
6.6 GNU交叉工具链 208
6.7 本章小结 209
6.8 习题与思考题 209
第7章 中断、DMA和时间控制 211
7.1 嵌入式中断控制器 211
7.1.1 嵌入式中断控制器工作原理 211
7.1.2 向量中断与非向量中断的入口程序编程示例 217
7.1.3 嵌入式中断应用程序举例 221
7.2 嵌入式DMA控制器 225
7.2.1 S3C44B0X的DMA控制器 226
7.2.2 S3C44B0X的DMAC相关控制寄存器 228
7.2.3 S3C44B0X的DMA应用程序举例 228
7.3 时钟电源管理器、实时时钟和脉宽调制定时器 231
7.3.1 S3C44B0X的时钟电源管理器 231
7.3.2 S3C2410X的实时时钟 233
7.3.3 实时时钟应用程序概要设计案例 234
7.3.4 S3C44B0X的脉宽调制定时器 238
7.4 本章小结 239
7.5 习题与思考题 239
第8章 嵌入式存储器和接口技术 241
8.1 嵌入式系统常用的半导体存储器 241
8.1.1 闪速存储器 241
8.1.2 静态存储器和同步动态存储器 252
8.2 常用的嵌入式系统总线 259
8.2.1 I2C总线 259
8.2.2 SPI总线接口 262
8.2.3 CAN总线 263
8.2.4 工业以太网 267
8.2.5 PC-104总线 269
8.3 常用的嵌入式系统接口 269
8.3.1 UART接口 270
8.3.2 通用输入通出接口 275
8.3.3 USB 277
8.3.4 以太网接口 281
8.4 嵌入式系统常用的外部设备 290
8.4.1 键盘 291
8.4.2 液晶显示器 293
8.4.3 触摸屏 297
8.4.4 无线接入技术 301
8.5 本章小结 308
8.6 习题和思考题 308
第9章 嵌入式操作系统概论 310
9.1 实时系统 310
9.1.1 什么是实时系统 310
9.1.2 实时系统的属性和指标 311
9.1.3 实时系统的分类 312
9.2 嵌入式操作系统的特点和分类 313
9.2.1 嵌入式操作系统的特点 313
9.2.2 嵌入式操作系统分类 320
9.3 RTOS常用的调度算法 322
9.3.1 基于优先级的调度算法 322
9.3.2 时钟驱动调度算法 327
9.3.3 基于比例共享的调度算法 327
9.3.4 非周期性任务的调度 329
9.3.5 临界资源和代码临界区 330
9.3.6 优先级反转和对策 330
9.4 启动程序Bootloader 332
9.4.1 嵌入式系统的启动方式 333
9.4.2 Bootloader的程序结构与调试 336
9.4.3 Bootloader人机交互接口设计 339
9.4.4 常用Bootloader介绍 340
9.5 嵌入式操作系统μC/OS-II 341
9.5.1 μC/OS-II的主要特点 341
9.5.2 μC/OS-II的层次 342
9.5.3 μC/OS-II的代码结构 342
9.5.4 μC/OS-II的内核 346
9.5.5 μC/OS-II的任务调度 350
9.5.6 μC/OS-II的任务切换 354
9.5.7 μC/OS-II的中断处理 355
9.5.8 μC/OS-II的时间管理 356
9.5.9 μC/OS-II的任务间通信 358
9.5.10 μC/OS-II的存储管理 365
9.5.11 μC/OS-II的移植 366
9.6 本章小结 374
9.7 习题和思考题 374
附录 术语和缩略语表 376
参考文献 381