《ARM程序分析与设计》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:王宇行编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2008
  • ISBN:9787811242522
  • 页数:324 页
图书介绍:ARM的开发工具及其开发的整个过程,ARM映像文件分析,ARM汇编语言和C语言,标准C库的用法,ARM汇编语言和C语言混合编程的技术,引导代码分析,ARM中断处理原理和实现方法,调试的基本原理和技术,分散加载技术,位置无关代码和数据的原理和开发方法。

第1章 ARM开发工具 1

1.1 开发流程 1

1.2 开发工具 2

1.2.1 编译器简介 2

1.2.2 链接器简介 3

1.2.3 fromelf工具 4

1.2.4 常用的编译和链接参数 5

1.2.5 makefile基础 8

第2章 ARM映像文件分析 15

2.1 映像文件物理结构 15

2.1.1 ELF简介 17

2.1.2 目标文件的物理结构 17

2.1.3 可执行映像文件的物理结构 21

2.2 映像文件的逻辑结构 24

2.2.1 逻辑结构的基本构成 24

2.2.2 装载域和运行域 25

2.2.3 分散装载技术 27

2.2.4 装载域到运行域的数据复制 31

第3章 ARM汇编语言基础 35

3.1 ARM处理器概述 35

3.1.1 ARM处理器模式 35

3.1.2 寄存器 36

3.1.3 处理器工作状态 42

3.1.4 ARM数据长度 42

3.1.5 ARM存储系统 42

3.1.6 存储和地址相关内容 43

3.2 ARM汇编程序的结构 47

3.2.1 段 47

3.2.2 标识符 48

3.2.3 程序入口 50

3.2.4 程序结束 50

3.2.5 包含其他汇编源文件 50

3.2.6 引用外部标识符 51

3.3 ARM汇编程序的常量和变量 52

3.3.1 常量 52

3.3.2 变量 53

3.4 ARM汇编程序的运算符和表达式 57

3.4.1 数字表达式 57

3.4.2 逻辑表达式 58

3.4.3 字符串表达式 59

3.5 ARM汇编程序的数据定义 62

3.5.1 LTORG 63

3.5.2 DCB、DCW、DCD和SPACE 67

3.5.3 MAP和FIELD 69

3.6 ARM汇编程序的控制结构 72

3.6.1 选择结构 72

3.6.2 循环结构 72

3.6.3 选择结构和循环结构实例 73

3.7 ARM汇编指令 74

3.7.1 数据处理指令 75

3.7.2 比较指令 84

3.7.3 存储器访问指令 89

3.7.4 堆栈操作指令 97

3.7.5 交换指令 101

3.7.6 跳转指令 103

3.7.7 条件执行指令 105

3.7.8 软件中断指令SWI 111

3.8 ARM程序和Thumb程序混合使用 114

3.8.1 混合使用的原因 114

3.8.2 ARM和Thumb状态的切换方式 114

3.9 汇编语言实例 117

3.9.1 字符串处理 117

3.9.2 十进制数用七段数码管显示 119

3.9.3 系统初始化简介 121

3.9.4 七段数码管显示 124

第4章 ARM C语言基础 131

4.1 数据类型 131

4.1.1 基本数据类型 131

4.1.2 数据类型修饰符signed和unsigned 132

4.2 常量 133

4.3 变量 134

4.4 操作符 137

4.5 控制结构 140

4.5.1 选择 140

4.5.2 循环 143

4.6 结构体 145

4.7 编译指令 147

4.7.1 #define和#undef 147

4.7.2 #if和#endif 148

4.7.3 #error 148

4.8 C程序优化 149

4.8.1 除法和求余运算 149

4.8.2 条件执行 151

4.8.3 关系表达式 152

4.8.4 循环 154

4.8.5 寄存器分配 155

4.8.6 函数 158

第5章 标准C库的应用 162

5.1 标准C库的组成 162

5.1.1 与目标硬件无关的库函数 162

5.1.2 与目标硬件相关的库函数 162

5.2 标准C库的位置 163

5.3 标准C库的使用流程 163

5.4 标准C库函数的移植和重定向实例 166

5.5 ARM编译器对C语言的扩展 170

5.5.1 __irq 171

5.5.2 __swi 172

5.5.3 __asm 173

5.5.4 __inline 174

5.5.5 __weak 174

5.5.6 __register 175

5.5.7 __int64 175

5.5.8 __pure 176

5.5.9 __value_in_regs 176

第6章 ARM汇编语言和C语言混合编程6.1 C语言里嵌入汇编指令 177

6.1.1 内联汇编 177

6.1.2 嵌入式汇编 179

6.2 C程序调用汇编语言函数 181

6.3 汇编程序调用C语言函数 182

6.3.1 汇编程序中调用用户自定义的C函数 182

6.3.2 汇编程序中调用标准库函数 182

6.4 汇编程序访问C语言定义的全局变量 183

6.5 APCS概述 183

6.5.1 寄存器的使用规则 184

6.5.2 堆栈的使用规则 184

6.5.3 参数的传递规则 184

6.5.4 函数返回值规则 185

6.5.5 参数传递和函数返回值总结 185

6.6 混合编程实例 187

6.6.1 生成伪随机数 187

6.6.2 数字转换成字符串 191

6.7 编写基于ROM的程序 195

6.7.1 系统初始化 195

6.7.2 裁剪库函数 201

6.7.3 中断处理 203

6.7.4 串口驱动 206

6.7.5 I/O地址映射 207

6.7.6 生成并装载ROM映像文件 209

6.7.7 在scatter文件里定义堆栈 212

第7章 引导代码分析 213

7.1 BOOT相关硬件:Flash ROM 213

7.2 BOOT的主要功能 214

7.3 主要功能分析 217

7.3.1 中断处理 217

7.3.2 初始化硬件 222

7.3.3 应用程序执行环境的初始化并跳到主程序 225

7.3.4 BOOT流程图 226

7.3.5 地址重映射 232

第8章 ARM中断处理 235

8.1 中断概述 235

8.1.1 中断分类 235

8.1.2 响应时间 235

8.1.3 屏蔽和使能中断 236

8.1.4 可重入的中断处理程序 237

8.2 硬件中断处理流程 238

8.2.1 ARM内核自动完成的动作 238

8.2.2 跳转到中断处理函数 238

8.2.3 中断处理完成后返回 239

8.2.4 中断处理流程图 240

8.3 硬件中断实现 240

8.3.1 定义中断服务程序 241

8.3.2 主程序 242

8.4 中断服务子程序中关键的变量类型 243

8.4.1 volatile 243

8.4.2 __irq 246

8.4.3 访问绝对地址的内存位置 246

第9章 调试基础 247

9.1 调试构架 247

9.1.1 调试主机 247

9.1.2 协议转换器 248

9.1.3 调试目标 248

9.2 调试逻辑结构 252

9.3 JTAG简介 252

9.3.1 基本概念 253

9.3.2 举例 254

第10章 scatter文件 255

10.1 scatter文件的作用 255

10.2 scatter文件简介 255

10.2.1 对装载域的描述 256

10.2.2 对运行域的描述 256

10.2.3 对输入段的描述 257

10.3 scatter文件的使用 257

10.3.1 系统挂接不同类型的存储器 257

10.3.2 复杂的内存映射 258

10.3.3 映射外部控制寄存器的地址 259

10.3.4 映射堆和栈的地址 260

10.3.5 scatter文件实例 261

第11章 位置无关代码和数据11.1 只读段(RO)位置无关(PI) 263

11.1.1 编写位置无关的代码 263

11.1.2 位置无关的代码编译和链接参数 264

11.1.3 位置无关的代码段分析 265

11.2 读写段(RW)位置无关(PI) 273

11.2.1 可重入代码 274

11.2.2 位置无关的数据编译和链接参数 277

11.3 位置无关(PI)代码段和数据段编写实例分析 277

11.3.1 实例简介 277

11.3.2 symdefs文件 278

11.3.3 实例分析 282

附录A BOOT源代码 307

附录B ARM处理器系列 320

参考文献 324