第1章 ARM概述 1
1.1 ARM技术的发展 1
1.2 ARM微处理器概述 2
1.2.1 RISC体系结构 2
1.2.2 ARM微处理器的寄存器结构 4
1.2.3 ARM微处理器的指令结构 4
1.3 ARM微处理器系列 5
1.3.1 ARM7微处理器系列 5
1.3.2 ARM9微处理器系列 6
1.3.3 ARM9E微处理器系列 6
1.3.4 ARM10E微处理器系列 7
1.3.5 SecurCore微处理器系列 7
1.3.6 StrongARM微处理器 8
1.3.7 Xscale微处理器 8
1.4 ARM微处理器的应用选型 8
1.5本章小结 11
第2章 ARM920T编程模型 11
2.1 ARM920T内核 11
2.1.1 CPU核简介 12
2.1.2流水线结构 13
2.2 ARM微处理器的工作状态 14
2.3处理器工作模式 15
2.4寄存器组织 16
2.4.1通用寄存器 17
2.4.2程序状态寄存器 19
2.4.3 Thumb状态下的寄存器组织 21
2.5异常(EXCEPTIONS) 23
2.5.1 ARM体系结构所支持的异常类型 23
2.5.2对异常的响应 24
2.5.3从异常返回 25
2.5.4外中断IRQ异常举例 26
2.6 ARM存储器接口 27
2.7 ARM体系结构的缓存(CACHE) 29
2.7.1 Cache的结构 29
2.7.2 Cache的工作原理 29
2.8 ARM体系结构的存储器管理单元(MMU) 30
2.9 CP15协处理器 32
2.9.1寄存器RO和R 1 33
2.9.2转换表基地址寄存器 35
2.9.3域访问控制寄存器 35
2.9.4故障状态寄存器 36
2.9.5故障地址寄存器 36
2.9.6 Cache操作寄存器 36
2.9.7 TLB工作寄存器 36
2.10本章小结 36
第3章 ARM指令集和汇编程序设计 37
3.1 ARM指令的寻址方式 37
3.1.1立即寻址 37
3.1.2寄存器寻址 38
3.1.3寄存器偏移寻址 38
3.1.4寄存器间接寻址 39
3.1.5基址变址寻址 39
3.1.6相对寻址 40
3.1.7多寄存器寻址 40
3.1.8堆栈寻址 41
3.1.9块复制寻址 42
3.2 ARM指令集概述 43
3.2.1 ARM指令的格式 43
3.2.2 ARM指令的分类 43
3.2.3 ARM指令的条件域 45
3.3 ARM指令集 45
3.3.1跳转指令 46
3.3.2数据处理指令 47
3.3.3乘法指令与乘加指令 48
3.3.4程序状态寄存器访问指令 49
3.3.5存储器访问指令 50
3.3.6数据交换指令 52
3.3.7移位指令 52
3.3.8异常产生指令 53
3.3.9协处理器指令 54
3.4 THUMB指令介绍 56
3.5 ARM汇编语言的伪指令与伪操作 58
3.5.1 ARM汇编语言的伪指令 58
3.5.2 ARM汇编语言的伪操作 63
3.6 ARM汇编程序设计 77
3.6.1 ARM汇编程序规范 78
3.6.2汇编语言程序设计 81
3.6.3汇编语言与C/C++语言的混合编程 87
3.7本章小结 92
第4章 基于ARM9的BOOT LOADER分析 93
4.1 BOOT LOADER概述 93
4.1.1 Boot Loader概念 94
4.1.2 Boot Loader位置 94
4.1.3 Boot Loader启动过程 94
4.2常用的BOOTLOADER 94
4.2.1 BLOB 94
4.2.2 Armboot 95
4.2.3 U-Boot 95
4.2.4总结 97
4.3 AT91RM9200处理器的启动过程 97
4.3.1硬件特点 97
4.3.2 AT91 RM9200处理器的启动过程 99
4.4 AT91RM9200汇编初始化程序BOOT LOADER 100
4.4.1 Boot Loader介绍 100
4.4.2 Boot Loader流程 101
4.5 BIOS FOR AT91RM9200分析 114
4.5.1通过串口下载文件 114
4.5.2 NOR Flash Boot Loader的在线升级 121
4.6 BOOT LOADER烧写和启动完整示例 124
4.7 U-BOOT的移植 125
4.7.1 U-Boot的主要目录结构 125
4.7.2 U-Boot支持的主要功能 126
4.7.3 U-Boot移植过程 126
4.7.4 Loader移植要点 127
4.7.5 Boot移植要点 128
4.7.6 U-Boot移植要点 128
4.7.7调试 129
4.8本章小结 129
第5章 AT91系列微控制器的片内资源 131
5.1 AT91 RM9200处理器简介 131
5.1.1 AT91RM9200处理器内核 131
5.1.2 AT91RM9200处理器外设 132
5.2 AT91 RM9200处理器特性 135
5.2.1 ARM920T处理器 135
5.2.2调试与测试 135
5.2.3引导程序 135
5.2.4嵌入式软件服务 136
5.2.5复位控制器 136
5.2.6存储控制器 136
5.2.7外部总线接口 136
5.2.8静态存储控制器 137
5.2.9 SDRAM控制器 137
5.2.10 Burst Flash控制器 137
5.2.11外设数据控制器 137
5.2.12中断控制器 138
5.2.13电源管理控制器 138
5.2.14系统定时器 138
5.2.15 实时时钟 138
5.2.16调试单元 139
5.2.17 PIO控制器 139
5.2.18 USB主机端口 139
5.2.19 USB器件端口 139
5.2.20以太网MAC 140
5.2.21串行外设接口 140
5.2.22两线接口 140
5.2.23 USART 140
5.2.24串行同步控制器 141
5.2.25定时/计数器 141
5.2.26多媒体卡接口 141
5.3本章小结 142
第6章 电源管理控制器 143
6.1功能介绍 143
6.1.1 PMC的主要特性 143
6.1.2工作模式定义 144
6.1.3时钟定义 144
6.1.4时钟发生器 145
6.1.5外围时钟 148
6.1.6用户接口 148
6.2程序示例 158
6.3本章小结 162
第7章 外部总线接口(EBI) 163
7.1功能介绍 163
7.1.1 EBI的主要特性 163
7.1.2外部存储器映射 165
7.1.3片选线 165
7.1.4数据总线宽度 165
7.1.5写访问 166
7.1.6写数据保持时间 167
7.1.7读访问 168
7.1.8等待状态 169
7.1.9存储器访问波形 171
7.1.10外部总线接口(EBI)用户接口 177
7.2程序示例 178
7.3本章小结 180
第8章 中断控制器 181
8.1功能介绍 181
8.1.1 AIC特性 181
8.1.2中断控制器(AIC)结构 182
8.1.3中断源 183
8.1.4向量化中断 184
8.1.5中断控制 185
8.1.6快速中断 188
8.1.7伪中断 190
8.1.8保护模式下的中断 190
8.1.9中断处理 192
8.1.10标准中断步骤 193
8.1.11快速中断步骤 194
8.2程序示例 195
8.3本章小结 199
第9章 并行口和串行口 201
9.1并行口 201
9.1.1 I/O口线复用 202
9.1.2输出选择 204
9.1.3 I/O电平 206
9.1.4输入毛刺滤波 207
9.1.5 I/O中断 208
9.1.6并行输入/输出控制器(PIO)用户接口 210
9.1.7 1/O线编程示例 212
9.2串行口 213
9.2.1串行口结构 213
9.2.2波特率发生器 215
9.2.3接收器 219
9.2.4发送器 226
9.2.5 BREAK 228
9.2.6串行口中断 229
9.2.7通道模式 232
9.3串行外围接口(SPI) 233
9.3.1串行外围接口结构 233
9.3.2主模式 235
9.3.3从模式 245
9.3.4数据传送 245
9.3.5中断控制 247
9.4本章小结 248
第10章 定时器 249
10.1定时器/计数器(TC) 249
10.1.1定时器/计数器结构 250
10.1.2 16位计数器 253
10.1.3时钟选择 255
10.1.4时钟控制 257
10.1.5 TC工作模式 257
10.1.6触发类型 258
10.1.7捕获模式 259
10.1.8波形工作模式 262
10.1.9中断控制 268
10.2系统定时器(ST) 271
10.3实时控制器(RTC) 278
10.3.1 RTC结构 279
10.3.2 2000年一致性 280
10.3.3功能描述 280
10.3.4计时 280
10.3.5闹钟 280
10.3.6错误检查 283
10.3.7更新时间/日历 284
10.3.8中断控制 286
10.4本章小结 288
第11章 ATMEL系列ARM开发实例 289
11.1 AT91评估板 289
11.1.1概述 289
11.1.2评估板设置 291
11.1.3评估板软件 291
11.1.4评估板上的元器件 293
11.2 AT91集成函数库 295
11.2.1 AT91库的定义规则 295
11.2.2 AT91库的层次结构 297
11.2.3 AT91库的使用 300
11.3 AT91内部资源的库函数编程 306
11.3.1并行口编程 306
11.3.2串行口编程 308
11.3.3定时器/计数器编程 313
11.3.4 A/D转化器编程 317
11.3.5 D/A转换器编程 321
11.3.6先进中断控制器编程 325
11.3.7实时时钟计数器编程 327
11.4 AT91函数库 331
11.4.1省电模块 331
11.4.2 SPI接口 334
11.4.3 EBI接口 334
11.4.4 I2 C接口 335
11.5本章小结 336
第12章 ARM开发及调试 337
12.1 ARM开发工具 337
12.1.1 ARM开发工具综述 337
12.1.2 ARM SDT 339
12.1.3 ARM ADS 341
12.1.4 MULTI2000 344
12.1.5 Nucleus UDB 345
12.1.6 visionCLICK/visionXD 346
12.1.7 Hitool for ARM 347
12.1.8 Embest IDE 348
12.1.9 BDIl000/BDI2000 348
12.1.10 Multi-ICE 349
12.1.11 JEENI仿真器 350
12.1.12 TRACE32-ICD 351
12.1.13 visionPROBE/visionICE H 351
12.2 HITOOL FOR ARM开发系统 352
12.2.1 ARM的开发方案 352
12.2.2 Hitool for ARM软件产品特征 354
12.2.3 Hitool for ARM功能及使用 355
12.3嵌入式系统开发流程 360
12.4 ANGEL调试监控程序 363
12.4.1 Angel概述 363
12.4.2 Angel系统的组成 366
12.4.3 Angel系统资源需求 368
12.4.4 Angel操作 368
12.4.5 Angel接口 370
12.4.6 Angel的通信结构 371
12.4.7 Angel调试协定 372
12.5启动代码 374
第13章 AT91微控制器开发平台 383
13.1 MICETEK的AT91微控制器开发平台 383
13.1.1 EV40评估板的组成 384
13.1.2评估板的各模块功能介绍 385
13.1.3片选信号设置及外围地址空间分配 388
13.1.4以太网接口程序设计 390
13.2 BMR的AT91微控制器开发平台 391
13.2.1 NetCARM77的结构 391
13.2.2开发套件特点 392
13.2.3 NerCARM7开发板硬件资源 393
13.2.4系统软件的移植 395
13.3本章小结 397
附录A映像文件的组成和执行机理 399
A.1 ARM的映像文件介绍 399
A.2 ARM的映像文件的加载域和运行时域 400
附录B X-Modem协议 403
B.1 X-Modem协议简介 403
B.2 X-Modem协议术语描述 403
B.3 数据帧格式与文件分解 403
B.4 X-Modem协议的启动 404
B.5 X-Modem的正常传输过程 405
附录C AT91库函数说明 407
C.l并行I/O接口 407
C.2串行口USART 408
C.3定时器/计数器 412
C.4 A/D转换器 414
C.5 D/A转换器 416
C.6先进中断控制器 417
C.7实时时钟计数器 419
C.8省电模块 426
C.9 SPI接口 427
C.10 EBI接口 428
C.11 12C接口 428