图书介绍

ARM系列处理器应用技术完全手册2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

ARM系列处理器应用技术完全手册
  • 李佳编著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115153302
  • 出版时间:2006
  • 标注页数:582页
  • 文件大小:32MB
  • 文件页数:598页
  • 主题词:微处理器,ARM-技术手册

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

ARM系列处理器应用技术完全手册PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 ARM系列微处理器简介1

1.1 什么是ARM1

1.1.1 ARM公司历史1

1.1.2 ARM的商业模式2

1.2 ARM体系结构的命名规则2

1.3 初识ARM系列处理器3

1.3.1 ARM7系列4

1.3.2 ARM9系列5

1.3.3 ARM9E系列5

1.3.4 ARM10系列5

1.3.5 ARM11系列5

1.4.1 ARM7系列6

1.4 ARM系列处理器的应用领域6

1.3.8 Cortex-M3和MPCore6

1.3.7 其他系列处理器6

1.3.6 SecurCore系列6

1.4.2 ARM9系列7

1.4.3 ARM9E系列7

1.4.4 ARM10E系列7

1.4.5 SecureCore系列7

1.5 ARM芯片的特点与选型7

1.5.1 不同系列处理器间的比较7

1.5.2 ARM芯片的选型8

1.6 ARM开发工具13

第2章 ARM体系结构16

2.1 ARM体系结构的特点16

2.2.2 流水线的分类18

2.2 流水线18

2.2.1 流水线的概念与原理18

2.2.3 影响流水线性能的因素25

2.3 ARM存储器25

2.4 I/O管理26

2.5 ARM开发调试方法27

第3章 ARM微处理器的编程模型29

3.1 数据类型29

3.1.1 ARM的基本数据类型29

3.1.2 浮点数据类型30

3.1.3 存储器大/小端30

3.2 处理器工作模式31

3.3 ARM寄存器组织32

3.3.1 通用寄存器33

3.3.2 程序计数器r1535

3.3.3 程序状态寄存器36

3.4 异常中断处理39

3.4.1 异常种类39

3.4.2 异常优先级44

3.4.3 处理器模式和异常44

3.4.4 异常响应流程45

3.4.5 从异常处理程序中返回46

3.4.6 在应用程序中安装异常处理程序48

3.4.7 FIQ和IRQ中断处理函数的设计50

3.4.8 SWI异常处理函数的设计54

4.1.1 数据处理指令的寻址方式概要61

第4章 ARM指令寻址方式61

4.1 数据处理指令的寻址方式61

4.1.2 指令解码62

4.1.3 移位操作62

4.1.4 寻址方式分类详解63

4.2 内存访问指令寻址72

4.2.1 字及无符号字节的Load/Store指令的寻址方式73

4.2.2 杂类Load/Store指令的寻址方式83

4.2.3 批量Load/Store指令寻址方式88

4.2.4 堆栈操作寻址方式92

4.2.5 协处理器Load/Store寻址方式93

第5章 数据传送指令98

5.1 MOV指令98

5.2 MVN指令100

5.3 单寄存器的Load/Store指令101

5.3.1 字数据传送指令102

5.3.2 字节数据传送指令(LDRB/STRB)105

5.3.3 半字数据传送指令(LDRH/STRH)107

5.3.4 用户模式字数据传送指令(LDRT/STRT)108

5.3.5 用户模式字节数据传送指令(LDRBT/STRBT)110

5.3.6 有符号的字节/半字数据传送指令(LDRBT/STRBT)112

5.4 多寄存器Load/Store内存访问指令113

5.4.1 多寄存器内存字数据传送指令114

5.4.2 用户模式多寄存器内存字数据传送指令116

5.4.3 带状态寄存器的多寄存器内存字数据装载指令(LDM(3))118

5.4.4 数据传送指令应用120

5.5 单数据交换指令122

5.5.1 字交换指令SWP123

5.5.2 字节交换指令SWPB124

5.5.3 交换指令SWP应用125

5.6 程序状态寄存器指令125

5.6.1 MRS126

5.6.2 MSR126

5.6.3 程序状态寄存器指令应用128

第6章 数据处理指令130

6.1 AND逻辑与指令131

6.2 EOR逻辑异或指令133

6.3 SUB减操作指令135

6.4 RSB减翻转指令136

6.5 ADD加操作指令138

6.6 ADC带进位的加法指令139

6.7 SBC带进位的减法指令140

6.8 RSC带进位的翻转减指令142

6.9 TST测试指令143

6.10 TEQ测试相等指令144

6.11 CMP比较指令145

6.12 CMN负数比较指令147

6.13 ORR逻辑或指令148

6.14 BIC位清零指令149

第7章 乘法指令152

7.1 MUL乘法指令153

7.2 MLA乘-累加指令154

7.3 UMULL无符号数长乘指令155

7.4 UMLAL无符号长乘-累加操作指令156

7.5 SMULL无符号长乘-累加操作指令158

7.6 SMLAL有符号长乘-累加操作指令159

第8章 跳转指令161

8.1 跳转指令B及带连接的跳转指令BL162

8.2 带状态切换的跳转指令BX164

8.3 带状态切换的连接跳转指令BLX(1)165

8.4 带状态切换的连接跳转指令BLX(2)167

第9章 协处理器及其他指令169

9.1 协处理器指令169

9.1.1 协处理器数据操作指令CDP170

9.1.2 协处理器数据读取指令LDC171

9.1.3 协处理器数据写入指令STC173

9.1.4 ARM寄存器到协处理器寄存器的数据传送指令MCR174

9.1.5 协处理器寄存器到ARM寄存器的数据传送指令MRC176

9.2 状态寄存器访问指令178

9.2.1 程序状态字内容送通用寄存器指令MRS178

9.2.2 写状态寄存器指令MSR180

9.3 零计数指令CLZ182

9.4 交换指令183

9.4.1 寄存器和存储器字数据交换指令SWP184

9.4.2 寄存器和存储器字节数据交换指令SWPB185

9.5 异常产生指令186

9.5.1 软中断指令SWI186

9.5.2 断点中断指令BKPT189

10.1 ARM汇编器所支持的伪操作191

第10章 ARM汇编程序设计191

10.1.1 符号定义(Symbol Definition)伪操作192

10.1.2 数据定义(Data Definition)伪操作197

10.1.3 汇编控制(Assembly Control)伪操作206

10.1.4 信息报告(Reporting)伪操作211

10.1.5 指令集选择(Instruction Set Selection)伪操作215

10.1.6 杂项(Miscellaneous)伪操作217

10.1.7 结构描述伪操作228

10.2 ARM汇编器所支持的伪指令235

10.2.1 ADR伪指令235

10.2.2 ADRL伪指令236

10.2.3 MOV32伪指令237

10.2.4 LDR伪指令237

10.3.1 ARM汇编语言语句格式238

10.3 汇编语言文件格式238

10.3.2 ARM汇编语言中的符号239

10.3.3 汇编语言程序中的表达式和运算符242

10.3.4 汇编语言预定义寄存器和协处理器248

10.3.5 汇编语言内置变量249

10.3.6 汇编语言的程序结构250

10.3.7 汇编语言子程序调用250

10.4 ARM汇编编译器的使用251

10.4.1 选项说明列表253

10.4.2 过程调用标准AAPCS253

10.5.1 条件跳转及循环254

10.5 ARM汇编程序设计举例254

10.4.5 为FPU命名选项254

10.4.3 浮点模式选项254

10.4.4 为CPU命名选项254

10.5.2 传送指令程序设计257

10.5.3 宏的使用267

10.5.4 使用MAP和FIELD命令描述数据结构269

第11章 Thumb指令集273

11.1 Thumb指令的特点及实现273

11.2 Thumb编程模型275

11.3 Thumb跳转指令276

11.3.1 跳转指令B276

11.3.2 带返回的无条件跳转指令BL278

11.3.3 带返回链接的无条件跳转指令BLX(1)279

11.3.5 带返回链接的无条件跳转指令BLX(2)281

11.3.4 带状态切换的跳转指令BX281

11.3.6 Thumb指令集中跳转指令举例282

11.4 Thumb数据处理指令282

11.4.1 ADC指令284

11.4.2 小立即数加法指令ADD(1)285

11.4.3 大立即数加法指令ADD(2)285

11.4.4 寄存器加法指令ADD(3)286

11.4.5 寄存器加法指令ADD(4)287

11.4.6 PC相关加法指令ADD(5)287

11.4.7 SP相关加法指令ADD(6)288

11.4.8 SP相关加法指令ADD(7)288

11.4.9 逻辑与指令AND289

11.4.10 算术右移指令ASR(1)290

11.4.11 算术右移指令ASR(2)291

11.4.12 位清零指令BIC291

11.4.13 比较指令CMN292

11.4.14 比较指令CMP(1)293

11.4.15 比较指令CMP(2)294

11.4.16 比较指令CMP(3)294

11.4.17 异或指令EOR295

11.4.18 逻辑左移指令LSL(1)296

11.4.19 逻辑左移指令LSL(2)296

11.4.20 逻辑右移指令LSR(1)297

11.4.21 逻辑右移指令LSR(2)298

11.4.22 移位指令MOV(1)299

11.4.23 移位指令MOV(2)300

11.4.24 移位指令MOV(3)301

11.4.25 乘法指令MUL301

11.4.26 传送指令MVN302

11.4.27 取反指令NEG303

11.4.28 逻辑或指令ORR303

11.4.29 循环右移指令ROR304

11.4.30 带进位的减指令SBC305

11.4.31 减法指令SUB(1)306

11.4.32 减法指令SUB(2)306

11.4.33 减法指令SUB(3)307

11.4.34 减法指令SUB(4)308

11.4.35 位测试指令TST309

11.4.36 Thumb指令集中数据操作指令举例309

11.5.1 寄存器装载指令LDR(1)310

11.5 单寄存器数据传送指令310

11.5.2 寄存器装载指令LDR(2)311

11.5.3 寄存器装载指令LDR(3)312

11.5.4 寄存器装载指令LDR(4)313

11.5.5 字节加栽指令LDRB(1)313

11.5.6 字节加载指令LDRB(2)314

11.5.7 半字加载指令LDRH(1)315

11.5.8 半字数据加载指令LDRH(2)315

11.5.9 有符号字节数据加载指令LDRSB316

11.5.10 有符号半字数据加载指令LDRSH317

11.5.11 寄存器存储指令STR(1)318

11.5.12 寄存器存储指令STR(2)318

11.5.13 寄存器存储指令STR(3)319

11.5.14 字节存储指令STRB(1)320

11.5.15 寄存器存储指令STRB(2)320

11.5.16 半字存储指令STRH(1)321

11.5.17 寄存器存储指令STRH(2)322

11.5.18 数据传送指令举例323

11.6 多寄存器数据传送指令323

11.6.1 多寄存器数据加载指令LDMIA323

11.6.2 多寄存器数据存储指令STMIA324

11.6.3 多寄存器压栈指令PUSH325

11.6.4 多寄存器出栈指令POP326

11.6.5 多寄存器数据传送指令举例327

11.7 异常中断产生指令(断点指令)328

11.7.1 软中断指令SWI328

11.7.2 断点中断指令BKPT329

11.8 未定义的指令空间330

11.9 Thumb指令应用330

11.9.1 Thumb的实现330

11.9.2 Thumb的特点332

11.10 ARM和Thumb的混合编程333

11.10.1 互交工作基础333

11.10.2 互交子程序335

第12章 混合使用C、C++和汇编语言345

12.1 内联汇编和嵌入型汇编的使用345

12.1.1 内联汇编345

12.1.2 嵌入式汇编356

12.1.3 内联汇编中使用SP、LR和PC寄存器的遗留问题362

12.1.4 内联汇编代码与嵌入式汇编代码之间的差异363

12.2 从汇编代码访问C全局变量364

12.3 在C++中使用C头文件364

12.3.1 在C++中使用系统C头文件365

12.3.2 在C++中使用自定义的C头文件365

12.4 C、C++和ARM汇编语言之间的调用366

12.4.1 相互调用的一般规则366

12.4.2 C++的特定信息367

12.4.3 混合编程调用举例367

第13章 嵌入式软件开发374

13.1 基于ARM处理器的嵌入式系统设计374

13.1.1 未对齐的数据指针374

13.1.2 结构体中未对齐字段375

13.1.4 移植代码并检测非对齐内存访问377

13.1.3 用于半字存取的非对齐LDR指令377

13.2 编译器的缺省行为378

13.2.1 Semihosting379

13.2.2 C库结构381

13.2.3 默认存储器映射382

13.2.4 链接程序放置规则382

13.2.5 应用程序启动383

13.3 调整C库使其适应目标硬件384

13.3.1 C库函数重定向384

13.3.2 从最终代码映像中去掉Semihosting385

13.4 映像文件存储器映射调整385

13.4.1 关于分散加载385

13.4.2 Scatter文件语法389

13.4.3 Scatter文件典型用法396

13.4.4 等效的简单映像分散载入描述401

13.5 复位和初始化405

13.5.1 初始化序列405

13.5.2 向量表406

13.5.3 ROM/RAM重映射406

13.5.3 局部存储器设置有关的考虑事项409

13.5.4 栈指针初始化409

13.5.5 硬件初始化411

13.6 进一步存储器映射考虑事项411

13.6.1 在Scatter文件中定位目标外设412

13.6.2 在Scatter文件中放置堆和栈412

14.1.1 为编译器选择处理器结构416

14.1 C编译器及其优化416

第14章 高效的C编程416

14.1.2 调试选项417

14.1.3 优化选项417

14.1.4 AAPCS选项418

14.1.5 编译选项对代码生成影响示例418

14.2 除法运算422

14.2.1 合并除法和求余运算422

14.2.2 使用2的整数次幂做除数423

14.2.3 求余运算423

14.2.4 除数是常数的除法424

14.3 条件执行424

14.4.1 范围检测425

14.4 布尔表达式425

14.4.2 和零的比较操作426

14.5 C循环结构427

14.5.1 循环中止428

14.5.2 循环展开429

14.6 Switch语句430

14.7 寄存器分配432

14.7.1 变量寄存器分配432

14.7.2 指针别名433

14.8 变量类型438

14.8.1 局部变量438

14.8.2 有符号数和无符号数439

14.8.3 全局变量439

14.9.1 减少函数调用开销443

14.9 函数调用443

14.9.2 使用_value_in_regs返回结构体445

14.9.3 叶子函数446

14.9.4 嵌套优化447

14.9.5 单纯子函数448

14.9.6 内嵌函数449

14.9.7 函数定义450

14.10 浮点运算451

14.11 移植问题452

第15章 ARM存储器453

15.1 协处理器CP15454

15.1.1 CP15寄存器访问指令455

15.1.2 CP15中的寄存器457

15.1.3 寄存器c0458

15.1.4 寄存器c1462

15.2 片上存储器465

15.3 高速缓冲存储器Cache465

15.3.1 Cache的分类466

15.3.2 Cache性能的衡量466

15.3.3 Cache工作原理467

15.3.4 Cache与主存的关系468

15.3.5 Cache的写策略470

15.3.6 Cache的替换策略471

15.3.7 与Cache相关的编程接口472

15.3.8 内存一致性476

15.3.9 Cache初始化子程序示例478

15.4 存储保护单元MPU480

15.4.1 保护域(Protection Regions)481

15.4.2 内存访问顺序482

15.4.3 使能MPU482

15.4.4 重叠域483

15.4.5 与MPU相关的CP15寄存器483

15.5 存储管理单元MMU487

15.5.1 MMU概述487

15.5.2 MMU与MPU488

15.5.3 内存访问过程488

15.5.4 MMU的使能与禁止489

15.5.5 虚拟地址到物理地址的转换490

15.5.7 与TLB相关的操作500

15.5.6 域(domain)和存储器访问权限500

15.5.8 存储访问失效502

15.5.9 快速上下文切换扩展(FCSE,Fast Context Switch Extension)506

第16章 ARM体系结构的发展510

16.1 ARM体系结构的发展过程510

16.2 ARMv6增加的系统支持511

16.2.1 存储管理511

16.2.2 多处理单元支持513

16.2.3 异常处理和中断513

16.2.4 混和大小端支持513

16.2.5 对媒体处理的支持513

A.1.1 基本数据类型515

A.1.2 字节顺序515

A.1 数据类型515

附录A ARM体系结构过程调用标准(AAPCS)515

A.1.3 混和数据类型516

A.2 基本过程调用标准516

A.2.1 寄存器516

A.2.2 进程、内存和栈519

A.2.3 子程序调用标准521

A.2.4 结果返回521

A.2.5 参数传递521

A.2.6 互交代码522

A.3 C/C++语言数据类型523

A.3.1 基本数据类型523

A.3.2 结构、联合、枚举和位字段525

A.4 浮点操作编译选项527

附录B ARM指令速查(按字母顺序)529

附录C Thumb指令速查(按字母顺序)538

附录D ARM汇编伪操作速查手册(按字母顺序)548

附录E 向量浮点编程558

E.1 向量浮点协处理器558

E.2 浮点寄存器558

E.2.1 寄存器组558

E.2.2 向量559

E.3 向量和标量运算560

E.4 VFP和条件码560

E.5 VFP系统寄存器561

E.5.1 浮点状态和控制寄存器FPSCR561

E.6 清零模式(Flush—to—Zero)563

E.5.3 浮点系统标识寄存器FPSID563

E.5.2 浮点异常寄存器FPEXC563

E.6.1 清零模式的适用范围564

E.6.2 使用清零模式的影响564

E.7 VFP指令564

E.7.1 FABS、FCPY和FNEG564

E.7.2 FADD和FSUB565

E.7.3 FCMP566

E.7.4 FCVTDS567

E.7.5 FCVTSD567

E.7.6 FDIV568

E.7.7 FLD和FST568

E.7.8 FLDM和FSTM569

E.7.9 FMAC、FNMAC、FMSC和FNMSC570

E.7.10 FMDRR和FMRRD571

E.7.11 FMDHR、FMDLR、FMRDH和FMRDL572

E.7.12 FMRS和FMSR573

E.7.13 FMRRS和FMSRR573

E.7.14 FMRX、FMXP和FMSTAT574

E.7.15 FMUL和FNMUL575

E.7.16 FSITO和FUITO575

E.7.17 FSQRT576

E.7.18 FTOSI和FTOUI577

E.8 浮点操作伪指令(pseudo—instruction)577

E.9 浮点运算伪操作和向量记号578

E.9.1 VFPASSERT SCALAR578

E.9.2 VFPASSERT VECTOR579

E.10 浮点运算指令一览表580

参考文献582

热门推荐