《ARM Cortex-M3权威指南(第2版)》是2014年清华大学出版社出版的图书,作者是Joseph Yiu、吴常玉、程凯。
基本介绍
- 书名:ARM Cortex-M3权威指南(第2版)
- 作者:Joseph Yiu、吴常玉、程凯
- ISBN:9787302361800
- 定价:69元
- 开本:平装
- 印刷日期:2014-7-18
图书简介
从2008年开始,基于CortexM3的单片机以其高性能、低成本及易于使用等诸多优势,已经取代ARM7,成长为32位微控制器的主流。而且由于其诸多特性,之前“ARM9+OS”(如“ARM9+Linux”等)的多种方案,目前也可以由“CortexM3+嵌入式OS”的方式取代。
支持Cortex M3的晶片厂家也在日益增多,包括ST、TI、Atmel等在内的晶片巨头都有多款基于CortexM3的微控制器产品,而且具有Flash及记忆体大小、外设以及运行频率等
图书目录
译者序1
推荐序(一)3
推荐序(二)5
前言7
致谢9
本书约定11
术语和缩写13
第1章介绍
1.1ARM CortexM3处理器是什幺
1.2ARM和ARM架构的背景
1.2.1历史简介
1.2.2架构版本
1.2.3处理器命名
1.3指令集开发
1.4Thumb2技术和指令集架构
1.5CortexM3处理器套用
1.6本书的组织结构
1.7深入阅读
第2章CortexM3综述
2.1基础
2.2暂存器
2.2.1R0~R12: 通用目的暂存器
2.2.2R13: 栈指针
2.2.3R14: 连结暂存器
2.2.4R15: 程式计数器
2.2.5特殊暂存器
2.3操作模式
2.4内置的嵌套向量中断控制器
2.4.1支持嵌套中断
2.4.2支持向量中断
2.4.3支持动态修改优先权
2.4.4中断等待减小
2.4.5中断禁止
2.5存储器映射
2.6汇流排接口
2.7MPU
2.8指令集
2.9中断和异常
2.10调试支持
2.11特点概括
2.11.1高性能
2.11.2中断处理的高级特性
2.11.3低功耗
2.11.4系统特性
2.11.5调试支持
第3章CortexM3基础
3.1暂存器
3.1.1通用目的暂存器R0~R7
3.1.2通用目的暂存器R8~R12
3.1.3栈指针R13
3.1.4连结暂存器R14
3.1.5程式计数器R15
3.2特殊暂存器
3.2.1程式状态暂存器
3.2.2PRIMASK、FAULTMASK和BASEPRI暂存器
3.2.3控制暂存器
3.3操作模式
3.4异常和中断
3.5向量表
3.6栈存储操作
3.6.1栈的基本操作
3.6.2CortexM3栈的套用
3.6.3CortexM3的双栈模型
3.7复位流程
第4章指令集
4.1彙编基础
4.1.1彙编语言: 基本语法
4.1.2彙编语言: 后缀的使用
4.1.3彙编语言: 统一彙编语言
4.2指令列表
4.3指令描述
4.3.1彙编语言: 传送数据
4.3.2LDR和ADR伪指令
4.3.3彙编语言: 处理数据
4.3.4彙编语言: 调用和无条件跳转
4.3.5彙编语言: 决断和条件跳转
4.3.6彙编语言: 组合比较和条件跳转
4.3.7彙编语言: 指令屏障和存储器屏障指令
4.3.8彙编语言: 饱和运算
4.4CortexM3上一些有用的指令
4.4.1MSR和MRS
4.4.2进一步了解IFTHEN指令块
4.4.3SDIV和UDIV
4.4.4REV、REVH和REVSH
4.4.5位反转
4.4.6SXTB、SXTH、UXTB和UXTH
4.4.7位域清除和位域插入
4.4.8UBFX和SBFX
4.4.9LDRD和STRD
4.4.10表格跳转位元组和表格跳转半字
第5章存储器系统
5.1存储器系统特性概述
5.2存储器映射
5.3存储器访问属性
5.4默认的存储器访问许可权
5.5位段操作
5.5.1位段操作的优势
5.5.2不同数据宽度的位段操作
5.5.3C程式实现位段操作
5.6非对齐传输
5.7排他访问
5.8端模式
第6章CortexM3设计综述
6.1流水线
6.2详细框图
6.3CortexM3上的汇流排接口
6.3.1ICODE汇流排
6.3.2DCODE汇流排
6.3.3系统汇流排
6.3.4外部PPB
6.3.5DAP汇流排
6.4CortexM3上的其他接口
6.5外部PPB
6.6典型连线
6.7复位类型和复位信号
第7章异常
7.1异常类型
7.2优先权定义
7.3向量表
7.4中断输入和挂起行为
7.5错误异常
7.5.1汇流排错误
7.5.2存储器管理错误
7.5.3使用错误
7.5.4硬体错误
7.5.5处理错误
7.6请求管理调用和可挂起的服务调用
第8章嵌套向量中断控制器和中断控制
8.1嵌套向量中断控制器概述
8.2基本的中断配置
8.2.1中断使能和清除使能
8.2.2中断设定挂起和清除挂起
8.2.3优先权
8.2.4活跃状态
8.2.5PRIMASK和FAULTMASK特殊暂存器
8.2.6BASEPRI特殊暂存器
8.2.7其他异常的配置暂存器
8.3设定中断的步骤实例
8.4软体中断
8.5SYSTICK定时器
第9章中断行为
9.1中断/异常流程
9.1.1压栈
9.1.2取向量
9.1.3暂存器更新
9.2异常退出
9.3嵌套中断
9.4末尾连锁中断
9.5延迟到达
9.6进一步了解异常返回值
9.7中断等待
9.8中断相关的错误
9.8.1压栈
9.8.2出栈
9.8.3取向量
9.8.4非法返回
第10章CortexM3编程
10.1概述
10.2典型的开发流程
10.3使用C
10.3.1使用RealView开发组件的简单C程式实例
10.3.2使用Keil MDKARM编译相同的例程
10.3.3用C访问存储器映射的暂存器
10.3.4内在函式
10.3.5嵌入式彙编和内联彙编
10.4CMSIS
10.4.1CMSIS背景
10.4.2标準化的问题
10.4.3CMSIS的组织结构
10.4.4使用CMSIS
10.4.5CMSIS的优势
10.5使用彙编
10.5.1彙编和C的接口
10.5.2彙编编程的第一步
10.5.3生成输出
10.5.4“Hello World”实例
10.5.5使用数据存储器
10.6在信号量中使用排他访问
10.7在信号量中使用位段
10.8使用位域提取和表格跳转
第11章异常编程
11.1使用中断
11.1.1设定栈
11.1.2设定向量表
11.1.3设定中断优先权
11.1.4使能中断
11.2异常/中断处理
11.3软体中断
11.4向量表重定位实例
11.5使用SVC
11.6SVC实例:在文字讯息输出函式中的套用
11.7用C实现SVC
第12章高级编程特性和系统行为
12.1运行具有两个独立栈的系统
12.2双字栈对齐
12.3非基本执行绪使能
12.4性能考虑
12.5锁定的情况
12.5.1锁定期间发生了什幺
12.5.2避免锁定
12.6FAULTMASK
第13章存储器保护单元
13.1概述
13.2MPU暂存器
13.3设定MPU
13.4典型设定
第14章CortexM3的其他特性
14.1SYSTICK定时器
14.2电源管理
14.2.1休眠模式
14.2.2退出休眠特性
14.2.3唤醒中断控制器
14.3多处理器通信
14.4自复位控制
第15章调试架构
15.1调试特性概述
15.2CoreSight概述
15.2.1处理器调试接口
15.2.2调试主机接口
15.2.3DP模组、AP模组和DAP
15.2.4跟蹤接口
15.2.5CoreSight特点
15.3调试模式
15.4调试事件
15.5CortexM3中的断点
15.6调试时访问暂存器内容
15.7其他的核心调试特性
第16章调试部件
16.1概述
16.2跟蹤部件:DWT
16.3跟蹤部件:ITM
16.3.1使用ITM的软体跟蹤
16.3.2使用ITM和DWT的硬体跟蹤
16.3.3ITM时间戳
16.4跟蹤部件:ETM
16.5跟蹤部件:TPIU
16.6Flash补丁和断点单元
16.6.1断点特性
16.6.2Flash补丁特性
16.6.3比较器
16.7高级高性能汇流排访问连线埠
16.8ROM表
第17章CortexM3处理器入门
17.1选择一款CortexM3产品
17.2开发工具
17.2.1C编译器和调试器
17.2.2嵌入式OS支持
17.3CortexM3版本0和版本1之间的区别
17.4CortexM3版本1和版本2之间的区别
17.4.1双字栈对齐的默认配置
17.4.2辅助控制暂存器
17.4.3ID暂存器数值更新
17.4.4调试特性
17.4.5休眠特性
17.5版本2新特性的优势和效果
17.6CortexM3和CortexM0之间的区别
17.6.1编程模型
17.6.2异常和NVIC
17.6.3指令集
17.6.4存储器系统特性
17.6.5调试特性
17.6.6兼容性
第18章ARM7到CortexM3的应用程式移植
18.1概述
18.2系统特性
18.2.1存储器映射
18.2.2中断
18.2.3MPU
18.2.4系统控制
18.2.5操作模式
18.3彙编语言档案
18.3.1Thumb状态
18.3.2ARM状态
18.4C程式档案
18.5重编译的目标档案
18.6最佳化
第19章使用GNU工具链开发CortexM3
19.1背景
19.2获得GNU工具链
19.3开发流程
19.4程式实例
19.4.1实例1: 第一个程式
19.4.2实例2: 连结多个档案
19.4.3实例3: 简单的“Hello World”程式
19.4.4实例4: RAM中的数据
19.4.5实例5: C程式
19.4.6实例6: C实现的重定向
19.4.7实例7: 编写自己的向量表
19.5访问特殊暂存器
19.6使用不支持的指令
19.7GNU C编译器中的内联彙编
第20章Keil RealView微控制器开发套件入门
20.1概述
20.2μVision入门
20.3通过UART输出“Hello World”讯息
20.4软体测试
20.5使用调试器
20.6指令集模拟器
20.7修改向量表
20.8使用CMSIS的秒表中断实例
20.9移植现有程式使用CMSIS
第21章用NI LabVIEW编程CortexM3
21.1概述
21.2什幺是LabVIEW
21.2.1典型套用领域
21.2.2如何使用LabVIEW和ARM
21.3开发流程
21.4LabVIEW工程实例
21.4.1创建工程
21.4.2定义输入和输出
21.4.3创建程式
21.4.4构建设计并测试应用程式
21.5LabVIEW如何工作
21.6LabVIEW的其他特性
21.7移植到另外一个ARM处理器
附录ACortexM3指令集和参考资料
A.1指令集总结
A.2关于指令集介绍
A.2.1运算元
A.2.2使用PC或SP的限制
A.2.3灵活的第二个运算元
A.2.4移位操作
A.2.5地址对齐
A.2.6PC相关语句
A.2.7条件执行
A.2.8指令宽度选择
A.3存储器访问指令
A.3.1ADR
A.3.2LDR和STR,立即数偏移
A.3.3LDR和STR,暂存器偏移
A.3.4LDR和STR,非特权
A.3.5LDR,PC相关
A.3.6LDM和STM
A.3.7PUSH和POP
A.3.8LDREX和STREX
A.3.9CLREX
A.4普通数据处理指令
A.4.1ADD、ADC、SUB、SBC和RSB
A.4.2AND、ORR、EOR、BIC和ORN
A.4.3ASR、LSL、LSR、ROR和RRX
A.4.4CLZ
A.4.5CMP和CMN
A.4.6MOV和MOVN
A.4.7MOVT
A.4.8REV、REV16、REVSH和RBIT
A.4.9TST和TEQ
A.5乘法和除法指令
A.5.1MUL、MLA和MLS
A.5.2UMULL、UMLAL、SMULL和SMLAL
A.5.3SDIV和UDIV
A.6饱和指令
A.7位域指令
A.7.1BFC和BFI
A.7.2SBFX和UBFX
A.7.3SXT和UXT
A.8跳转和控制指令
A.8.1B、BL、BX和BLX
A.8.2CBZ和CBNZ
A.8.3IT
A.8.4TBB和TBH
A.9其他指令
A.9.1BKPT
A.9.2CPS
A.9.3DMB
A.9.4DSB
A.9.5ISB
A.9.6MRS
A.9.7MSR
A.9.8NOP
A.9.9SEV
A.9.10SVC
A.9.11WFE
A.9.12WFI
附录B16位Thumb指令和架构版本
附录CCortexM3异常快速参考
附录D嵌套向量中断控制器和系统控制块暂存器快速参考
附录ECortexM3疑难解答
E.1概述
E.2开发错误处理
E.2.1报告错误状态暂存器
E.2.2报告压栈PC和其他压栈暂存器
E.2.3读取错误地址暂存器
E.2.4清除错误状态位
E.2.5其他问题
E.3了解错误的原因
E.4其他可能的问题
附录FCodeSourcery G++连结器脚本实例
附录GCMSIS核心访问函式参考
G.1异常和中断编号
G.2NVIC访问函式
G.3系统和SYSTICK函式
G.4核心暂存器访问函式
G.5CMSIS内在函式
G.6调试讯息输出函式
附录H调试和跟蹤接头
H.1概述
H.220针Cortex调试+ETM接头
H.310针Cortex调试接头
H.4老式的20针IDC接头
H.5老式的38针Mictor接头
参考文献