图书介绍

ARM Cortex-M3权威指南 第2版PDF|Epub|txt|kindle电子书版本网盘下载

ARM Cortex-M3权威指南 第2版
  • (英)姚文祥著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302361800
  • 出版时间:2014
  • 标注页数:395页
  • 文件大小:62MB
  • 文件页数:420页
  • 主题词:微处理器-系统设计-指南

PDF下载


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

下载说明

ARM Cortex-M3权威指南 第2版PDF格式电子书版下载

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

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

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

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

图书目录

第1章 介绍1

1.1 ARM Cortex-M3处理器是什么1

1.2 ARM和ARM架构的背景2

1.2.1 历史简介2

1.2.2 架构版本3

1.2.3 处理器命名5

1.3 指令集开发6

1.4 Thumb-2技术和指令集架构7

1.5 Cortex-M3处理器应用7

1.6 本书的组织结构8

1.7 深入阅读8

第2章 Cortex-M3综述10

2.1 基础10

2.2 寄存器11

2.2.1 R0~R12:通用目的寄存器11

2.2.2 R13:栈指针11

2.2.3 R14:链接寄存器12

2.2.4 R15:程序计数器12

2.2.5 特殊寄存器12

2.3 操作模式13

2.4 内置的嵌套向量中断控制器13

2.4.1 支持嵌套中断14

2.4.2 支持向量中断14

2.4.3 支持动态修改优先级14

2.4.4 中断等待减小14

2.4.5 中断屏蔽14

2.5 存储器映射14

2.6 总线接口15

2.7 MPU16

2.8 指令集16

2.9 中断和异常17

2.10 调试支持19

2.11 特点概括19

2.11.1 高性能20

2.11.2 中断处理的高级特性20

2.11.3 低功耗21

2.11.4 系统特性21

2.11.5 调试支持21

第3章 Cortex-M3基础22

3.1 寄存器22

3.1.1 通用目的寄存器R0~R722

3.1.2 通用目的寄存器R8~R1222

3.1.3 栈指针R1322

3.1.4 链接寄存器R1424

3.1.5 程序计数器R1525

3.2 特殊寄存器25

3.2.1 程序状态寄存器26

3.2.2 PRIMASK、FAULTMASK和BASEPRI寄存器27

3.2.3 控制寄存器28

3.3 操作模式29

3.4 异常和中断31

3.5 向量表32

3.6 栈存储操作32

3.6.1 栈的基本操作33

3.6.2 Cortex-M3栈的应用34

3.6.3 Cortex-M3的双栈模型35

3.7 复位流程36

第4章 指令集38

4.1 汇编基础38

4.1.1 汇编语言:基本语法38

4.1.2 汇编语言:后缀的使用39

4.1.3 汇编语言:统一汇编语言40

4.2 指令列表41

4.3 指令描述46

4.3.1 汇编语言:传送数据47

4.3.2 LDR和ADR伪指令50

4.3.3 汇编语言:处理数据51

4.3.4 汇编语言:调用和无条件跳转54

4.3.5 汇编语言:决断和条件跳转56

4.3.6 汇编语言:组合比较和条件跳转59

4.3.7 汇编语言:指令屏障和存储器屏障指令60

4.3.8 汇编语言:饱和运算61

4.4 Cortex-M3上一些有用的指令63

4.4.1 MSR和MRS63

4.4.2 进一步了解IF-THEN指令块64

4.4.3 SDIV和UDIV66

4.4.4 REV、REVH和REVSH66

4.4.5 位反转66

4.4.6 SXTB、SXTH、UXTB和UXTH67

4.4.7 位域清除和位域插入67

4.4.8 UBFX和SBFX68

4.4.9 LDRD和STRD68

4.4.10 表格跳转字节和表格跳转半字69

第5章 存储器系统71

5.1 存储器系统特性概述71

5.2 存储器映射71

5.3 存储器访问属性73

5.4 默认的存储器访问权限75

5.5 位段操作75

5.5.1 位段操作的优势78

5.5.2 不同数据宽度的位段操作81

5.5.3 C程序实现位段操作81

5.6 非对齐传输82

5.7 排他访问84

5.8 端模式85

第6章 Cortex-M3设计综述88

6.1 流水线88

6.2 详细框图89

6.3 Cortex-M3上的总线接口92

6.3.1 I-CODE总线92

6.3.2 D-CODE总线92

6.3.3 系统总线92

6.3.4 外部PPB93

6.3.5 DAP总线93

6.4 Cortex-M3上的其他接口93

6.5 外部PPB94

6.6 典型连接94

6.7 复位类型和复位信号95

第7章 异常97

7.1 异常类型97

7.2 优先级定义98

7.3 向量表103

7.4 中断输入和挂起行为104

7.5 错误异常106

7.5.1 总线错误106

7.5.2 存储器管理错误107

7.5.3 使用错误108

7.5.4 硬件错误109

7.5.5 处理错误110

7.6 请求管理调用和可挂起的服务调用111

第8章 嵌套向量中断控制器和中断控制114

8.1 嵌套向量中断控制器概述114

8.2 基本的中断配置114

8.2.1 中断使能和清除使能115

8.2.2 中断设置挂起和清除挂起116

8.2.3 优先级117

8.2.4 活跃状态117

8.2.5 PRIMASK和FAULTMASK特殊寄存器118

8.2.6 BASEPRI特殊寄存器118

8.2.7 其他异常的配置寄存器119

8.3 设置中断的步骤实例121

8.4 软件中断123

8.5 SYSTICK定时器123

第9章 中断行为126

9.1 中断/异常流程126

9.1.1 压栈126

9.1.2 取向量127

9.1.3 寄存器更新127

9.2 异常退出128

9.3 嵌套中断128

9.4 末尾连锁中断128

9.5 延迟到达129

9.6 进一步了解异常返回值130

9.7 中断等待131

9.8 中断相关的错误132

9.8.1 压栈132

9.8.2 出栈132

9.8.3 取向量132

9.8.4 非法返回132

第10章 Cortex-M3编程133

10.1 概述133

10.2 典型的开发流程133

10.3 使用C134

10.3.1 使用RealView开发组件的简单C程序实例134

10.3.2 使用Keil MDK-ARM编译相同的例程137

10.3.3 用C访问存储器映射的寄存器138

10.3.4 内在函数140

10.3.5 嵌入式汇编和内联汇编141

10.4 CMSIS142

10.4.1 CMSIS背景142

10.4.2 标准化的问题142

10.4.3 CMSIS的组织结构143

10.4.4 使用CMSIS143

10.4.5 CMSIS的优势145

10.5 使用汇编146

10.5.1 汇编和C的接口147

10.5.2 汇编编程的第一步147

10.5.3 生成输出148

10.5.4 “Hello World”实例149

10.5.5 使用数据存储器153

10.6 在信号量中使用排他访问153

10.7 在信号量中使用位段156

10.8 使用位域提取和表格跳转157

第11章 异常编程159

11.1 使用中断159

11.1.1 设置栈159

11.1.2 设置向量表160

11.1.3 设置中断优先级160

11.1.4 使能中断161

11.2 异常/中断处理163

11.3 软件中断165

11.4 向量表重定位实例166

11.5 使用SVC168

11.6 SVC实例:在文字消息输出函数中的应用170

11.7 用C实现SVC172

第12章 高级编程特性和系统行为175

12.1 运行具有两个独立栈的系统175

12.2 双字栈对齐177

12.3 非基本线程使能178

12.4 性能考虑180

12.5 锁定的情况181

12.5.1 锁定期间发生了什么182

12.5.2 避免锁定183

12.6 FAULTMASK183

第13章 存储器保护单元184

13.1 概述184

13.2 MPU寄存器184

13.3 设置MPU189

13.4 典型设置196

第14章 Cortex-M3的其他特性199

14.1 SYSTICK定时器199

14.2 电源管理201

14.2.1 休眠模式201

14.2.2 退出休眠特性203

14.2.3 唤醒中断控制器203

14.3 多处理器通信205

14.4 自复位控制209

第15章 调试架构211

15.1 调试特性概述211

15.2 CoreSight概述211

15.2.1 处理器调试接口212

15.2.2 调试主机接口212

15.2.3 DP模块、AP模块和DAP213

15.2.4 跟踪接口213

15.2.5 CoreSight特点214

15.3 调试模式215

15.4 调试事件217

15.5 Cortex-M3 中的断点219

15.6 调试时访问寄存器内容219

15.7 其他的内核调试特性221

第16章 调试部件222

16.1 概述222

16.2 跟踪部件:DWT223

16.3 跟踪部件:ITM224

16.3.1 使用ITM的软件跟踪225

16.3.2 使用ITM和DWT的硬件跟踪226

16.3.3 ITM时间戳226

16.4 跟踪部件:ETM226

16.5 跟踪部件:TPIU227

16.6 Flash补丁和断点单元229

16.6.1 断点特性229

16.6.2 Flash补丁特性229

16.6.3 比较器229

16.7 高级高性能总线访问端口231

16.8 ROM表232

第17章 Cortex-M3处理器入门235

17.1 选择一款Cortex-M3产品235

17.2 开发工具236

17.2.1 C编译器和调试器236

17.2.2 嵌入式OS支持236

17.3 Cortex-M3版本0和版本1之间的区别238

17.4 Cortex-M3版本1和版本2之间的区别240

17.4.1 双字栈对齐的默认配置240

17.4.2 辅助控制寄存器240

17.4.3 ID寄存器数值更新241

17.4.4 调试特性241

17.4.5 休眠特性241

17.5 版本2新特性的优势和效果242

17.6 Cortex-M3和Cortex-M0之间的区别243

17.6.1 编程模型243

17.6.2 异常和NVIC243

17.6.3 指令集244

17.6.4 存储器系统特性245

17.6.5 调试特性245

17.6.6 兼容性245

第18章 ARM7到Cortex-M3的应用程序移植247

18.1 概述247

18.2 系统特性247

18.2.1 存储器映射247

18.2.2 中断248

18.2.3 MPU248

18.2.4 系统控制249

18.2.5 操作模式249

18.3 汇编语言文件250

18.3.1 Thumb状态250

18.3.2 ARM状态250

18.4 C程序文件252

18.5 重编译的目标文件252

18.6 优化252

第19章 使用GNU工具链开发Cortex-M3254

19.1 背景254

19.2 获得GNU工具链255

19.3 开发流程255

19.4 程序实例256

19.4.1 实例1:第一个程序256

19.4.2 实例2:链接多个文件258

19.4.3 实例3:简单的“Hello World”程序260

19.4.4 实例4:RAM中的数据261

19.4.5 实例5:C程序262

19.4.6 实例6:C实现的重定向265

19.4.7 实例7:编写自己的向量表267

19.5 访问特殊寄存器267

19.6 使用不支持的指令268

19.7 GNU C编译器中的内联汇编268

第20章 Keil RealView微控制器开发套件入门270

20.1 概述270

20.2 μVision入门270

20.3 通过UART输出“Hello World”消息275

20.4 软件测试278

20.5 使用调试器280

20.6 指令集模拟器284

20.7 修改向量表286

20.8 使用CMSIS的秒表中断实例286

20.9 移植现有程序使用CMSIS292

第21章 用NI LabVIEW编程Cortex-M3293

21.1 概述293

21.2 什么是LabVIEW293

21.2.1 典型应用领域294

21.2.2 如何使用LabVIEW和 ARM295

21.3 开发流程295

21.4 LabVIEW工程实例297

21.4.1 创建工程297

21.4.2 定义输入和输出297

21.4.3 创建程序299

21.4.4 构建设计并测试应用程序300

21.5 LabVIEW如何工作302

21.6 LabVIEW的其他特性302

21.7 移植到另外一个ARM处理器304

附录A Cortex-M3指令集和参考资料305

A.1 指令集总结305

A.2 关于指令集介绍308

A.2.1 操作数308

A.2.2 使用PC或SP的限制309

A.2.3 灵活的第二个操作数309

A.2.4 移位操作310

A.2.5 地址对齐312

A.2.6 PC相关语句313

A.2.7 条件执行313

A.2.8 指令宽度选择315

A.3 存储器访问指令316

A.3.1 ADR316

A.3.2 LDR和STR,立即数偏移317

A.3.3 LDR和STR,寄存器偏移319

A.3.4 LDR和STR,非特权320

A.3.5 LDR,PC相关321

A.3.6 LDM和STM322

A.3.7 PUSH和POP324

A.3.8 LDREX和STREX325

A.3.9 CLREX326

A.4 普通数据处理指令327

A.4.1 ADD、ADC、SUB、SBC和RSB328

A.4.2 AND、ORR、EOR、BIC和ORN330

A.4.3 ASR、LSL、LSR、ROR和RRX331

A.4.4 CLZ332

A.4.5 CMP和CMN332

A.4.6 MOV和MOVN333

A.4.7 MOVT335

A.4.8 REV、REV16、REVSH和RBIT335

A.4.9 TST和TEQ336

A.5 乘法和除法指令337

A.5.1 MUL、MLA和MLS337

A.5.2 UMULL、UMLAL、SMULL和SMLAL338

A.5.3 SDIV和UDIV339

A.6 饱和指令340

A.7 位域指令341

A.7.1 BFC和BFI342

A.7.2 SBFX和UBFX342

A.7.3 SXT和UXT343

A.8 跳转和控制指令344

A.8.1 B、BL、BX和BLX344

A.8.2 CBZ和CBNZ346

A.8.3 IT347

A.8.4 TBB和TBH349

A.9 其他指令350

A.9.1 BKPT350

A.9.2 CPS351

A.9.3 DMB352

A.9.4 DSB352

A.9.5 ISB352

A.9.6 MRS353

A.9.7 MSR353

A.9.8 NOP354

A.9.9 SEV355

A.9.10 SVC355

A.9.11 WFE355

A.9.12 WFI356

附录B 16位Thumb指令和架构版本357

附录C Cortex-M3异常快速参考358

附录D 嵌套向量中断控制器和系统控制块寄存器快速参考359

附录E Cortex-M3疑难解答370

E.1 概述370

E.2 开发错误处理371

E.2.1 报告错误状态寄存器371

E.2.2 报告压栈PC和其他压栈寄存器372

E.2.3 读取错误地址寄存器374

E.2.4 清除错误状态位374

E.2.5 其他问题374

E.3 了解错误的原因374

E.4 其他可能的问题377

附录F CodeSourcery G++链接器脚本实例380

附录G CMSIS内核访问函数参考385

G.1 异常和中断编号385

G.2 NVIC访问函数386

G.3 系统和SYSTICK函数388

G.4 内核寄存器访问函数389

G.5 CMSIS内在函数389

G.6 调试消息输出函数390

附录H 调试和跟踪接头391

H.1 概述391

H.2 20针Cortex调试+ETM接头391

H.3 10针Cortex调试接头392

H.4 老式的20针IDC接头392

H.5 老式的38针Mictor接头393

参考文献395

热门推荐