主页 详情

《清华开发者书库 ARM Cortex-M3与Cortex-M4权威指南》_(英)姚文祥著_13878579_9787302402923

【书名】:《清华开发者书库 ARM Cortex-M3与Cortex-M4权威指南》
【作者】:(英)姚文祥著
【出版社】:北京:清华大学出版社
【时间】:2015
【页数】:542
【ISBN】:9787302402923
【SS码】:13878579

最新查询

内容简介

第1章 ARM Cortex-M处理器简介

1.1 什么是ARM Cortex-M处理器

1.1.1 Cortex-M3和Cortex-M4处理器

1.1.2 Cortex-M处理器家族

1.1.3 处理器和微控制器的区别

1.1.4 ARM和微控制器供应商

1.1.5 选择Cortex-M3和Cortex-M4微控制器

1.2 Cortex-M处理器的优势

1.2.1 低功耗

1.2.2 性能

1.2.3 能耗效率

1.2.4 代码密度

1.2.5 中断

1.2.6 易于使用

1.2.7 可扩展性

1.2.8 调试特性

1.2.9 OS支持

1.2.10 多种系统特性

1.2.11 软件可移植性和可重用性

1.2.12 选择(设备、工具和OS等)

1.3 MAR Cortex-M处理器应用

1.4 ARM处理器和ARM微控制器的资源

1.4.1 ARM网站上有什么

1.4.2 微控制器供应商提供的文档

1.4.3 工具供应商提供的文档

1.4.4 其他资源

1.5 背景和历史

1.5.1 ARM简史

1.5.2 ARM处理器的发展

1.5.3 Thumb ISA的架构版本

1.5.4 处理器命名

1.5.5 关于ARM生态系统

第2章 嵌入式软件开发简介

2.1 ARM微控制器是怎样构成的

2.2 开始时需要准备什么

2.2.1 开发组件

2.2.2 开发板

2.2.3 调试适配器

2.2.4 软件设备驱动

2.2.5 例子

2.2.6 文档和其他资源

2.2.7 其他设备

2.3 软件开发流程

2.4 编译应用程序

2.5 软件流程

2.5.1 轮询

2.5.2 中断驱动

2.5.3 多任务系统

2.6 C程序中的数据类型

2.7 输入、输出和外设访问

2.8 微控制器接口

2.9 Cortex微控制器软件接口标准(CMSIS)

2.9.1 CMSIS简介

2.9.2 CMSIS-Core所做的标准化

2.9.3 CMSIS-Core的组织结构

2.9.4 如何使用CMSIS-Core

2.9.5 CMSIS的优势

2.9.6 CMSIS的多个版本

第3章 技术综述

3.1 Cortex-M3和Cortex-M4处理器的一般信息

3.1.1 处理器类型

3.1.2 处理器架构

3.1.3 指令集

3.1.4 模块框图

3.1.5 存储器系统

3.1.6 中断和异常支持

3.2 Cortex-M3和Cortex-M4处理器的特性

3.2.1 性能

3.2.2 代码密度

3.2.3 低功耗

3.2.4 存储器系统

3.2.5 存储器保护单元

3.2.6 中断处理

3.2.7 OS支持和系统级特性

3.2.8 Cortex-M4的特殊特性

3.2.9 易于使用

3.2.10 调试支持

3.2.11 可扩展性

3.2.12 兼容性

第4章 架构

4.1 架构简介

4.2 编程模型

4.2.1 操作模式和状态

4.2.2 寄存器

4.2.3 特殊寄存器

4.2.4 浮点寄存器

4.3 应用程序状态寄存器

4.3.1 整数状态标志

4.3.2 Q状态标志

4.3.3 GE位

4.4 存储器系统

4.4.1 存储器系统特性

4.4.2 存储器映射

4.4.3 栈存储

4.4.4 存储器保护单元(MPU)

4.5 异常和中断

4.5.1 什么是异常

4.5.2 嵌套向量中断控制器(NVIC)

4.5.3 向量表

4.5.4 错误处理

4.6 系统控制块(SCB)

4.7 调试

4.8 复位和复位流程

第5章 指令集

5.1 ARM Cortex-M处理器指令集的背景简介

5.2 ARM Cortex-M处理器间的指令集比较

5.3 理解汇编语言语法

5.4 指令后缀的使用

5.5 统一汇编语言(UAL)

5.6 指令集

5.6.1 处理器内传送数据

5.6.2 存储器访问指令

5.6.3 算术运算

5.6.4 逻辑运算

5.6.5 移位和循环移位指令

5.6.6 数据转换运算(展开和反序)

5.6.7 位域处理指令

5.6.8 比较和测试

5.6.9 程序流控制

5.6.10 饱和运算

5.6.11 异常相关指令

5.6.12 休眠模式相关指令

5.6.13 存储器屏障指令

5.6.14 其他指令

5.6.15 不支持的指令

5.7 Cortex-M4特有的指令

5.7.1 Cortex-M4的增强DSP扩展简介

5.7.2 SIMD和饱和指令

5.7.3 乘法和MAC指令

5.7.4 打包和解包

5.7.5 浮点指令

5.8 桶形移位器

5.9 在编程中访问特殊寄存器和特殊指令

5.9.1 简介

5.9.2 内在函数

5.9.3 内联汇编和嵌入汇编

5.9.4 使用其他的编译器相关的特性

5.9.5 访问特殊寄存器

第6章 存储器系统

6.1 存储器系统特性简介

6.2 存储器映射

6.3 连接处理器到存储器和外设

6.4 存储器需求

6.5 存储器的端

6.6 数据对齐和非对齐数据访问支持

6.7 位段操作

6.7.1 简介

6.7.2 位段操作的优势

6.7.3 不同数据大小的位段操作

6.7.4 C程序实现的位段操作

6.8 默认的存储器访问权限

6.9 存储器访问属性

6.10 排他访问

6.11 存储器屏障

6.12 微控制器中的存储器系统

第7章 异常和中断

7.1 异常和中断简介

7.2 异常类型

7.3 中断管理简介

7.4 优先级定义

7.5 向量表和向量表重定位

7.6 中断输入和挂起行为

7.7 异常流程简介

7.7.1 接受异常请求

7.7.2 异常进入流程

7.7.3 执行异常处理

7.7.4 异常返回

7.8 中断控制用的NVIC寄存器细节

7.8.1 简介

7.8.2 中断使能寄存器

7.8.3 设置中断挂起和清除中断挂起

7.8.4 活跃状态

7.8.5 优先级

7.8.6 软件触发中断寄存器

7.8.7 中断控制器类型寄存器

7.9 用于异常和中断控制的SCB寄存器细节

7.9.1 SCB寄存器简介

7.9.2 中断控制和状态寄存器(ICSR)

7.9.3 向量表偏移寄存器(VTOR)

7.9.4 应用中断和复位控制寄存器(AIRCR)

7.9.5 系统处理优先级寄存器(SCB->SHP[0~11])

7.9.6 系统处理控制和状态寄存器(SCB->SHCSR)

7.10 用于异常或中断屏蔽的特殊寄存器细节

7.10.1 PRIMASK

7.10.2 FAULTMASK

7.10.3 BASEPRI

7.11 设置中断的步骤示例

7.11.1 简单情况

7.11.2 向量表重定位时的情况

7.12 软件中断

7.13 要点和提示

第8章 深入了解异常处理

8.1 简介

8.1.1 关于本章

8.1.2 C实现的异常处理

8.1.3 栈帧

8.1.4 EXC_RETURN

8.2 异常流程

8.2.1 异常进入和压栈

8.2.2 异常返回和出栈

8.3 中断等待和异常处理优化

8.3.1 什么是中断等待

8.3.2 多周期指令执行时的中断

8.3.3 末尾连锁

8.3.4 延迟到达

8.3.5 出栈抢占

8.3.6 惰性压栈

第9章 低功耗和系统控制特性

9.1 低功耗设计

9.1.1 低功耗对微控制器有什么意义

9.1.2 低功耗系统需求

9.1.3 Cortex-M3和Cortex-M4处理器的低功耗特点

9.2 低功耗特性

9.2.1 休眠模式

9.2.2 系统控制寄存器(SCR)

9.2.3 进入休眠模式

9.2.4 唤醒条件

9.2.5 退出时休眠特性

9.2.6 挂起发送事件(SEVONPEND)

9.2.7 休眠扩展/唤醒延迟

9.2.8 唤醒中断控制器(WIC)

9.2.9 事件通信接口

9.3 在编程中使用WFI和WFE

9.3.1 何时使用WFI

9.3.2 使用WFE

9.4 开发低功耗应用

9.4.1 降低动态功耗

9.4.2 降低活跃周期

9.4.3 减小休眠模式电流

9.5 SysTick定时器

9.5.1 为什么要有SysTick定时器

9.5.2 SysTick定时器操作

9.5.3 使用SysTick定时器

9.5.4 其他考虑

9.6 自复位

9.7 CPU ID基本寄存器

9.8 配置控制寄存器

9.8.1 CCR简介

9.8.2 STKALIGN位

9.8.3 BFHFNMIGN位

9.8.4 DIV_O_TRP位

9.8.5 UNALIGN_TRP位

9.8.6 USERSETMPEND位

9.8.7 NONBASETHRDENA位

9.9 辅助控制寄存器

9.10 协处理器访问控制寄存器

第10章 OS支持特性

10.1 OS支持特性简介

10.2 影子栈指针

10.3 SVC异常

10.4 PendSV异常

10.5 实际的上下文切换

10.6 排他访问和嵌入式OS

第11章 存储器保护单元

11.1 MPU简介

11.1.1 关于MPU

11.1.2 使用MPU

11.2 MPU寄存器

11.2.1 MPU类型寄存器

11.2.2 MPU控制寄存器

11.2.3 MPU区域编号寄存器

11.2.4 MPU基地址寄存器

11.2.5 MPU区域基本属性和大小寄存器

11.2.6 MPU别名寄存器

11.3 设置MPU

11.4 存储器屏障和MPU配置

11.5 使用子区域禁止

11.5.1 允许高效的存储器划分

11.5.2 减少所需的区域总数

11.6 使用MPU时的注意事项

11.6.1 程序代码

11.6.2 数据存储器

11.6.3 外设

11.7 MPU的其他用法

11.8 与Cortex-M0+处理器中的MPU间的差异

第12章 错误异常和错误处理

12.1 错误异常简介

12.2 错误的原因

12.2.1 存储器管理(MemManage)错误

12.2.2 总线错误

12.2.3 使用错误

12.2.4 HardFault

12.3 使能错误处理

12.3.1 MemManage错误

12.3.2 总线错误

12.3.3 使用错误

12.3.4 HardFault

12.4 错误状态寄存器和错误地址寄存器

12.4.1 简介

12.4.2 MemManage错误信息

12.4.3 总线错误信息

12.4.4 使用错误信息

12.4.5 HardFault状态寄存器

12.4.6 调试错误状态寄存器(DFSR)

12.4.7 错误地址寄存器MMFAR和BFAR

12.4.8 辅助错误状态寄存器

12.5 分析错误

12.6 异常处理相关的错误

12.6.1 压栈

12.6.2 出栈

12.6.3 惰性压栈

12.6.4 取向量

12.6.5 非法返回

12.6.6 优先级和压栈或出栈错误

12.7 锁定

12.7.1 什么是锁定

12.7.2 避免锁定

12.8 错误处理

12.8.1 用于调试的HardFault

12.8.2 错误屏蔽

12.9 其他信息

12.9.1 运行具有两个栈的系统

12.9.2 检测栈溢出

第13章 浮点运算

13.1 关于浮点数

13.1.1 简介

13.1.2 单精度浮点数

13.1.3 半精度浮点数

13.1.4 双精度浮点数

13.1.5 Cortex-M处理器中的浮点支持

13.2 Cortex-M4浮点单元(FPU)

13.2.1 浮点单元简介

13.2.2 浮点寄存器简介

13.2.3 CPACR寄存器

13.2.4 浮点寄存器组

13.2.5 浮点状态和控制寄存器(FPSCR)

13.2.6 浮点上下文控制寄存器(FPU->FPCCR)

13.2.7 浮点上下文地址寄存器(FPU->FPCAR)

13.2.8 浮点默认状态控制寄存器(FPU->FPDSCR)

13.2.9 介质和浮点特性寄存器(FPU->MVFR0、FPU->MVFR1)

13.3 惰性压栈详解

13.3.1 惰性压栈特性的关键点

13.3.2 第1种情况:被打断的任务中没有浮点上下文

13.3.3 第2种情况:被打断的任务中有浮点上下文,ISR中没有

13.3.4 第3种情况:被打断的任务和ISR中都有浮点上下文

13.3.5 第4种情况:中断嵌套,且第2个中断处理中存在浮点上下文

13.3.6 第5种情况:中断嵌套,且两个中断处理中都存在浮点上下文

13.3.7 惰性压栈的中断

13.3.8 浮点指令的中断

13.4 使用浮点单元

13.4.1 CMSIS-Core中的浮点支持

13.4.2 用C语言实现浮点编程

13.4.3 编译器命令行选项

13.4.4 ABI选项:Hard-vfp和Soft-vfp

13.4.5 特殊的FPU模式

13.5 浮点异常

13.6 要点和提示

13.6.1 微控制器的运行时库

13.6.2 调试操作

第14章 调试和跟踪特性

14.1 调试和跟踪特性简介

14.1.1 什么是调试特性

14.1.2 什么是跟踪特性

14.1.3 调试和跟踪特性总结

14.2 调试架构

14.2.1 CoreSight调试架构

14.2.2 处理器调试接口

14.2.3 调试端口(DP)、访问端口(AP)和调试访问端口(DAP)

14.2.4 跟踪接口

14.2.5 CoreSight的特点

14.3 调试模式

14.4 调试事件

14.5 断点特性

14.6 调试部件简介

14.6.1 处理器调试支持

14.6.2 Flash补丁和断点(FPB)单元

14.6.3 数据监视点和跟踪(DWT)单元

14.6.4 指令跟踪宏单元

14.6.5 嵌入式跟踪宏单元(ETM)

14.6.6 跟踪端口接口单元(TPIU)

14.6.7 ROM表

14.6.8 AHB访问端口(AHB-AP)

14.7 调试操作

14.7.1 调试连接

14.7.2 Flash编程

14.7.3 断点

第15章 Keil ARM微控制器开发套件入门

15.1 简介

15.2 典型的程序编译流程

15.3 μVision入门

15.4 工程选项

15.4.1 Device选项

15.4.2 Target选项

15.4.3 Output选项

15.4.4 Listing选项

15.4.5 User选项

15.4.6 C/C++选项

15.4.7 Asm选项

15.4.8 Linker选项

15.4.9 Debug选项

15.4.10 Utilities选项

15.5 使用IDE和调试器

15.6 使用指令集模拟器

15.7 在SRAM中运行程序

15.8 优化选项

15.9 其他信息和要点

15.9.1 栈和堆存储大小配置

15.9.2 其他信息

第16章 IAR Embedded Workbench for ARM入门

16.1 IAR Embedded Workbench for ARM简介

16.2 典型的程序编译流程

16.3 创建简单的blinky工程

16.4 工程选项

16.5 提示和要点

第17章 GCC入门

17.1 GCC工具链

17.2 典型开发流程

17.3 创建简单的blinky工程

17.4 命令行选项简介

17.5 Flash编程

17.5.1 使用Keil MDK-ARM

17.5.2 使用第三方Flash编程工具

17.6 Keil MDK-ARM和ARM嵌入式处理器GNU工具一起使用

17.7 CoIDE和ARM嵌入式处理器GNU工具一起使用

17.8 基于gcc的商业版开发组件

17.8.1 Atollic TrueSTUDIO for ARM

17.8.2 Red Suite

17.8.3 CrossWorks for ARM

第18章 输入和输出软件实例

18.1 产生输出

18.2 重定向到指令跟踪宏单元(ITM)

18.2.1 简介

18.2.2 Keil MDK-ARM

18.2.3 IAR Embedded Workbench

18.2.4 GCC

18.3 半主机

18.4 重定向到外设

第19章 使用嵌入式操作系统

19.1 嵌入式OS简介

19.1.1 什么是嵌入式OS

19.1.2 何时使用嵌入式OS

19.1.3 CMSIS-RTOS的作用

19.2 Keil RTX Real-Time Kernel

19.2.1 关于RTX

19.2.2 特性简介

19.2.3 RTX和CMSIS-RTOS

19.2.4 线程

19.3 CMSIS-RTOS实例

19.3.1 具有两个线程的简单CMSIS-RTOS

19.3.2 线程间通信简介

19.3.3 信号事件通信

19.3.4 互斥体(MUTEX)

19.3.5 信号量

19.3.6 消息队列

19.3.7 邮件队列

19.3.8 内存池管理特性

19.3.9 通用等待函数和超时数值

19.3.10 定时器特性

19.3.11 访问非特权设备

19.4 OS感知调试

19.5 疑难解答

19.5.1 栈大小和栈对齐

19.5.2 特权等级

19.5.3 其他问题

第20章 汇编和混合语言工程

20.1 汇编代码在工程中的使用

20.2 C和汇编间的交互

20.3 汇编函数的结构

20.4 例子

20.4.1 ARM工具链的简单例子(Keil MDK-ARM、DS-5)

20.4.2 ARM嵌入式处理器GNU工具的简单例子

20.4.3 访问特殊寄存器

20.4.4 数据存储器

20.4.5 Hello world

20.4.6 显示十六进制和十进制的数据

20.4.7 NVIC中断控制

20.4.8 无符号整数平方根

20.5 混合语言工程

20.5.1 从汇编中调用C函数

20.5.2 从C中调用汇编函数

20.5.3 嵌入汇编(Keil MDK-ARM/ARM DS-5 professional)

20.5.4 内联汇编

20.6 内在函数

20.7 习语识别

第21章 ARM Cortex-M4和DSP应用

21.1 微控制器上的DSP

21.2 点积实例

21.3 传统DSP处理器的架构

21.4 Cortex-M4的DSP指令

21.4.1 寄存器和数据类型

21.4.2 小数运算

21.4.3 SIMD数据

21.4.4 加载和存储指令

21.4.5 算术指令

21.4.6 Cortex-M4的一般优化策略

21.4.7 指令限制

21.5 为Cortex-M4编写优化的DSP代码

21.5.1 Biquad滤波器

21.5.2 快速傅里叶变换

21.5.3 FIR滤波器

第22章 使用ARM CMSIS-DSP库

22.1 DSP库简介

22.2 预构建的二进制代码

22.3 函数命令规则

22.4 获得帮助

22.5 例1:DTMF解调

22.5.1 产生正弦波

22.5.2 使用FIR滤波器进行解析

22.5.3 使用FFT进行解析

22.5.4 使用Biquad滤波器进行解析

22.5.5 DTMF示例代码

22.6 例2:最小二乘法运动跟踪

第23章 高级话题

23.1 决断和跳转

23.1.1 条件跳转

23.1.2 复杂的判决树

23.2 性能考虑

23.3 双字栈对齐

23.4 信号量设计的各种方法

23.4.1 用SVC服务实现信号量

23.4.2 使用位段实现信号量

23.5 非基本线程使能

23.6 中断服务的重入

23.7 C语言实现的位数据处理

23.8 启动代码

23.9 栈溢出检测

23.9.1 工具链的栈分析

23.9.2 栈的测试分析

23.9.3 根据栈布局检测栈溢出

23.9.4 使用MPU

23.9.5 使用DWT和调试监控异常

23.9.6 OS上下文切换中的栈检查

23.10 Flash补丁特性

23.11 Cortex-M3和Cortex-M4处理器的版本

23.11.1 简介

23.11.2 Cortex-M3 r0p0到r1p0/r1p1的变动

23.11.3 Cortex-M3 r1p1到r2p0的变动

23.11.4 Cortex-M3 r2p0到r2p1的变动

23.11.5 Cortex-M4 r0p0到r0p1的变动

第24章 软件移植

24.1 简介

24.2 从8位/16位MCU移植到Cortex-M MCU

24.2.1 架构差异

24.2.2 一般调整

24.2.3 存储器大小需求

24.2.4 8位或16位微控制器不再适用的优化

24.2.5 例子:从8051移植到ARM Cortex-M

24.3 从ARM7 TDMI到Cortex-M3/M4的软件移植

24.3.1 硬件差异简介

24.3.2 汇编语言文件

24.3.3 C语言文件

24.3.4 预编译的目标文件和库

24.3.5 优化

24.4 不同Cortex-M处理器间的软件移植

24.4.1 不同Cortex-M处理器间的差异

24.4.2 所需的软件变动

24.4.3 嵌入式OS

24.4.4 创建Cortex-M处理器的可移植程序代码

参考文献


书查询(www.shuchaxun.com)本网页唯一编码:
0afe9f3ebaa70b371384be9237c69a47#356e7f341a982e60e91ad9b8537f37d0#146049033#13878579.pdf