当前位置:首页 > 创业干货 > 正文内容

寄存器传输级(寄存器传输级设计)

admin2周前 (11-19)创业干货8

内容特色

利用ARM Cortex-M3与ARM Cortex-M4来改进你的嵌入式设计的性能和效率!

第3版经过了全新修订:增加了ARM Cortex-M4处理器的信息;对ARM Cortex-M3处理器的讲解进行了更新;对于ARM Cortex-M3和ARM Cortex-M4进行了比较 ,方便其他多种处理器架构移植到ARM Cortex-M3和ARM Cortex-M4。 本版的其他修订细节如下:

新增了论述DSP特性和CMSIS-DSP软件库的两章内容,介绍了DSP的基础知识以及如何编写Cortex-M4的DSP软件,其中包括使用CMSIS-DSP库的实例以及Cortex-M4的DSP性能方面的知识 。

新增了介绍Cortex-M4浮点单元及其使用的一章内容。

新增了介绍嵌入式操作系统的使用(基于CMSIS-RTOS)以及支持嵌入式操作系统的处理器特性的一章内容。

多种调试技术以及疑难解答 。

从其他处理器进行软件移植的内容。

多种易于理解的实例图表以及快速参考附录。

此外 ,本书介绍了ARM架构的背景知识以及指令集 、中断处理等处理器特性,并描述了如何设置并利用存储器保护单元(MPU)等可用的高级特性 。书中论述Keil MDK、IAR EWARM、gcc以及CooCox CoIDE工具入门的章节可以给初学者在编写程序代码方面提供一些帮助,其中也包括一些重要的软件开发问题 ,比如低功耗特性的使用 、信息输入/输出的处理、汇编和C语言的混合编程及其他高级技术话题 。

作者简介

Joseph Yiu 英国ARM公司资深专家 ,14年半导体行业从业经历(在ARM公司工作12年之余)。曾参与多个处理器设计项目,包括ARM Cortex-M3/M4和Cortex-M0,并参与了多种ARM IP(知识产权)产品的开发。Joseph Yiu为微控制器系统级设计专家 ,并涉猎了诸多相关领域,包括ARM Cortex-M系列微控制器软件开发、微控制器市场以及片上系统设计技术 。其他代表性著作有《ARM Cortex-M0权威指南》(简体中文版由清华大学出版社出版) 、《ARM Cortex-M3权威指南(第2版)》(简体中文版由清华大学出版社出版)。

编辑推荐

ARM公司微控制器系统级设计专家Joseph Yiu享誉全球的代表作品

ARM公司微控制器工具总监Reinhard Keil作序

全新改版,系统论述ARM Cortex-M3与Cortex-M4的内核 、体系结构、指令集、编译器 、程序设计及软件移植的经典著作

图书目录

译者序1

推荐序3

前言5

关于本书7

术语和缩写9

本书约定11

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

1.1什么是ARM Cortex-M处理器

1.1.1Cortex-M3和Cortex-M4处理器

1.1.2Cortex-M处理器家族

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

1.1.4ARM和微控制器供应商

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

1.2Cortex-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.9OS支持

1.2.10多种系统特性

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

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

1.3ARM Cortex-M处理器应用

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

1.4.1ARM网站上有什么

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

1.4.3工具供应商提供的文档

1.4.4其他资源

1.5背景和历史

1.5.1ARM简史

寄存器传输级(寄存器传输级设计)  第1张

1.5.2ARM处理器的发展

1.5.3Thumb ISA的架构版本

1.5.4处理器命名

1.5.5关于ARM生态系统

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

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

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.6C程序中的数据类型

2.7输入、输出和外设访问

2.8微控制器接口

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

2.9.1CMSIS简介

2.9.2CMSIS-Core所做的标准化

2.9.3CMSIS-Core的组织结构

2.9.4如何使用CMSIS-Core

2.9.5CMSIS的优势

2.9.6CMSIS的多个版本

第3章技术综述

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

3.1.1处理器类型

3.1.2处理器架构

3.1.3指令集

3.1.4模块框图

3.1.5存储器系统

3.1.6中断和异常支持

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

3.2.1性能

3.2.2代码密度

3.2.3低功耗

3.2.4存储器系统

3.2.5存储器保护单元

3.2.6中断处理

3.2.7OS支持和系统级特性

3.2.8Cortex-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.2Q状态标志

4.3.3GE位

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.1ARM Cortex-M 处理器指令集的背景简介

5.2ARM 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.7Cortex-M4特有的指令

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

5.7.2SIMD和饱和指令

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.4C程序实现的位段操作

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.1SCB寄存器简介

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.1PRIMASK

7.10.2FAULTMASK

7.10.3BASEPRI

7.11设置中断的步骤示例

7.11.1简单情况

7.11.2向量表重定位时的情况

7.12软件中断

7.13要点和提示

第8章深入了解异常处理

8.1简介

8.1.1关于本章

8.1.2C实现的异常处理

8.1.3栈帧

8.1.4EXC_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.3Cortex-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.5SysTick定时器

9.5.1为什么要有SysTick定时器

9.5.2SysTick定时器操作

9.5.3使用SysTick定时器

9.5.4其他考虑

9.6自复位

9.7CPU ID基本寄存器

9.8配置控制寄存器

9.8.1CCR简介

9.8.2STKALIGN位

9.8.3BFHFNMIGN位

9.8.4DIV_O_TRP位

9.8.5UNALIGN_TRP位

9.8.6USERSETMPEND位

9.8.7NONBASETHRDENA位

9.9辅助控制寄存器

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

第10章OS支持特性

10.1OS支持特性简介

10.2影子栈指针

10.3SVC异常

10.4PendSV异常

10.5实际的上下文切换

10.6排他访问和嵌入式OS

第11章存储器保护单元

11.1MPU简介

11.1.1关于MPU

11.1.2使用MPU

11.2MPU寄存器

11.2.1MPU类型寄存器

11.2.2MPU控制寄存器

11.2.3MPU区域编号寄存器

11.2.4MPU基地址寄存器

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

11.2.6MPU别名寄存器

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.7MPU的其他用法

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

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

12.1错误异常简介

12.2错误的原因

12.2.1存储器管理(MemManage)错误

12.2.2总线错误

12.2.3使用错误

12.2.4HardFault

12.3使能错误处理

12.3.1MemManage错误

12.3.2总线错误

12.3.3使用错误

12.3.4HardFault

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

12.4.1简介

12.4.2MemManage错误信息

12.4.3总线错误信息

12.4.4使用错误信息

12.4.5HardFault状态寄存器

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.5Cortex-M处理器中的浮点支持

13.2Cortex-M4浮点单元(FPU)

13.2.1浮点单元简介

13.2.2浮点寄存器简介

13.2.3CPACR寄存器

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种情况: 中断嵌套,且两个中断处理中都存在浮点上

下文

寄存器传输级(寄存器传输级设计)  第2张

13.3.7惰性压栈的中断

13.3.8浮点指令的中断

13.4使用浮点单元

13.4.1CMSIS-Core中的浮点支持

13.4.2用C语言实现浮点编程

13.4.3编译器命令行选项

13.4.4ABI选项: 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.1CoreSight调试架构

14.2.2处理器调试接口

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

14.2.4跟踪接口

14.2.5CoreSight的特点

14.3调试模式

14.4调试事件

14.5断点特性

14.6调试部件简介

14.6.1处理器调试支持

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

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

14.6.4指令跟踪宏单元

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

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

14.6.7ROM表

14.6.8AHB访问端口(AHB-AP)

14.7调试操作

14.7.1调试连接

14.7.2Flash编程

14.7.3断点

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

15.1简介

15.2典型的程序编译流程

15.3μVision入门

15.4工程选项

15.4.1Device选项

15.4.2Target选项

15.4.3Output选项

15.4.4Listing选项

15.4.5User选项

15.4.6C/C++选项

15.4.7Asm选项

15.4.8Linker选项

15.4.9Debug选项

15.4.10Utilities选项

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.1IAR Embedded Workbench for ARM简介

16.2典型的程序编译流程

16.3创建简单的blinky工程

16.4工程选项

16.5提示和要点

第17章GCC入门

17.1GCC工具链

17.2典型开发流程

17.3创建简单的blinky工程

17.4命令行选项简介

17.5Flash编程

17.5.1使用Keil MDK-ARM

17.5.2使用第三方Flash编程工具

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

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

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

17.8.1Atollic TrueSTUDIO for ARM

17.8.2Red Suite

17.8.3CrossWorks for ARM

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

18.1产生输出

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

18.2.1简介

18.2.2Keil MDK-ARM

18.2.3IAR Embedded Workbench

18.2.4GCC

18.3半主机

18.4重定向到外设

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

19.1嵌入式OS简介

19.1.1什么是嵌入式OS

19.1.2何时使用嵌入式OS

19.1.3CMSIS-RTOS的作用

19.2Keil RTX Real-Time Kernel

19.2.1关于RTX

19.2.2特性简介

19.2.3RTX和CMSIS-RTOS

19.2.4线程

19.3CMSIS-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.4OS感知调试

19.5疑难解答

19.5.1栈大小和栈对齐

19.5.2特权等级

19.5.3其他问题

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

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

20.2C和汇编间的交互

20.3汇编函数的结构

20.4例子

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

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

20.4.3访问特殊寄存器

20.4.4数据存储器

20.4.5Hello world

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

20.4.7NVIC中断控制

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内在函数

第21章ARM Cortex-M4和DSP应用

21.1微控制器上的DSP

21.2点积实例

21.3传统DSP处理器的架构

21.4Cortex-M4的DSP指令

21.4.1寄存器和数据类型

21.4.2小数运算

21.4.3SIMD数据

21.4.4加载和存储指令

21.4.5算术指令

21.4.6Cortex-M4的一般优化策略

21.4.7指令限制

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

21.5.1Biquad滤波器

21.5.2快速傅里叶变换

21.5.3FIR滤波器

第22章使用ARM CMSIS-DSP库

22.1DSP库简介

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.5DTMF示例代码

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.7C语言实现的位数据处理

23.8启动代码

23.9栈溢出检测

23.9.1工具链的栈分析

23.9.2栈的测试分析

23.9.3根据栈布局检测栈溢出

23.9.4使用MPU

23.9.5使用DWT和调试监控异常

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

23.10Flash补丁特性

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

23.11.1简介

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

23.11.3Cortex-M3 r1p1到r2p0的变动

23.11.4Cortex-M3 r2p0到r2p1的变动

23.11.5Cortex-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.48位或16位微控制器不再适用的优化

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

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

24.3.1硬件差异简介

24.3.2汇编语言文件

24.3.3C语言文件

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处理器的可移植程序代码

参考文献

附录A~附录I(参见本书配套网站)

书名:ARM Cortex-M3与Cortex-M4权威指南(第3版)

作者:Joseph Yiu

定价:89.00元

扫描二维码推送至手机访问。

版权声明:本文由投资理财研究网发布,如需转载请注明出处。

本文链接:http://www.218s.cn/1497.html

分享给朋友:

相关文章

买基金时,如何选择一个靠谱的基金经理?

主动权益类基金经理,主要要看中长期业绩表现,还有投资风格的稳定性。 像富国天惠成长的朱少醒那样十几年如一日管理一只基金,虽说基金表现每年都不突出,但是十几年下来涨了近14倍! 还有像中欧的周蔚文,兴全的董承非等基金界的绩优老司基是我们投资基...

为什么网上卖的农药比实体店贵?

那是一个虚浮的价格,也可以说是建议零售价,相当于对商品的喊价。而销售商在厂家拿货的成本价是要远远低于这个建议零售价的,也就有了价格浮动空间。就像你去买衣服,一件标价好几百的衣服,通过砍价,你只花了一百元就买下了,让你感觉占到便宜了;而实际上...

为什么新股一字板会有成交量的出现呢,一字板不是封死的么?

一字板正常成交是因为有些人觉得涨停了只要赚到钱就卖出,所以就出现了华大基因有个老太太一开市就卖出错过了后面的将近10万元收益,气得住院的故事。但是我个人认为新股一字板成交主要是为了完成价格的成交,比如新股上市第一天正常是最高涨幅44%,那如...

东兴证券:关于召开2018年第一次临时股东大会的通知

东兴证券股份有限公司董事会决定于2018年10月30日14点00分召开2018年第一次临时股东大会,审议关于修改《东兴证券股份有限公司章程》的议案、东兴证券股份有限公司未来三年(2018年-2020年)股东回报规划、关于修改《东兴证券股份有...

谁知道怎么删除空间好友?

直接删除好友 第一个问题《怎么删除QQ空间里的好友》:1、点“好友”2、点“好友管理”3、鼠标放在不想要的好友头像那,点“不公开”。就没了 第二个问题《现在QQ空间的板式、怎么弄? 》打开空间里点自定义 不是黄钻何必整成黄钻那副脸,简简单单...

出现“平底”形态,跑步入场?

如下图所示,在某一下降趋势中,股票K线下端即最低价在某一水平区域平齐, 这意味着股价在此水平位置连续获得支撑,此区域很可能成为股价调整的阶段性底部区域。这里需要注意的是,平底形态一般多出现在股票走势的波段性调整底部,所谓平底也不要求底部百分...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。