ARM体系结构与编程PDF电子书下载
- 电子书积分:16 积分如何计算积分?
- 作 者:杜春雷主编
- 出 版 社:北京:清华大学出版社
- 出版年份:2015
- ISBN:9787302403425
- 页数:513 页
第1章 ARM概述及其基本编程模型 1
1.1 ARM技术的应用领域及其特点 1
1.2 ARM体系结构的版本及命名方法 2
1.2.1 ARM体系结构的版本 2
1.2.2 ARM体系的变种 4
1.2.3 ARM/Thumb体系版本的命名格式 6
1.3 ARM处理器系列 7
1.3.1 ARM7系列 7
1.3.2 ARM9系列 8
1.3.3 ARM9E系列 9
1.3.4 ARM10E系列 9
1.3.5 SecurCore系列 10
1.4 ARM处理器的运行模式 11
1.5 ARM寄存器介绍 11
1.5.1 通用寄存器 12
1.5.2 程序状态寄存器 15
1.6 ARM体系的异常中断 17
1.6.1 ARM中异常中断的种类 17
1.6.2 ARM处理器对异常中断的响应过程 18
1.6.3 从异常中断处理程序中返回 19
1.7 ARM体系中的存储系统 19
1.7.1 ARM体系中的存储空间 19
1.7.2 ARM存储器格式 19
1.7.3 非对齐的存储访问操作 20
1.7.4 指令预取和自修改代码 21
第2章 ARM指令分类及其寻址方式 22
2.1 ARM指令集概要介绍 22
2.1.1 ARM指令的分类 22
2.1.2 ARM指令的一般编码格式 22
2.1.3 ARM指令的条件码域 23
2.2 ARM指令的寻址方式 24
2.2.1 数据处理指令的操作数的寻址方式 24
2.2.2 字及无符号字节的Load/Store指令的寻址方式 34
2.2.3 杂类Load/Store指令的寻址方式 46
2.2.4 批量Load/Store指令的寻址方式 52
2.2.5 协处理器Load/Store指令的寻址方式 56
第3章 ARM指令集介绍 61
3.1 ARM指令集 61
3.1.1 跳转指令 61
3.1.2 数据处理指令 65
3.1.3 乘法指令 78
3.1.4 杂类的算术指令 84
3.1.5 状态寄存器访问指令 85
3.1.6 Load/Store内存访问指令 88
3.1.7 批量Load/Store内存访问指令 97
3.1.8 信号量操作指令 102
3.1.9 异常中断产生指令 104
3.1.10 ARM协处理器指令 106
3.2 一些基本的ARM指令功能段 110
3.2.1 算术逻辑运算指令的应用 111
3.2.2 跳转指令的应用 112
3.2.3 Load/Store指令的应用 114
3.2.4 批量Load/Store指令的应用 115
3.2.5 信号量指令的应用 116
3.2.6 与系统相关的一些指令代码段 117
3.3 Thumb指令介绍 120
第4章 ARM汇编语言程序设计 122
4.1 伪操作 122
4.1.1 符号定义伪操作 122
4.1.2 数据定义伪操作 126
4.1.3 汇编控制伪操作 135
4.1.4 数据帧描述伪操作 138
4.1.5 信息报告伪操作 139
4.1.6 其他的伪操作 141
4.2 ARM汇编语言伪指令 151
4.3 ARM汇编语言语句的格式 153
4.3.1 ARM汇编语言中的符号 154
4.3.2 ARM汇编语言中的表达式 157
4.4 ARM汇编语言程序的格式 162
4.4.1 汇编语言程序的格式 162
4.4.2 汇编语言子程序的调用 163
4.5 ARM汇编编译器的使用 164
4.6 汇编程序设计举例 166
4.6.1 ARM中伪操作的使用实例 166
4.6.2 ARM汇编程序的实例 169
第5章 ARM的存储系统 175
5.1 ARM存储系统概述 175
5.2 ARM中用于存储管理的系统控制协处理器CP15 176
5.2.1 访问CP15寄存器的指令 176
5.2.2 CP15中的寄存器 178
5.3 存储器管理单元MMU 186
5.3.1 存储器管理单元MMU概述 186
5.3.2 禁止/使能MMU 188
5.3.3 MMU中的地址变换过程 189
5.3.4 MMU中的存储访问权限控制 198
5.3.5 MMU中的域 199
5.3.6 关于快表的操作 199
5.3.7 ARM中的存储访问失效 201
5.4 高速缓冲存储器和写缓冲区 205
5.4.1 基本概念 205
5.4.2 Cache的工作原理和地址映像方法 206
5.4.3 Cache的分类 208
5.4.4 Cache的替换算法 209
5.4.5 缓冲技术的使用注意事项 210
5.4.6 存储系统的一致性问题 211
5.4.7 Cache内容锁定 213
5.4.8 与Cache和写缓冲区相关的编程接口 214
5.5 快速上下文切换技术 217
5.5.1 快速上下文切换技术原理 217
5.5.2 快速上下文切换技术编程接口 219
5.6 与存储系统相关的程序设计指南 219
5.6.1 地址空间 219
5.6.2 存储器的格式 220
5.6.3 非对齐的存储访问操作 221
5.6.4 指令预取和自修改代码 222
5.6.5 IMB 223
5.6.6 存储器映射的I/O空间 224
5.7 ARM存储系统的实例 225
5.7.1 L7205的存储系统概述 225
5.7.2 L7205中的SDRAM 226
5.7.3 L7205中的MMU 235
第6章 ATPCS介绍 242
6.1 ATPCS概述 242
6.2 基本ATPCS 242
6.2.1 寄存器的使用规则 243
6.2.2 数据栈的使用规则 244
6.2.3 参数传递规则 245
6.3 几种特定的ATPCS 246
6.3.1 支持数据栈限制检查的ATPCS 246
6.3.2 支持只读段位置无关(ROPI)的ATPCS 248
6.3.3 支持可读写段位置无关(RWPI)的ATPCS 248
6.3.4 支持ARM程序和Thumb程序混合使用的ATPCS 248
6.3.5 处理浮点运算的ATPCS 249
第7章 ARM程序和Thumb程序混合使用 250
7.1 概述 250
7.2 在汇编语言程序中通过用户代码支持intetwork 251
7.2.1 可以实现程序状态切换的指令 251
7.2.2 与程序状态切换相关的伪操作 254
7.2.3 进行状态切换的汇编程序实例 255
7.3 在C/C++程序中实现interwork 256
7.4 在汇编语言程序中通过连接器支持interwork 259
7.4.1 利用veneers实现汇编程序间的程序状态切换 259
7.4.2 利用veneers实现汇编程序与C/C++程序间的程序状态切换 261
第8章 C/C++以及汇编语言的混合编程 263
8.1 内嵌汇编器的使用 263
8.1.1 内嵌的汇编指令用法 263
8.1.2 内嵌的汇编器和armasm的区别 265
8.1.3 在C/C++程序中使用内嵌的汇编指令 265
8.1.4 内嵌汇编指令的应用举例 267
8.2 从汇编程序中访问C程序变量 270
8.3 汇编程序、C程序以及C++程序的相互调用 271
8.3.1 在C++程序中使用C程序头文件 271
8.3.2 汇编程序、C程序以及C++程序的相互调用举例 272
第9章 异常中断处理 276
9.1 ARM中的异常中断处理概述 276
9.1.1 ARM体系中的异常中断种类 276
9.1.2 异常中断向量表及异常中断优先级 277
9.1.3 异常中断使用的寄存器 278
9.2 进入和退出异常中断的过程 279
9.2.1 ARM处理器对异常中断的响应过程 279
9.2.2 从异常中断处理程序中返回 282
9.3 在应用程序中安排异常中断处理程序 285
9.3.1 在系统复位时安排异常中断处理程序 285
9.3.2 在C程序中安排异常中断处理程序 286
9.4 SWI异常中断处理程序 288
9.4.1 SWI异常中断处理程序的实现 288
9.4.2 SWI异常中断调用 292
9.5 FIQ和IRQ异常中断处理程序 297
9.5.1 IRQ/FIQ异常中断处理程序 298
9.5.2 IRQ异常中断处理程序举例 300
9.6 复位异常中断处理程序 302
9.7 未定义指令异常中断 302
9.8 指令预取中止异常中断处理程序 303
9.9 数据访问中止异常中断处理程序 303
第10章 ARM C/C++编译器 304
10.1 ARM C/C++编译器概述 304
10.1.1 ARM C/C++编译器及语言库介绍 304
10.1.2 ARM编译器中与搜索路径相关的一些基本概念 305
10.2 ARM编译器命令行格式 306
10.2.1 过程调用标准 307
10.2.2 设置源程序语言类型 308
10.2.3 指定搜索路径 309
10.2.4 设置预处理选项 309
10.2.5 设置输出文件的类型 310
10.2.6 指定目标处理器和ARM体系版本 311
10.2.7 生成调试信息 312
10.2.8 代码生成的控制 313
10.2.9 控制警告信息的产生 315
10.2.10 编译时进行的一些额外的检查 317
10.2.11 控制错误信息 318
10.3 ARM编译器中的pragmas 319
10.4 ARM编译器特定的关键词 321
10.4.1 用于声明函数的关键词 321
10.4.2 用于声明变量的关键词 333
10.4.3 用于限定数据类型的关键词 333
10.5 ARM编译器支持的基本数据类型 335
10.6 ARM编译器中的预定义宏 337
10.7 ARM中的C/C++库 339
10.7.1 ARM中的C/C++运行时库概述 339
10.7.2 建立一个包含C/C++运行时库的C/C++应用程序 340
10.7.3 建立不包含C运行时库的应用程序 344
10.7.4 裁减C/C++运行时库以适应特定的目标运行环境 345
第11章 ARM连接器 347
11.1 ARM映像文件 347
11.1.1 ARM映像文件的组成 347
11.1.2 ARM映像文件的入口点 349
11.1.3 输入段的排序规则 350
11.2 ARM连接器介绍 351
11.3 ARM连接器生成的符号 353
11.3.1 连接器生成的与域相关的符号 353
11.3.2 连接器生成的与输出段相关的符号 354
11.3.3 连接器生成的与输入段相关的符号 354
11.4 连接器的优化功能 354
11.5 运行时库的使用 355
11.5.1 C/C++运行时库与目标文件 356
11.5.2 查找需要的C/C++运行时库 356
11.5.3 选择合适种类的C/C++运行时库 357
11.5.4 扫描C/C++运行时库 359
11.6 从一个映像文件中使用另一个映像文件中的符号 359
11.6.1 symdefs文件 359
11.6.2 建立symdefs文件 361
11.6.3 symdefs文件的使用 361
11.7 隐藏或者重命名全局符号 362
11.7.1 steering文件的格式 362
11.7.2 steering文件中的命令 362
11.8 ARM连接器的命令行选项 363
11.9 使用scatter文件定义映像文件的地址映射 371
11.9.1 scatter文件概述 371
11.9.2 scatter文件中各部分的介绍 373
11.9.3 scatter文件使用举例 376
第12章 嵌入式应用程序示例 384
12.1 嵌入式应用程序设计的基本知识 384
12.1.1 嵌入式应用系统中的存储映射 384
12.1.2 系统初始化 385
12.2 使用semihosting的C语言程序示例 388
12.2.1 源程序分析 388
12.2.2 生成映像文件 391
12.3 一个嵌入式应用系统示例 392
12.3.1 源程序分析 393
12.3.2 生成映像文件 400
12.3.3 本例中地址映射模式 401
12.4 进行ROM/RAM地址重映射的嵌入式应用系统 401
12.4.1 地址映射模式 401
12.4.2 源程序分析 403
12.4.3 生成映像文件 404
12.5 一个嵌入式操作系统示例 405
第13章 使用CodeWarrior 412
13.1 CodeWarrior for ARM概述 412
13.2 简单工程项目的使用 413
13.2.1 工程项目窗口 413
13.2.2 简单工程项目的使用 416
13.3 配置生成目标 424
13.3.1 Debug Settings对话框介绍 424
13.3.2 设置生成目标的基本选项 425
13.3.3 汇编器选项的设置 430
13.3.4 编译器的选项设置 435
13.3.5 连接器的选项设置 443
13.3.6 fromELF工具的选项设置 449
13.4 复杂工程项目的使用 451
13.4.1 建立一个新的生成目标 451
13.4.2 将一个生成目标更名 453
13.4.3 建立生成目标之间的依赖关系 453
13.4.4 子工程项目的使用 455
13.5 工程项目模板 456
13.5.1 ADS中工程项目模板的使用 457
13.5.2 建立用户工程项目模板 461
13.6 编译和连接工程项目 461
13.6.1 编译文件 462
13.6.2 生成工程项目 463
第14章 ARM体系中的调试方法 465
14.1 ARM体系中的调试系统概述 465
14.2 基于Angel的调试系统 466
14.2.1 基于Angel的调试系统的概述 466
14.2.2 使用Angel开发应用程序 469
14.2.3 Angel执行的操作 474
14.2.4 将Angel移植到特定的目标系统 476
14.3 基于JTAG的调试系统 495
14.3.1 基于JTAG的调试系统的特点 495
14.3.2 基于JTAG的调试系统结构 495
14.3.3 目标系统中的调试功能扩展部件 496
14.3.4 基于JTAG的调试过程 498
14.4 ADW使用介绍 498
14.4.1 ADW概述 498
14.4.2 ADW中的窗口 501
14.4.3 ADW使用介绍 505
参考文献 513
- 《联吡啶基钌光敏染料的结构与性能的理论研究》李明霞 2019
- 《异质性条件下技术创新最优市场结构研究 以中国高技术产业为例》千慧雄 2019
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《柏里曼人体结构绘画教学描摹本 第2册 头手足结构》杨建飞主编 2019
- 《全国职业院校工业机器人技术专业规划教材 工业机器人现场编程》(中国)项万明 2019
- 《认知语言学视野的抽象方位结构研究》曹爽著 2019
- 《国内外辐射环境监测体系对比研究》上海市辐射环境监督站 2019
- 《编程超有趣 奇妙Python轻松学 第1辑》HelloCode人工智能国际研究组 2018
- 《无机材料晶体结构学概论》毛卫民编著 2019
- 《数据结构教程》付婷婷,王志海,张磊编著 2019
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019