第1章 微型计算机概论 1
1.1 微型计算机概述 1
1.1.1 微型计算机系统的组成 1
1.1.2 微处理器的发展 2
1.1.3 CISC与RISC 7
1.1.4 微型计算机的两个重要分支 11
1.2 微型计算机的基本工作原理 14
1.2.1 冯·诺依曼结构 14
1.2.2 微机主要组成部分的结构及功能 16
1.2.3 冯·诺依曼存储程序工作原理 19
1.2.4 指令流水原理 20
1.3 计算机中数的表示 21
1.3.1 机器数和真值 21
1.3.2 原码 21
1.3.3 反码 22
1.3.4 补码 22
1.4 习题 24
第2章 ARM技术概论 25
2.1 ARM技术的发展及应用 25
2.1.1 ARM处理器的应用领域 25
2.1.2 ARM处理器的特点 26
2.2 ARM处理器的体系 26
2.2.1 ARM体系结构的版本 26
2.2.2 ARM体系结构的变型 27
2.2.3 ARM体系结构版本的命名方式 27
2.2.4 ARM处理器的各系列家族 28
2.3 ARM处理器的工作状态和运行模式 29
2.3.1 ARM处理器直接支持的数据类型 29
2.3.2 ARM处理器的工作状态 30
2.3.3 ARM处理器的运行模式 31
2.4 ARM处理器寄存器的组织与结构 31
2.4.1 ARM状态下的寄存器组织 32
2.4.2 Thumb状态下的寄存器组织 34
2.4.3 程序状态寄存器 35
2.5 ARM7TDMI处理器的功能结构 37
2.5.1 ARM7TDMI的3级流水线 37
2.5.2 ARM7TDMI对存储器的访问 38
2.5.3 ARM7TDMI的内核、模块和功能结构图 38
2.6 ARM7TDMI处理器的时序与指令周期 41
2.6.1 时序的概念 41
2.6.2 时钟周期、指令周期及总线周期 42
2.6.3 ARM7TDMI的总线周期 42
2.6.4 ARM7TDMI处理器的指令周期 45
2.7 ARM处理器的选型问题 47
2.8 STR710F处理器概述 48
2.8.1 STR710F内部结构 49
2.8.2 STR710F外部引脚 50
2.9 习题 51
第3章 ARM微处理器的指令系统 53
3.1 ARM微处理器的指令结构 53
3.1.1 ARM微处理器的指令集分类 53
3.1.2 ARM微处理器指令的格式 55
3.1.3 ARM微处理器指令的条件域 56
3.2 ARM微处理器指令集的寻址方式 57
3.2.1 立即寻址 57
3.2.2 寄存器寻址 58
3.2.3 寄存器间接寻址 58
3.2.4 寄存器偏移寻址 59
3.2.5 基址变址寻址 60
3.2.6 多寄存器寻址 60
3.2.7 相对寻址 61
3.2.8 堆栈寻址 61
3.3 ARM微处理器的指令集 62
3.3.1 跳转指令 62
3.3.2 数据处理指令 64
3.3.3 乘法指令与乘加指令 70
3.3.4 程序状态寄存器访问指令 72
3.3.5 ARM7TDMI微处理器的存储器访问指令 73
3.3.6 异常产生指令 79
3.3.7 伪指令 80
3.4 Thumb指令及应用 82
3.4.1 Thumb指令集简介 82
3.4.2 Thumb指令集与ARM指令集的区别 83
3.5 ARM和Thumb交叉工作 83
3.5.1 状态的切换 84
3.5.2 ARM和Thumb函数之间的调用 84
3.6 习题 86
第4章 ARM汇编程序设计 88
4.1 ARM汇编器的汇编指示命令 88
4.1.1 符号定义汇编指示命令 88
4.1.2 数据定义汇编指示命令 91
4.1.3 汇编控制汇编指示命令 96
4.1.4 其他常用的汇编指示命令 98
4.2 ARM汇编语言的语句格式 104
4.2.1 ARM汇编语言程序中的常用符号 105
4.2.2 ARM汇编语言程序中的表达式和运算符 107
4.3 ARM汇编语言的程序格式 110
4.4 ARM汇编语言基本结构程序设计方法 111
4.4.1 顺序结构设计方法 111
4.4.2 选择结构设计方法 114
4.4.3 循环结构设计方法 118
4.4.4 子程序结构设计方法 121
4.5 ARM汇编语言程序示例 125
4.5.1 两组BCD数加法 125
4.5.2 多分支结构程序示例 127
4.5.3 LED灯显示程序示例 129
4.6 习题 130
第5章 ARM高级语言编程 132
5.1 ARM C/C++编译器概述 132
5.2 ARM C/C++编译器支持的数据类型 132
5.2.1 整数类型 133
5.2.2 浮点数 133
5.2.3 指针类型的数据 134
5.2.4 ARM处理器的除法运算 134
5.3 ARM汇编程序、C程序、C++程序的相互调用 135
5.3.1 内联汇编 136
5.3.2 嵌入式汇编 139
5.3.3 C、C++程序与汇编程序的相互调用 140
5.4 ARM中的C/C++库 145
5.4.1 ARM中的C/C++运行时库简介 145
5.4.2 ARM中C/C++库的目录结构 146
5.4.3 建立一个包含C/C++运行时库的C/C++应用程序 146
5.4.4 建立不包含C运行时库的应用程序 148
5.5 ARM汇编与C语言编程示例 149
5.6 习题 152
第6章 存储器 154
6.1 存储器概述 154
6.1.1 存储器的分类 154
6.1.2 存储器的技术指标 155
6.1.3 计算机存储系统的层次结构 156
6.2 半导体存储器概述 157
6.2.1 半导体存储器的分类 158
6.2.2 半导体存储芯片的一般结构 159
6.3 半导体随机存取存储器 161
6.3.1 静态RAM随机存取存储器 161
6.3.2 动态RAM随机存取存储器 162
6.4 半导体只读存储器 165
6.4.1 早期的ROM 165
6.4.2 闪速存储器 166
6.5 高速缓冲存储器 170
6.5.1 Cache的基本工作原理 170
6.5.2 处理器中的Cache 171
6.6 存储器的接口设计 171
6.6.1 存储器接口设计应考虑的问题 172
6.6.2 异步SRAM的接口信号 173
6.6.3 存储器的接口设计实例 174
6.7 ARM体系结构中的存储系统 186
6.7.1 ARM体系结构中的地址空间 186
6.7.2 ARM体系结构中的存储格式 186
6.7.3 ARM处理器所支持的存储器类型 187
6.8 STR710实验板存储系统概述 188
6.9 习题 188
第7章 STR710F芯片及其存储系统 190
7.1 STR710F处理器概述 190
7.1.1 STR710F功能模块简介 190
7.1.2 STR710F的寻址空间分布 192
7.2 STR710F的引脚分布及其信号描述 199
7.2.1 STR710F引脚分布图及信号描述 199
7.2.2 STR710F芯片及其引脚分析 207
7.2.3 JTAG接口简介 209
7.3 电源、复位、时钟控制单元工作原理及编程示例 211
7.3.1 STR710F内部电源管理模块简介 211
7.3.2 STR710F复位管理系统简介 212
7.3.3 STR710F内部时钟管理模块简介 212
7.3.4 STR710F低功耗工作模式简介 214
7.3.5 STR710F电源、复位、时钟控制部件寄存器分析 216
7.3.6 STR710F的初始化 228
7.4 片内外存储器工作原理及操作实例 233
7.4.1 STR710F处理器片内FLASH存储器简介 234
7.4.2 STR710F处理器片内FLASH操作实例 239
7.4.3 STR710F评估板片外FLASH存储器简介 246
7.4.4 STR710F试验板片外FLASH操作实例 248
7.5 习题 251
第8章 中断技术 252
8.1 I/O接口概述 252
8.1.1 I/O接口电路的作用 252
8.1.2 接口和端口 252
8.1.3 外设的编址 253
8.2 CPU和I/O的数据传送方式 254
8.2.1 无条件传送 254
8.2.2 查询式传送 255
8.2.3 中断传送方式 256
8.2.4 DMA传送方式 256
8.3 中断技术概述 257
8.3.1 中断的定义和作用 257
8.3.2 中断的分类 258
8.3.3 中断优先级与中断嵌套 259
8.3.4 中断源 259
8.4 中断的处理过程 260
8.5 ARM处理器的异常 261
8.5.1 ARM处理器异常的种类 262
8.5.2 ARM处理器的异常向量及其优先级 262
8.5.3 ARM处理器的异常响应 263
8.5.4 ARM处理器的异常返回 265
8.5.5 ARM处理器的异常响应延迟 268
8.6 STR71x系列处理器的多级中断系统概述 269
8.7 STR710F中断系统的工作原理及编程示例 270
8.7.1 STR710F的中断源 270
8.7.2 STR710F高级中断控制器 272
8.7.3 STR710F中断管理控制器部件寄存器分析 275
8.7.4 STR710F中断服务的实现 280
8.7.5 STR710F的外部中断管理模块 287
8.7.6 STR710F中断系统应用实例 292
8.8 习题 314
第9章 I/O接口技术 315
9.1 并行I/O接口与串行I/O接口 315
9.1.1 并行I/O接口 315
9.1.2 串行I/O接口 315
9.2 定时器部件工作原理及编程示例 315
9.2.1 STR710F定时器的结构和工作原理 315
9.2.2 STR710F定时器部件寄存器分析 317
9.2.3 STR710F定时器的工作模式 322
9.2.4 STR710F定时器应用实例 326
9.3 通用I/O端口接口工作原理及编程示例 336
9.3.1 STR710F引脚的工作模式 337
9.3.2 STR710F通用I/O端口应用实例 341
9.4 UART接口工作原理及编程示例 354
9.4.1 异步串行通信原理及RS-232接口简介 354
9.4.2 STR710F的UART的基本特性及字符格式 357
9.4.3 STR710F的UART部件寄存器分析 358
9.4.4 STR710F的UART的工作过程 364
9.4.5 STR710F的UART应用实例 367
9.5 模数转换器接口工作原理及编程示例 378
9.5.1 模数转换原理 378
9.5.2 STR710F模数转换器工作原理简介 379
9.5.3 STR710F模数转换器部件寄存器分析 381
9.5.4 STR710F模数转换器应用实例 382
9.6 习题 389
第10章 总线技术 390
10.1 总线概述 390
10.1.1 总线上的信息传送方式 390
10.1.2 总线的分类 391
10.1.3 总线标准与规范 391
10.2 PC领域常用系统总线 392
10.2.1 ISA总线简介 392
10.2.2 PCI总线简介 392
10.2.3 AGP总线简介 393
10.2.4 PCI-E总线简介 393
10.3 常用通信总线 394
10.3.1 I2C总线简介 394
10.3.2 CAN总线简介 395
10.3.3 USB总线简介 396
10.4 I2C总线接口工作原理及编程示例 397
10.4.1 I2C总线协议简介 397
10.4.2 STR710F I2C模块及寄存器简介 400
10.4.3 STR710F的工作模式 407
10.4.4 I2C串行温度传感器简介 411
10.4.5 STR710FI2C接口应用实例 414
10.5 STR710F处理器的USB总线 424
10.6 习题 424
附录 426
附录A ARM体系结构的变型 426
附录B ARM处理器的各系列家族 427
参考文献 430