编辑推荐

清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》是系统论述ARMCortex-M0与Cortex-M0+处理器及其编程的图书,作者JosephYiu是英国ARM公司的主管工程师,著有久负盛名的畅销图书《ARMCortex-M3与Cortex-M4*威指南(第3版)》(清华大学出版社)。《清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》适合的读者对象包括:嵌入式产品设计工程师、嵌入式软件开发人员、电子爱好者以及学习嵌入式系统课程(ARMCortex-M0与Cortex-M0+)的高年级本科生及研究生等。作者提供了详实的配书工程源文件(见封面下载地址)。
l深度剖析系统模型、指令集以及中断处理,以利于理解ARMCortex-M0与Cortex-M0+的工作方式;
l综合运用汇编语言和C语言实现的丰富的ARMCortex-M0与Cortex-M0+编程案例,有助于快速动手实践;
l系统论述软件的开发流程,并以常用软件开发工具为例,介绍程序设计的实例及如何定位程序代码问题和软件移植等方面的知识;
l全面揭秘从其他架构处理器进行软件移植的方法,包括ARM7TDMI、ARMCortex-M3以及8051微控制器移植的实例;
l深入解析Cortex-M0和Cortex-M0+处理器架构特性的差异(如非特权执行等级、向量表重定位);
l细致分析了Cortex-M0+处理器的优势,比如新的单周期I/O接口、更优的能耗效率、更高的性能以及微跟踪缓冲(MTB)特性;
l详尽介绍了软件开发工具方面的新内容,如KeilMDK版本5、IAREmbeddedWorkbenchforARM、ARMgcc、CooCox及mbed使用示例;
l提供了基于CMSIS-RTOSAPI的KeilRTX实时操作系统的新实例;
l提供了Cortex-M0和Cortex-M0+微控制器使用实例,包括FreescaleFreedom板(FRDM-KL25Z)、STM32F0Discovery、STM32L0Discovery和NXPLPC1114(DIP封装)面包板等。

内容简介

清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》是ARM公司微控制器系统级设计专家JosephYiu的作品。《清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》全面系统论述Cortex-M0与Cortex-M0+的内核、体系结构、指令集、编译器、程序设计及软件移植。《清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》共23章,近700页。深度剖析系统模型、指令集以及中断处理,以利于理解ARMCortex-M0与Cortex-M0+的工作方式;综合运用汇编语言和C语言实现的丰富的ARMCortex-M0与Cortex-M0+编程案例,有助于快速动手实践;系统论述软件的开发流程,并以常用软件开发工具为例,介绍程序设计的实例及如何定位程序代码问题和软件移植等方面的知识;全面揭秘从其他架构处理器进行软件移植的方法,包括ARM7TDMI、ARMCortex-M3以及8051微控制器移植的实例;深入解析Cortex-M0和Cortex-M0+处理器架构特性的差异(如非特权执行等级、向量表重定位);细致分析了Cortex-M0+处理器的优势,比如新的单周期I/O接口、更优的能耗效率、更高的性能以及微跟踪缓冲(MTB)特性;详尽介绍了软件开发工具方面的新内容,如KeilMDK版本5、IAREmbeddedWorkbenchforARM、ARMgcc、CooCox及mbed的实例。另外,为便于读者学习,《清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》提供了完整的案例源代码!

作者简介

JosephYiu英国ARM公司资深专家,12年半导体行业从业经历(在ARM公司工作15年以上)。曾参与多个处理器设计项目,包括ARMCortex-M3和Cortex-M0,并参与了多种ARMIP(知识产权)产品的开发。JosephYiu为微控制器系统级设计专家,并涉猎了诸多相关领域,包括ARMCortex-M系列微控制器软件开发、微控制器市场以及片上系统设计技术。其他代表性著作有《TheDefinitiveGuidetotheARMCortex-M3,2ndEdition》、《TheDefinitiveGuidetoARMCortex-M3andCortex-M4Processors,3rdEdition》(中文翻译版均由清华大学出版社出版发行)。

目录

译者序1

推荐序3

前言5

致谢7

术语和缩写9

清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》约定13

第1章概论

1.1欢迎来到嵌入式处理器的世界

……

1.2理解处理器的类型

……

1.3微控制器内部有什么

……

1.4ARM介绍

……

1.5ARM处理器和ARM微控制器方面的资源

……

第2章技术综述

2.1CortexM0和CortexM0+处理器

2.2模块框图

2.3典型系统

2.4什么是ARMv6M架构

2.5CortexM处理器间的软件可移植性

2.6ARMCortexM0和CortexM0+处理器的优势

……

2.7CortexM0和CortexM0+处理器的应用

……

2.8为什么要在微控制器应用中使用32位处理器

……

第3章嵌入式软件开发介绍

3.1欢迎进入嵌入式系统编程

3.2基本概念

……

3.3ARMCortexM编程介绍

……

3.4软件开发流程

3.5Cortex微控制器软件接口标准

……

3.6软件开发的其他信息

第4章架构

4.1ARMv6M架构综述

……

4.2编程模型

……

4.3存储器系统

……

4.4栈存储操作

4.5异常和中断

4.6嵌套向量中断控制器

……

4.7系统控制块

4.8调试系统

4.9程序映像和启动流程

第5章指令集

5.1指令集是什么

5.2ARM和Thumb指令集背景

5.3汇编基础

……

5.4指令列表

……

5.5伪指令

第6章指令使用示例

6.1概述

6.2程序控制

……

6.3数据访问

……

6.4数据类型转换

……

6.5数据处理

……

第7章存储器系统

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

7.2CortexM0和CortexM0+处理器中的总线系统

7.3存储器映射

……

7.4程序存储器、Bootloader和存储器重映射

……

7.5数据存储器

7.6小端和大端支持

7.7数据类型

7.8存储器属性和存储器访问权限

7.9硬件行为对编程的影响

……

第8章异常和中断

8.1异常和中断的含义

8.2CortexM0和CortexM0+处理器内的异常类型

……

8.3NVIC简介

8.4异常优先级定义

8.5向量表

8.6异常流程概述

……

8.7EXC_RETURN

8.8用于中断控制的NVIC控制寄存器

……

8.9异常屏蔽寄存器(PRIMASK)

8.10中断输入和挂起行为

……

8.11异常入口流程

……

8.12异常退出流程

……

8.13中断等待

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

9.1系统控制寄存器简介

9.2SCB中的寄存器

……

9.3使用自复位特性

9.4使用向量表重定位特性

9.5低功耗特性

……

第10章操作系统支持特性

10.1支持OS的特性概述

10.2嵌入式系统的操作系统介绍

10.3SysTick定时器

……

10.4进程栈和PSP

10.5SVCall异常

10.6PendSV

10.7高级话题:在编程中使用SVC和PendSV

……

10.8高级话题:实际的上下文切换

第11章错误处理

11.1错误异常概述

11.2错误是如何产生的

11.3分析错误

11.4意外切换至ARM状态

11.5实际应用中的错误处理

11.6软件开发期间的错误处理

11.7锁定

……

11.8避免锁定

11.9和ARMv7M架构中错误处理的对比

第12章存储器保护单元

12.1MPU是什么

12.2MPU适用的情形

12.3技术介绍

12.4MPU寄存器

……

12.5设置MPU

12.6存储器屏障和MPU配置

12.7使用子区域禁止

……

12.8使用MPU时的注意事项

……

12.9和CortexM3/M4/M7处理器的MPU间的差异

第13章调试特性

13.1软件开发和调试特性

13.2调试接口

……

13.3调试特性一览

13.4调试系统

13.5暂停模式和调试事件

13.6利用MTB实现指令跟踪

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

14.1Keil微控制器开发套件介绍

……

14.2典型的程序编译流程

14.3硬件介绍

……

14.4μVisionIDE入门

……

14.5使用IDE和调试器

14.6底层内容

……

14.7工程环境的优化

……

14.8使用模拟器

14.9在SRAM中执行程序

14.10使用MTB指令跟踪

第15章IARembeddedworkbenchforARM入门

15.1IARembeddedworkbenchforARM概述

15.2典型的程序编译流程

15.3创建简单的blinky工程

15.4工程选项

15.5在IAREWARM中使用MTB指令跟踪

15.6提示和要点

第16章GCC入门

16.1GCC工具链

16.2关于本章中的例子

16.3典型开发流程

16.4创建简单的Blinky工程

16.5命令行选项概述

16.6Flash编程

16.7在KeilMDKARM中使用ARM嵌入式处理器GNU工具

16.8在CooCoxIDE中使用ARM嵌入式处理器GNU工具

……

第17章mbed入门

17.1什么是mbed

17.2mbed系统是怎么工作的

17.3mbed的优势

17.4设置FRDMKL25Z板和mbed账号

……

17.5创建blinky程序

……

17.6支持的常用外设对象

17.7使用printf

17.8应用实例:火车模型控制器

17.9中断

17.10要点和提示

第18章编程实例

18.1利用通用异步收发器来产生输出

……

18.2实现printf

……

18.3开发输入和输出函数

……

18.4中断编程实例

……

18.5应用实例:火车模型用的另一个控制器

18.6CMSISCORE的不同版本

第19章超低功耗设计

19.1超低功耗使用示例

……

19.2低功耗设计要求

19.3能量去哪里了

19.4开发低功耗应用

……

19.5调试考虑

……

19.6低电压设备的检测

19.6.1ULPBench的背景

19.6.2ULPBenchCP概述

19.7FreescaleKL25Z低功耗特性使用示例

……

19.8LPC1114低功耗特性使用示例

……

第20章嵌入式OS编程

20.1介绍

……

20.2RTXKernel概述

……

20.3在应用中使用RTX

20.4调试RTX应用

20.5疑难解答

……

20.6其他要点和提示

……

第21章混合语言工程

21.1汇编在工程开发中的应用

21.2汇编编程实践和AAPCS

21.3汇编函数概述

……

21.4内联汇编

……

21.5嵌入汇编特性(ARM工具链)

21.6混合语言工程

……

21.7在KeilMDKARM中创建汇编工程

……

21.8用于中断控制的通用汇编代码

……

21.9汇编语言的其他编程技巧

……

21.10使用特殊指令

……

第22章软件移植

22.1概述

22.2从8位/16位微控制器向ARMCortexM移植软件

……

22.3ARM7TDMI和CortexM0/M0+处理器间的差异

……

22.4从ARM7TDMI向CortexM0/CortexM0+处理器移植软件

……

22.5各种CortexM处理器间的差异

……

22.6在CortexM处理器间移植时的通用改动

22.7CortexM0/M0+和CortexM1间的软件移植

22.8CortexM0/M0+和CortexM3间的软件移植

22.9CortexM0/M0+和CortexM4/M7间的软件移植

第23章高级话题

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

23.2C实现的启动代码

23.3栈溢出检测

……

23.4中断服务程序重入

23.5信号量设计

23.6存储器顺序和存储器屏障

附录A指令集快速参考

附录B异常类型快速参考

附录CCMSISCORE快速参考

附录DNVIC、SCB和SysTick寄存器快速参考

附录E调试寄存器快速参考

附录F调试接头分配

附录G疑难解答

附录HARMCortexM0微控制器面包板工程

附录I参考文档

精彩书摘

第5章指令集

5.1指令集是什么
所有的处理器在执行所需操作时,都要执行相应的指令序列,每条指令都定义了一个简单操作,例如简单的ALU运算、对存储器系统的数据访问以及程序跳转操作等。

对于处理器而言,指令是以二进制代码的形式出现的,并且需要由内部硬件(指令解析器)进行解析,然后解析后的指令信息才会被转到执行阶段。简单处理器设计最少也要支持以下类型的指令:

数据处理(加法、减法等算术运算,AND、OR等逻辑运算);
存储器访问指令;
程序流控制指令(跳转、条件跳转以及函数调用)。


另外,ARMCortexM0和CortexM0+处理器中还存在以下用途的指令:

异常和OS支持;
访问特殊寄存器;
休眠操作;
存储器屏障。

ARMCortexM处理器支持的指令集名为Thumb,而CortexM0和CortexM0+处理器则只支持其中的一个子集(56条指令),这些指令多数为16位宽,只有6个是32位的。
表5.1列出了CortexM0/M0+处理器支持的基本的16位Thumb指令。
表5.1CortexM0和CortexM0+处理器支持的16位Thumb指令
……

前言/序言

前言

从2011年开始,嵌入式系统技术有了很大的变化,当时《清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》的第一版刚好出版。2012年,ARM发布了CortexM0+处理器,并在2014年发布了CortexM7。今天,CortexM处理器应用广泛,其中包括多种微控制器、混合信号以及无线通信芯片。
除了处理器设计,嵌入式软件开发技术也有了一定的进步,随着ARMCortexM微控制器的广泛应用,微控制器软件开发人员在开发方面也越发成熟。同时,随着开发组件的优化,人们也在继续改进电池寿命以及能耗效率。

有了这些变化,微控制器用户需要快速适应新的技术,《清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》的这一版也有了许多新信息和内容的提升。除了和CortexM0+处理器有关的信息外,还介绍了使用多种常见开发组件的例子。例如,《清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》详细描述了微控制器低功耗特性的使用,并在一个简单的应用中使用了RTOS。
由于物联网(IoT)受到了越来越多的关注,且正在成为主流,越来越多的人都开始学习嵌入式编程。另外,许多高校在教学方面,也从老式的8位和16位微控制器转向了ARMCortexM等32位处理器。因此,《清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》中的许多部分都进行了重新编写,并且还加入了许多基本的例子,以满足初学者、学生或业余爱好者的需求。
当然,专业嵌入式软件开发人员、研究人员或半导体产品设计人员等许多读者都希望看到一些更加深入的信息,为了满足这些人的需求,《清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》还增加了不少技术细节以及高级应用示例。
希望你能从《清华开发者书库:ARM Cortex-M0与Cortex-M0+权威指南(第2版)》中学到东西,并在下一个项目中使用CortexM处理器时找到乐趣。
学习资源下载地址:http://booksite.elsevier.com/9780128032770。
Joseph




其他推荐