图书介绍

ARM嵌入式系统开发 软件设计与优化2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

ARM嵌入式系统开发 软件设计与优化
  • (美)Andrew N.Sloss,(英)Dominic Symes,(美)Chris Wright著;沈建华译 著
  • 出版社: 北京:北京航空航天大学出版社
  • ISBN:7810776525
  • 出版时间:2005
  • 标注页数:644页
  • 文件大小:41MB
  • 文件页数:664页
  • 主题词:微处理器,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 RISC设计思想2

1.2 ARM设计思想3

1.3 嵌入式系统的硬件5

1.3.1 ARM总线技术6

1.3.2 AMBA总线协议6

1.3.3 存储器7

1.3.4 外设9

1.4 嵌入式系统的软件10

1.4.1 初始化(启动)代码10

1.4.2 操作系统11

1.4.3 应用程序12

1.5 总结12

第2章 ARM处理器基础14

2.1 寄存器16

2.2 当前程序状态寄存器17

2.2.1 处理器模式18

2.2.2 分组寄存器18

2.2.3 状态和指令集21

2.2.4 中断屏蔽22

2.2.5 条件标志22

2.2.6 条件执行24

2.3 流水线24

2.4 异常、中断及向量表27

2.5 内核扩展28

2.5.1 cache和紧耦合存储器29

2.5.2 存储管理30

2.5.3 协处理器31

2.6 体系结构的不同版本31

2.6.1 命名规则32

2.6.2 体系结构的发展33

2.7 ARM处理器系列34

2.7.1 ARM7系列35

2.7.2 ARM9系列36

2.7.3 ARM10系列37

2.7.4 ARM11系列37

2.7.5 专用处理器37

2.8 总结38

第3章 ARM指令集39

3.1 数据处理指令42

3.1.1 MOVE指令42

3.1.2 桶形移位器43

3.1.3 算术指令46

3.1.4 算术指令使用桶形移位器47

3.1.5 逻辑指令48

3.1.6 比较指令49

3.1.7 乘法指令50

3.2 分支指令51

3.3 load-store指令53

3.3.1 单寄存器传送指令53

3.3.2 单寄存器load-store指令的寻址方式54

3.3.3 多寄存器传送指令57

3.3.4 交换指令65

3.4 软件中断指令66

3.5 程序状态寄存器指令68

3.5.1 协处理器指令69

3.5.2 协处理器15(CP15)指令语法70

3.6 常量的装载71

3.7 ARMv5E扩展72

3.7.1 零计数指令73

3.7.2 饱和算术指令73

3.7.3 ARMv5E乘法指令74

3.8 条件执行75

3.9 总结77

第4章 Thumb指令集78

4.1 Thumb寄存器的使用81

4.2 ARM-Thumb交互82

4.3 其它分支指令84

4.4 数据处理指令84

4.5 单寄存器load-store指令87

4.6 多寄存器load-store指令89

4.7 堆栈指令90

4.8 软件中断指令91

4.9 总结92

第5章 高效的C编程93

5.1 C编译器及其优化概述94

5.2 基本的C数据类型96

5.2.1 局部变量类型97

5.2.2 函数参数类型101

5.2.3 有符号数与无符号数103

5.3 C循环结构104

5.3.1 固定次数的循环104

5.3.2 不定次数的循环107

5.3.3 循环展开108

5.4 寄存器分配111

5.5 函数调用113

5.6 指针别名117

5.7 结构体安排120

5.8 位域124

5.9 边界不对齐数据和字节排列方式(大/小端)127

5.10 除法131

5.10.1 带余数的无符号重复除法133

5.10.2 把除转换为乘133

5.10.3 除数是常数的无符号除法136

5.10.4 除数是常数的有符号除法137

5.11 浮点运算140

5.12 内联函数和内嵌汇编140

5.13 移植问题144

5.14 总结145

第6章 ARM汇编与优化147

6.1 编写汇编代码148

6.2 性能分析和周期计数154

6.3 指令调整154

6.4 寄存器分配162

6.4.1 分配变量给寄存器163

6.4.2 使用超过14个的局部变量166

6.4.3 最大限度地使用寄存器168

6.5 条件执行172

6.6 循环结构174

6.6.1 减计数循环174

6.6.2 展开计数循环175

6.6.3 多层嵌套循环178

6.6.4 其它计数循环181

6.7 位操作182

6.7.1 固定宽度的位域打包和解包182

6.7.2 可变宽度编码的位流打包183

6.7.3 可变宽度编码的位流解包186

6.8 高效的switch188

6.8.1 在范围0≤x<N的switch189

6.8.2 基于通用变量x的switch191

6.9 边界不对齐数据的处理192

6.10 总结196

第7章 基本运算优化197

7.1 双精度整数乘法198

7.1.1 长整型乘法199

7.1.2 128位结果的无符号64位乘法200

7.1.3 128位结果的有符号64位整数乘法201

7.2 整数规格化和前导0计数203

7.2.1 ARMv5及以上体系结构的整数规格化203

7.2.2 在ARMv4体系结构上的规格化204

7.2.3 后缀0计数206

7.3 除法208

7.3.1 通过试探减法实现无符号数除法208

7.3.2 无符号整数的Newton-Raphson除法215

7.3.3 无符号小数Newton-Raphson除法221

7.3.4 有符号数除法228

7.4 平方根229

7.4.1 通过试探减法计算平方根229

7.4.2 使用Newton-Raphson迭代计算平方根231

7.5 超越函数:log,exp,sin,cos233

7.5.1 以2为底的对数运算233

7.5.2 2的乘幂235

7.5.3 三角函数236

7.6 字节顺序反转和位操作239

7.6.1 字节顺序反转240

7.6.2 位变换240

7.6.3 ‘1’位计数243

7.7 饱和及舍入运算244

7.7.1 饱和32位数到16位245

7.7.2 饱和左移245

7.7.3 舍入右移245

7.7.4 饱和的32位加减法245

7.7.5 饱和绝对值246

7.8 随机数产生246

7.9 总结247

第8章 数字信号处理248

8.1 表示一个数字信号250

8.1.1 选择一种表示方法250

8.1.2 操作以定点格式存储的值253

8.1.3 定点信号的加法和减法254

8.1.4 定点信号的乘法255

8.1.5 定点信号的除法256

8.1.6 定点信号的平方根256

8.1.7 小结:数字信号的表示256

8.2 基于ARM的DSP介绍258

8.2.1 ARM7TDMI的DSP259

8.2.2 ARM9TDMI的DSP260

8.2.3 StrongARM的DSP262

8.2.4 ARM9E的DSP264

8.2.5 ARM10E的DSP265

8.2.6 Intel Xscale的DSP267

8.3 FIR滤波器269

8.4 IIR滤波284

8.5 离散傅里叶变换292

8.6 总结304

第9章 异常和中断处理306

9.1 异常处理307

9.1.1 ARM处理器模式及异常307

9.1.2 向量表309

9.1.3 异常优先级310

9.1.4 链接寄存器偏移311

9.2 中断313

9.2.1 分配中断313

9.2.2 中断延迟314

9.2.3 IRQ与FIQ异常315

9.2.4 基本的中断堆栈设计与实现317

9.3 中断处理方法321

9.3.1 非嵌套中断处理321

9.3.2 嵌套中断处理324

9.3.3 可重入中断处理330

9.3.4 优先级简单中断处理334

9.3.5 优先级标准中断处理340

9.3.6 优先级直接中断处理344

9.3.7 优先级分组中断处理347

9.3.8 基于VIC FL190的中断服务例程351

9.4 总结352

第10章 固件353

10.1 固件和引导装载程序354

10.1.1 ARM Firmware Suite357

10.1.2 Red Hat Redboot358

10.2 例子:Sandstone358

10.2.1 Sandstone的目录结构359

10.2.2 Sandstone的代码结构359

10.3 总结364

第11章 嵌入式操作系统365

11.1 基本模块366

11.2 实例:简单小型操作系统SLOS367

11.2.1 SLOS目录结构368

11.2.2 初始化369

11.2.3 存储模型373

11.2.4 中断和异常处理374

11.2.5 调度程序378

11.2.6 上下文切换380

11.2.7 设备驱动程序框架382

11.3 总结383

第12章 高速缓冲存储器cache385

12.1 存储层次和cache387

12.2 cache结构390

12.2.1 cache存储器的基本结构391

12.2.2 cache控制器的基本操作392

12.2.3 cache与主存的关系392

12.2.4 组相联395

12.2.5 写缓冲器399

12.2.6 cache效率的衡量399

12.3 cache策略400

12.3.1 写策略——直写法或回写法400

12.3.2 cache行替换策略401

12.3.3 cache失效时的分配策略404

12.4 协处理器15与cache405

12.5 清除和清理cache406

12.5.1 清除cache407

12.5.2 清理cache410

12.5.3 清理D-cache410

12.5.4 使用路和组索引寻址清理D-cache414

12.5.5 使用test-clean命令清理D-cache417

12.5.6 在Intel XScale SA-110和Intel StrongARM内核中清理D-cache418

12.5.7 清理和清除部分cache421

12.6 cache锁定426

12.6.1 在cache中锁定代码和数据427

12.6.2 通过增加路索引来锁定cache428

12.6.3 使用锁定位锁定cache433

12.6.4 在Intel XScale SA-110中锁定cache行437

12.7 cache与软件性能440

12.8 总结441

第13章 存储器保护单元MPU444

13.1 受保护的区域446

13.1.1 重叠区域447

13.1.2 背景区域448

13.2 初始化MPU,cache和写缓冲器449

13.2.1 定义区域的大小和位置450

13.2.2 访问权限453

13.2.3 设置区域的cache和写缓冲器属性457

13.2.4 使能区域和MPU460

13.3 MPU系统示例461

13.3.1 系统需求462

13.3.2 使用存储器映射分配区域463

13.3.3 初始化MPU464

13.3.4 初始化和配置区域465

13.3.5 完成初始化MPU468

13.3.6 受保护系统的上下文切换469

13.3.7 mpuSLOS470

13.4 总结470

第14章 存储管理单元472

14.1 从MPU到MMU474

14.2 虚存如何工作474

14.2.1 使用页定义区域476

14.2.2 多任务和MMU478

14.2.3 虚存系统的存储器组织480

14.3 ARM MMU的详情482

14.4 页表482

14.4.1 一级页表项483

14.4.2 L1转换表基地址484

14.4.3 二级页表项485

14.4.4 为嵌入式系统选择合适的页大小486

14.5 转换旁路缓冲器487

14.5.1 单步页表搜索487

14.5.2 2步页表搜索488

14.5.3 TLB操作489

14.5.4 TLB锁定490

14.6 域和存储器访问权限491

14.7 cache和写缓冲器493

14.8 协处理器CP15和MMU配置494

14.9 快速上下文切换扩展496

14.9.1 FCSE如何使用页表和域497

14.9.2 使用FCSE的提示499

14.10 示例:一个简单的虚拟存储系统500

14.10.1 第1步:定义固定的系统软件区域501

14.10.2 第2步:为每个任务定义虚存映射502

14.10.3 第3步:在物理存储器中定位区域503

14.10.4 第4步:定义和定位页表503

14.10.5 第5步:定义页表和区域数据结构506

14.10.6 第6步:初始化MMU、Cache和写缓冲器509

14.10.7 第7步:建立上下文切换程序524

14.11 MMUSLOS示例525

14.12 总结525

第15章 ARM体系结构的发展527

15.1 ARMv6对高级DSP和SIMD的支持528

15.1.1 SIMD算法操作529

15.1.2 打包指令532

15.1.3 复数运算支持533

15.1.4 饱和指令534

15.1.5 绝对差值求和指令534

15.1.6 双16位乘法指令535

15.1.7 高位字乘法536

15.1.8 密码算法乘法扩展537

15.2 ARMv6增加的系统和多处理器支持538

15.2.1 混合大小端支持538

15.2.2 异常处理538

15.2.3 多处理同步原语(Multipro-cessing Synchronization Primitives)540

15.3 ARMv6的实现541

15.4 ARMv6之后的未来技术543

15.4.1 TrustZone543

15.4.2 Thumb-2543

15.5 总结544

附录A ARM和Thumb汇编指令546

A.1 如何使用这篇附录547

A.2 语法548

A.2.1 可选表达式548

A.2.2 寄存器548

A.2.3 立即数548

A.2.4 条件和标志549

A.2.5 移位操作550

A.3 按字母顺序列出ARM和Thumb指令551

A.4 ARM汇编速查597

A.4.1 ARM汇编变量598

A.4.2 ARM汇编标注599

A.4.3 ARM汇编表达式600

A.4.4 ARM汇编保留字601

A.5 GNU汇编快速查询608

附录B ARM和Thumb指令编码612

B.1 ARM指令集编码613

B.2 Thumb指令集编码618

B.3 程序状态寄存器620

附录C 处理器与体系结构622

C.1 ARM命名规则623

C.2 内核与体系结构624

附录D 指令周期定时626

D.1 指令周期定时表的使用627

D.2 ARM7TDMI指令周期定时628

D.3 ARM9TDMI指令周期定时630

D.4 StrongARM1指令周期定时631

D.5 ARM9E指令周期定时632

D.6 ARM10E指令周期定时634

D.7 Intel XScale指令周期定时636

D.8 ARM11指令周期定时637

附录E 建议的参考读物642

E.1 ARM参考643

E.2 算法参考643

E.3 存储器管理与cache体系结构(硬件综述与参考)643

E.4 操作系统参考644

热门推荐