编辑推荐
在介绍Cortex-M3/M4的书籍中,本书无疑是广受欢迎的一本。一方面,作者本身就是ARM公司的专家,深刻理解Cortex-M3/M4架构的设计;另一方面,作者选取的角度非常合适,既有架构设计的细节,也有程序代码实现示例,而且对容易出现问题的地方进行了说明。是一本不可多得,值得嵌入式开发人员珍藏的图书。本书提供全部示例工程的源代码,下载地址见书中“关于本书”。
内容简介
经过了全 新修订:增加了ARM Cortex—M4l处理器的信息;对 ARM cortex一M3处理器的讲解进行了*新;对于ARM Cortex—M3和ARM Cortex—M4进行了比较,方便其 他多种处理器架构移植到ARMCortex—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以及CooCoxCoIDE工具 入门的章节可以给初学者在编写程序代码方面提供一 些帮助,其中也包括一些重要的软件开发问题,比如 低功耗特性的使用、信息输入/输出的处理、汇编和 c语言的混合编程及其他高级技术话题。
作者简介
Joseph Yiu,英国ARM公司资深专家,14年半导体行业从业经历(在ARM公司工作12年之余)。曾参与多个处理器设计项目,包括ARM Cortex-M3/M4和Cortex-M0,并参与了多种ARM IP(知识产权)产品的开发。Joseph Yiu为微控制器系统级设计专家,并涉猎了诸多相关领域,包括ARM Cortex-M系列微控制器软件开发、微控制器市场以及片上系统设计技术。
精彩书评
由于多种开发工具、调试工具和丰富的工程实例的存在,使用基于ARM Cortex-M3和Cortex-M4处理器的设备是非常简单的。不过, 要想提高应用代码的效率,则需要深入了解硬件架构和软件模型。本书提供的信息对系统架构师和软件工程师都非常重要:既有常见的开发工具,还提供了基于Cortex微控制器软件接口标准(CMSIS)的多个编程实例。另外,本书还涵盖了Cortex-M4处理器的数字信号处理(DSP)特性以及面向模拟应用的CMSIS-DSP库。随着许多嵌入式应用变得越来越复杂以及微控制器的能力的提高,实时操作系统的使用也就更加普遍了。对于这些所有的内容,本书都提供了易于理解的应用实例。
本书适合所有类型的用户:从开始学习小的Cortex-M微控制器项目的学生到需要深入了解处理器特性的系统专家。
——Reinhard Keil(ARM公司MCU工具总监)
目录
第1章 ARM Cortex M处理器简介
1.1 什么是ARM Cortex M处理器
1.2 Cortex M处理器的优势
1.3 ARM Cortex M处理器应用
1.4 ARM处理器和ARM微控制器的资源
1.5 背景和历史
第2章 嵌入式软件开发简介
2.1 ARM微控制器是怎样构成的
2.2 开始时需要准备什么
2.3 软件开发流程
2.4 编译应用程序
2.5 软件流程
2.6 C程序中的数据类型
2.7 输入、输出和外设访问
2.8 微控制器接口
2.9 Cortex微控制器软件接口标准(CMSIS)
第3章 技术综述
3.1 Cortex M3和Cortex M4处理器的一般信息
3.2 Cortex M3和Cortex M4处理器的特性
第4章 架构
4.1架构简介
4.2编程模型
4.3应用程序状态寄存器
4.4存储器系统
4.5异常和中断
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.7Cortex M4特有的指令
5.8桶形移位器
5.9在编程中访问特殊寄存器和特殊指令
第6章 存储器系统
6.1存储器系统特性简介
6.2存储器映射
6.3连接处理器到存储器和外设
6.4存储器需求
6.5存储器的端
6.6数据对齐和非对齐数据访问支持
6.7位段操作
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.8中断控制用的NVIC寄存器细节
7.9用于异常和中断控制的SCB寄存器细节
7.10用于异常或中断屏蔽的特殊寄存器细节
7.11设置中断的步骤示例
7.12软件中断
7.13要点和提示
第8章 深入了解异常处理
8.1简介
8.2异常流程
8.3中断等待和异常处理优化
第9章 低功耗和系统控制特性
9.1低功耗设计
9.2低功耗特性
9.3在编程中使用WFI和WFE
9.4开发低功耗应用
9.5SysTick定时器
9.6自复位
9.7CPU ID基本寄存器
9.8配置控制寄存器
9.9辅助控制寄存器
9.10协处理器访问控制寄存器
第10章 OS支持特性
10.1 OS支持特性简介
10.2影子栈指针
10.3SVC异常
10.4PendSV异常
10.5实际的上下文切换
10.6排他访问和嵌入式OS
第11章 存储器保护单元
11.1MPU简介
11.2MPU寄存器
11.3设置MPU
11.4存储器屏障和MPU配置
11.5使用子区域禁止
11.6使用MPU时的注意事项
11.7MPU的其他用法
11.8与Cortex M0+处理器中的MPU间的差异
第12章 错误异常和错误处理
12.1错误异常简介
12.2错误的原因
12.3使能错误处理
12.4错误状态寄存器和错误地址寄存器
12.5分析错误
12.6异常处理相关的错误
12.7锁定
12.8错误处理
12.9其他信息
第13章 浮点运算
13.1关于浮点数
13.2Cortex M4浮点单元(FPU)
13.3惰性压栈详解
13.4使用浮点单元
13.5浮点异常
13.6要点和提示
第14章 调试和跟踪特性
14.1调试和跟踪特性简介
14.2调试架构
14.3调试模式
14.4调试事件
14.5断点特性
14.6调试部件简介
14.7调试操作
第15章 Keil ARM微控制器开发套件入门
15.1简介
15.2典型的程序编译流程
15.3μVision入门
15.4工程选项
15.5使用IDE和调试器
15.6使用指令集模拟器
15.7在SRAM中运行程序
15.8优化选项
15.9其他信息和要点
第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.6Keil MDK ARM和ARM嵌入式处理器GNU工具一起使用
17.7CoIDE和ARM嵌入式处理器GNU工具一起使用
17.8基于gcc的商业版开发组件
第18章 输入和输出软件实例
18.1产生输出
18.2重定向到指令跟踪宏单元(ITM)
18.3半主机
18.4重定向到外设
第19章 使用嵌入式操作系统
19.1嵌入式OS简介
19.2Keil RTX Real Time Kernel
19.3CMSIS RTOS实例
19.4OS感知调试
19.5疑难解答
第20章 汇编和混合语言工程
20.1汇编代码在工程中的使用
20.2C和汇编间的交互
20.3汇编函数的结构
20.4例子
20.5混合语言工程
20.6内在函数
20.7习语识别
第21章 ARM Cortex M4和DSP应用
21.1微控制器上的DSP
21.2点积实例
21.3传统DSP处理器的架构
21.4Cortex M4的DSP指令
21.5为Cortex M4编写优化的DSP代码
第22章 使用ARM CMSIS DSP库
22.1DSP库简介
22.2预构建的二进制代码
22.3函数命令规则
22.4获得帮助
22.5例1: DTMF解调
22.6例2: 最小二乘法运动跟踪
第23章 高级话题
23.1决断和跳转
23.2性能考虑
23.3双字栈对齐
23.4信号量设计的各种方法
23.5非基本线程使能
23.6中断服务的重入
23.7C语言实现的位数据处理
23.8启动代码
23.9栈溢出检测
23.10Flash补丁特性
23.11Cortex M3和Cortex M4处理器的版本
第24章 软件移植
24.1简介
24.2从8位/16位MCU移植到Cortex M MCU
24.3从ARM7TDMI到Cortex M3/M4的软件移植
24.4不同Cortex M处理器间的软件移植
精彩书摘
《ARM Cortex-M3与Cortex-M4权威指南(第3版)》:
Cortex—M处理器的总线接口为通用总线接口,可通过不同的存储器控制器被连接至不同类型和大小的存储器。微控制器存储器系统中的存储器一般为两种或更多:程序代码用的Flash存储器、数据用的静态RAM(SRAM),有时还会有电可擦除只读存储器(EEPROM)。大多情况下,这些存储器位于芯片内部,实际的存储器接口细节对软件开发人员是不可见的。因此,软件开发人员只需了解程序存储器和SRAM的地址和大小即可。
4.4.2 存储器映射
Cortex—M处理器的4GB地址空间被分为了多个存储器区域,如图4.18所示。区域根据各自典型用法进行划分,它们主要用于:
程序代码访问(如CODF区域)
数据访问(如SRAM区域)
外设(如外设区域)
处理器的内部控制和调试部件(如私有外设总线)
架构的这种安排具有很大的灵活性,存储器区域可用于其他目的。例如,程序既可以在CODE区域执行,也可以在SRAM区域执行,而且微控制器也可以在CODE区域加入SRAM块。
实际上,微控制器设备只会使用每个区域的一小部分作为程序Flash、SRAM和外设,有些区域可能不会用到。
……
前言/序言
前几年,我们见证了ARM Cortex M3处理器不断扩大自己的应用领域,而且Cortex M4也获得了迅速发展。同时,围绕着Cortex M处理器的软件开发工具和多种技术也在不断进步。例如,目前基本上所有的Cortex M设备驱动库都用上了CMSIS Core,而且CMSIS项目也扩展为DSP库软件等多个方面。
在这一版中,我将书的内容进行了一定的调整,以便初学者可以快速理解M3&M4;处理器架构,并提高它们在软件应用中的开发效率。应许多用户的要求,还会介绍几个前面的版本未涉及的高级话题,而且它们在其他的书或者ARM的文档中也没有出现过。在这一版中,还加入了Cortex M4处理器的许多新的信息,比如浮点单元和DSP指令的应用细节,并对一些内容进行了更加深入的介绍。例如,与上一版相比,本书介绍的微控制器软件开发组件更多,其中包括基于CMSIS RTOS API的实时操作系统的一章内容以及多个高级话题的其他信息。
本版还增加了DSP Concepts的CEO Paul Beckmann写的两章内容,DSP Concepts是为ARM开发CMSIS DSP库的公司。我非常高兴能够得到他的帮助,因为他对DSP应用及CMSIS DSP库的深入理解,使得本书对于任何ARM嵌入式软件开发人员都极具价值。
本书既面向嵌入式硬件系统设计人员,也面向软件工程师。由于书中的内容涵盖了从入门知识到许多详细的高级信息,它也适合多种读者使用,其中包括程序员、嵌入式产品设计人员、电子爱好者、研究人员及片上系统(SoC)工程师。若用户想从包括经典的ARM处理器ARM7TDMI在内的其他架构移植到Cortex M微控制器,则可以参考介绍软件移植的一章。
真心希望读者能从本书中找到有用的东西。
我想感谢下面的这些人,他们对本书的第3版提出了建议和反馈:
首先,非常感谢Paul Beckmann博士,他提供了DSP方面的两章内容。DSP运算能力是Cortex M4处理器的一个重要特性,而DSP库则可为开发DSP应用的用户提供非常大的帮助。有了这两章,本书才称得上完整。
其次,我要感谢ARM公司的同事提供的支持,Joey Ye、Stephen Theobald、Graham Cunningham、Edmund Player、Drew Barbier、Chris Shore、Simon Craske和Robert Boys反馈了很多有用的信息。还非常感激ARM嵌入式市场团队的支持,他们是Richard York、Andrew Frame、Neil Werdmuller和Ian Johnson。
我要感谢Keil公司为我解答了许多CMSIS方面问题的Reinhard Keil、Robert Rostohar和Martin Günther,检查EWARM相关内容的IAR Systems的Anders Lundgren,以及检查了Atollic TrueStudio相关内容的Magnus Unemyr。
我还要感谢下面的这些人,他们在我写本书第1版和第2版时提供了帮助,他们是: Dominic Pajak、AlanTringham、Nick Sampays、Dan Brook、David Brash、Haydn Povey、Gary Campbell、Kevin McDermott、Richard Earnshaw、 Shyam Sadasivan、Simon Axford、Takashi Ugajin、Wayne Lyons、Samin Ishtiaq、Dev Banerjee、Simon Smith、Ian Bell、Jamie Brettle、Carlos O’Donell、Brian Barrera和Daniel Jacobowitz。
当然,还得感谢我之前写的书的读者,他们给我提供了很多有用的反馈信息。
另外,感谢Elsevier的各位同人,有了他们专业的工作,本书才得以出版。
最后,特别感谢所有的朋友在我写这本书时给予的支持和理解。
Joseph Yiu
ARM Cortex-M3与Cortex-M4权威指南(第3版) 电子书 下载 mobi epub pdf txt