图书介绍

嵌入式ARM开发实战2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

嵌入式ARM开发实战
  • (美)兰布里奇著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302396192
  • 出版时间:2015
  • 标注页数:362页
  • 文件大小:113MB
  • 文件页数:389页
  • 主题词:微处理器-系统设计

PDF下载


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

下载说明

嵌入式ARM开发实战PDF格式电子书版下载

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

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

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

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

图书目录

第Ⅰ部分 ARM系统和开发3

第1章 ARM发展史3

1.1 ARM的起源4

1.1.1 Acorn决定创建新处理器的理由6

1.1.2 Acorn变成ARM的原因7

1.1.3 ARM不实际生产微处理器的原因8

1.2 ARM的命名约定10

1.2.1 如何辨别正在使用的处理器11

1.2.2 ARM7TDMI和ARM926EJ-S处理器的差异13

1.2.3 ARM7和ARMv7的差异15

1.2.4 Cortex-M和Cortex-A的差异15

1.3 制造商文献资料16

1.4 ARM在今天都做些什么16

1.5 本章小结17

第2章 ARM嵌入式系统19

2.1 ARM嵌入式系统的定义22

2.1.1 芯片上的系统23

2.1.2 嵌入式系统和系统程序设计之间的区别24

2.1.3 优化的重要性25

2.1.4 RISC架构的优势29

2.2 选择合适的处理器32

2.3 如何着手34

2.3.1 可用的电路板35

2.3.2 现有操作系统38

2.3.3 最适合我的目的的编译器39

2.3.4 准备进行调试40

2.3.5 是否有完整的开发环境41

2.3.6 还需要知道什么42

2.4 本章小结43

第3章 ARM架构45

3.1 理解基础知识46

3.1.1 寄存器47

3.1.2 堆栈48

3.1.3 内部RAM48

3.1.4 缓存49

3.2 开始了解不同的ARM子系统51

3.2.1 处理器寄存器介绍51

3.2.2 CPSR介绍55

3.2.3 计算单元57

3.2.4 流水线58

3.2.5 紧耦合存储器60

3.2.6 协处理器61

3.3 理解不同的概念62

3.3.1 异常的概念62

3.3.2 处理不同的异常65

3.3.3 操作模式66

3.3.4 向量表68

3.3.5 存储器管理70

3.4 不同的技术73

3.4.1 JTAG调试(D)73

3.4.2 增强的DSP(E)73

3.4.3 向量浮点(F)74

3.4.4 EmbeddedICE(I)75

3.4.5 Jazelle(J)75

3.4.6 长乘法(M)75

3.4.7 Thumb(T)76

3.4.8 合成器(S)76

3.4.9 TrustZone77

3.4.10 NEON78

3.4.11 big.LITTLE78

3.5 本章小结80

第4章 ARM汇编语言81

4.1 汇编语言介绍82

4.2 与计算机对话82

4.3 学习汇编语言的理由84

4.3.1 速度85

4.3.2 空间87

4.3.3 趣味性88

4.3.4 编译器并不完美88

4.3.5 通过汇编语言理解计算机科学89

4.3.6 使用汇编语言编写89

4.4 使用汇编语言90

4.4.1 编写启动加载程序90

4.4.2 逆向工程91

4.4.3 优化92

4.5 ARM汇编语言93

4.5.1 指令格式93

4.5.2 布局94

4.5.3 条件代码94

4.5.4 更新条件标志98

4.5.5 寻址模式101

4.6 ARM汇编语言基础105

4.6.1 加载和存储105

4.6.2 值的设置105

4.6.3 分支105

4.6.4 数学106

4.6.5 理解一个示范程序106

4.7 本章小结108

第5章 ARM入门109

5.1 Hello World!110

5.2 刨根问底115

5.3 Hello World,这次来真的118

5.4 软件实现123

5.5 存储器映射125

5.6 实际例子129

5.6.1 Silicon Labs公司的STK3800129

5.6.2 Silicon Labs公司的STK3200135

5.6.3 Atmel公司的D20 Xplained Pro144

5.7 案例分析:U-BOOT154

5.8 机器学习:Raspberry Pi156

5.8.1 引导程序157

5.8.2 为Raspberry Pi编译程序158

5.8.3 接下来做什么159

5.9 本章小结160

第6章 Thumb指令集161

6.1 Thumb163

6.2 Thumb-2技术164

6.3 Thumb的执行方式164

6.4 使用Thumb的优点166

6.5 使用Thumb的内核168

6.6 ARM-Thumb交互工作171

6.7 Thumb-1介绍172

6.7.1 可用的寄存器172

6.7.2 被移除的指令173

6.7.3 没有条件语句174

6.7.4 设置标志174

6.7.5 没有桶形移位器174

6.7.6 简化的立即数175

6.7.7 栈操作175

6.8 Thumb-2介绍175

6.8.1 新的指令176

6.8.2 协处理器178

6.8.3 DSP178

6.8.4 FPU178

6.9 编写Thumb程序179

6.10 本章小结180

第7章 汇编指令183

7.1 传送指令184

7.1.1 MOV184

7.1.2 MVN185

7.1.3 MOVW186

7.1.4 MOVT186

7.1.5 NEG186

7.1.6 示例:从指令流加载32位常量187

7.2 算术运算189

7.2.1 ADD190

7.2.2 ADC190

7.2.3 SUB191

7.2.4 SBC191

7.2.5 RSB191

7.2.6 RSC192

7.2.7 示例:基本数学运算192

7.3 饱和算术运算193

7.3.1 QADD194

7.3.2 QSUB194

7.3.3 QDADD194

7.3.4 QDSUB195

7.4 数据传递195

7.4.1 LDR196

7.4.2 STR197

7.4.3 示例:字符串复制197

7.5 逻辑运算198

7.5.1 AND198

7.5.2 EOR198

7.5.3 ORR199

7.5.4 BIC199

7.5.5 CLZ199

7.6 比较运算199

7.6.1 CMP200

7.6.2 CMN200

7.6.3 TST200

7.6.4 TEQ200

7.7 分支201

7.7.1 B201

7.7.2 BL202

7.7.3 BX202

7.7.4 BLX203

7.7.5 示例:计数到零203

7.7.6 示例:Thumb交互工作203

7.7.7 MOV pc,lr是什么204

7.8 乘法205

7.8.1 MUL205

7.8.2 MLA205

7.8.3 UMULL206

7.8.4 UMLAL206

7.8.5 SMULL206

7.8.6 SMLAL206

7.9 除法207

7.9.1 SDIV208

7.9.2 UDIV208

7.10 多寄存器数据传递208

7.10.1 STM210

7.10.2 LDM210

7.11 桶形移位器210

7.11.1 LSL211

7.11.2 LSR212

7.11.3 ASR212

7.11.4 ROR212

7.11.5 RRX212

7.12 堆栈操作213

7.12.1 PUSH213

7.12.2 POP213

7.12.3 示例:从子例程中返回213

7.13 协处理器指令214

7.13.1 MRC214

7.13.2 MCR215

7.14 其他指令216

7.14.1 SVC216

7.14.2 NOP216

7.14.3 MRS216

7.14.4 MSR217

7.15 本章小结217

第8章 NEON219

8.1 NEON的优点220

8.2 NEON支持的数据类型222

8.3 用汇编语言使用NEON223

8.3.1 寄存器的使用223

8.3.2 加载和存储数据224

8.3.3 优化存储器复制229

8.3.4 NEON指令230

8.4 在C语言中使用NEON231

8.4.1 内部函数描述232

8.4.2 使用NEON内部函数235

8.4.3 将图像转换为灰度图像235

8.5 本章小结239

第9章 调试241

9.1 调试器介绍242

9.1.1 调试器的作用242

9.1.2 ARM的调试功能243

9.2 调试的类型246

9.2.1 循环246

9.2.2 例程247

9.2.3 中断控制器247

9.2.4 引导程序247

9.3 调试器248

9.3.1 GNU调试器248

9.3.2 J-Link gdb调试器250

9.4 调试例程251

9.4.1 无限循环251

9.4.2 未知异常254

9.4.3 被零除255

9.5 深入分析256

9.5.1 数据中止256

9.5.2 损坏的串行线路258

9.5.3 64位计算260

9.5.4 实时响应262

9.6 本章小结263

第10章 编写优化C程序265

10.1 代码优化规则266

10.1.1 不要一开始就优化266

10.1.2 了解编译器266

10.1.3 了解你的代码267

10.2 性能分析267

10.2.1 基于操作系统的性能分析268

10.2.2 基于裸机的性能分析269

10.3 C语言优化272

10.3.1 基本例子273

10.3.2 计数下降,不是上升277

10.3.3 整数278

10.3.4 除法278

10.3.5 不要使用太多参数279

10.3.6 指针,而不是对象280

10.3.7 不要频繁地更新系统存储器280

10.3.8 对齐281

10.4 汇编优化281

10.4.1 特定例程282

10.4.2 处理中断282

10.5 硬件配置优化284

10.5.1 频率调节284

10.5.2 配置缓存284

10.6 本章小结287

第Ⅱ部分 参考291

附录A 术语291

A.1 分支预测291

A.2 缓存292

A.3 缓存命中292

A.4 缓存行293

A.5 缓存缺失293

A.6 协处理器293

A.7 CP10294

A.8 CP11294

A.9 CP14294

A.10 CP15294

A.11 循环295

A.12 异常295

A.13 中断295

A.14 Jazelle296

A.15 JTAG296

A.16 MIPS296

A.17 NEON297

A.18 失序执行297

A.19 流水线297

A.20 寄存器298

A.21 SIMD298

A.22 SOC298

A.23 综合器299

A.24 TrustZone299

A.25 向量表299

附录B ARM架构版本301

B.1 ARMv1302

B.2 ARMv2303

B.3 ARMv3303

B.4 ARMv4305

B.5 ARMv5305

B.6 ARMv6306

B.7 ARMv6-M306

B.8 ARMv7-A/R307

B.9 ARMv7-M307

B.10 ARMv8308

附录C ARM内核版本309

C.1 ARM6309

C.2 ARM7310

C.3 ARM7TDMI310

C.4 ARM8311

C.5 StrongARM311

C.6 ARM9TDMI312

C.7 ARM9E313

C.8 ARM10313

C.9 XSCALE314

C.10 ARM11314

C.11 Cortex315

C.11.1 Cortex-A316

C.11.2 Cortex-R320

C.11.3 Cortex-M321

附录D NEON内联函数和指令325

D.1 数据类型325

D.2 数据通道类型326

D.3 汇编语言指令327

D.4 内联函数命名规则331

附录E 汇编语言指令333

E.1 ARM指令333

E.1.1 算术运算指令333

E.1.2 并行运算337

E.1.3 传送339

E.1.4 加载340

E.1.5 存储342

E.1.6 逻辑343

E.1.7 比较344

E.1.8 饱和344

E.1.9 分支345

E.1.10 扩展347

E.1.11 其他349

E.2 Cortex-M内核中的Thumb指令351

热门推荐