第2版 ARM Cortex-M3权威指南


第2版 ARM Cortex-M3权威指南

文章插图
ARM Cortex-M3权威指南(第2版)【第2版 ARM Cortex-M3权威指南】《ARM Cortex-M3权威指南(第2版)》是2014年清华大学出版社出版的图书,作者是Joseph Yiu、吴常玉、程凯 。
基本介绍书名:ARM Cortex-M3权威指南(第2版)
作者:Joseph Yiu、吴常玉、程凯
ISBN:9787302361800
定价:69元
开本:平装
印刷日期:2014-7-18
图书简介从2008年开始,基于CortexM3的单片机以其高性能、低成本及易于使用等诸多优势,已经取代ARM7,成长为32位微控制器的主流 。而且由于其诸多特性,之前“ARM9+OS”(如“ARM9+Linux”等)的多种方案,目前也可以由“CortexM3+嵌入式OS”的方式取代 。支持Cortex M3的晶片厂家也在日益增多,包括ST、TI、Atmel等在内的晶片巨头都有多款基于CortexM3的微控制器产品,而且具有Flash及记忆体大小、外设以及运行频率等图书目录译者序1推荐序(一)3推荐序(二)5前言7致谢9本书约定11术语和缩写13第1章介绍1.1ARM CortexM3处理器是什幺1.2ARM和ARM架构的背景1.2.1历史简介1.2.2架构版本1.2.3处理器命名1.3指令集开发1.4Thumb2技术和指令集架构1.5CortexM3处理器套用1.6本书的组织结构1.7深入阅读第2章CortexM3综述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.7MPU2.8指令集2.9中断和异常2.10调试支持2.11特点概括2.11.1高性能2.11.2中断处理的高级特性2.11.3低功耗2.11.4系统特性2.11.5调试支持第3章CortexM3基础3.1暂存器3.1.1通用目的暂存器R0~R73.1.2通用目的暂存器R8~R123.1.3栈指针R133.1.4连结暂存器R143.1.5程式计数器R153.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.2CortexM3栈的套用3.6.3CortexM3的双栈模型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.4CortexM3上一些有用的指令4.4.1MSR和MRS4.4.2进一步了解IFTHEN指令块4.4.3SDIV和UDIV4.4.4REV、REVH和REVSH4.4.5位反转4.4.6SXTB、SXTH、UXTB和UXTH4.4.7位域清除和位域插入4.4.8UBFX和SBFX4.4.9LDRD和STRD4.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章CortexM3设计综述6.1流水线6.2详细框图6.3CortexM3上的汇流排接口6.3.1ICODE汇流排6.3.2DCODE汇流排6.3.3系统汇流排6.3.4外部PPB6.3.5DAP汇流排6.4CortexM3上的其他接口6.5外部PPB6.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章CortexM3编程10.1概述10.2典型的开发流程10.3使用C10.3.1使用RealView开发组件的简单C程式实例10.3.2使用Keil MDKARM编译相同的例程10.3.3用C访问存储器映射的暂存器10.3.4内在函式10.3.5嵌入式彙编和内联彙编10.4CMSIS10.4.1CMSIS背景10.4.2标準化的问题10.4.3CMSIS的组织结构10.4.4使用CMSIS10.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使用SVC11.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设定MPU13.4典型设定第14章CortexM3的其他特性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模组和DAP15.2.4跟蹤接口15.2.5CoreSight特点15.3调试模式15.4调试事件15.5CortexM3中的断点15.6调试时访问暂存器内容15.7其他的核心调试特性第16章调试部件16.1概述16.2跟蹤部件:DWT16.3跟蹤部件:ITM16.3.1使用ITM的软体跟蹤16.3.2使用ITM和DWT的硬体跟蹤16.3.3ITM时间戳16.4跟蹤部件:ETM16.5跟蹤部件:TPIU16.6Flash补丁和断点单元16.6.1断点特性16.6.2Flash补丁特性16.6.3比较器16.7高级高性能汇流排访问连线埠16.8ROM表第17章CortexM3处理器入门17.1选择一款CortexM3产品17.2开发工具17.2.1C编译器和调试器17.2.2嵌入式OS支持17.3CortexM3版本0和版本1之间的区别17.4CortexM3版本1和版本2之间的区别17.4.1双字栈对齐的默认配置17.4.2辅助控制暂存器17.4.3ID暂存器数值更新17.4.4调试特性17.4.5休眠特性17.5版本2新特性的优势和效果17.6CortexM3和CortexM0之间的区别17.6.1编程模型17.6.2异常和NVIC17.6.3指令集17.6.4存储器系统特性17.6.5调试特性17.6.6兼容性第18章ARM7到CortexM3的应用程式移植18.1概述18.2系统特性18.2.1存储器映射18.2.2中断18.2.3MPU18.2.4系统控制18.2.5操作模式18.3彙编语言档案18.3.1Thumb状态18.3.2ARM状态18.4C程式档案18.5重编译的目标档案 18.6最佳化第19章使用GNU工具链开发CortexM319.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编程CortexM321.1概述21.2什幺是LabVIEW21.2.1典型套用领域21.2.2如何使用LabVIEW和ARM21.3开发流程21.4LabVIEW工程实例21.4.1创建工程21.4.2定义输入和输出21.4.3创建程式21.4.4构建设计并测试应用程式21.5LabVIEW如何工作21.6LabVIEW的其他特性21.7移植到另外一个ARM处理器附录ACortexM3指令集和参考资料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.1ADRA.3.2LDR和STR,立即数偏移A.3.3LDR和STR,暂存器偏移A.3.4LDR和STR,非特权A.3.5LDR,PC相关A.3.6LDM和STMA.3.7PUSH和POPA.3.8LDREX和STREXA.3.9CLREXA.4普通数据处理指令A.4.1ADD、ADC、SUB、SBC和RSBA.4.2AND、ORR、EOR、BIC和ORNA.4.3ASR、LSL、LSR、ROR和RRXA.4.4CLZA.4.5CMP和CMNA.4.6MOV和MOVNA.4.7MOVT A.4.8REV、REV16、REVSH和RBITA.4.9TST和TEQA.5乘法和除法指令A.5.1MUL、MLA和MLSA.5.2UMULL、UMLAL、SMULL和SMLALA.5.3SDIV和UDIVA.6饱和指令A.7位域指令A.7.1BFC和BFIA.7.2SBFX和UBFXA.7.3SXT和UXTA.8跳转和控制指令A.8.1B、BL、BX和BLXA.8.2CBZ和CBNZA.8.3ITA.8.4TBB和TBHA.9其他指令A.9.1BKPTA.9.2CPSA.9.3DMBA.9.4DSBA.9.5ISBA.9.6MRSA.9.7MSRA.9.8NOPA.9.9SEVA.9.10SVCA.9.11WFEA.9.12WFI附录B16位Thumb指令和架构版本附录CCortexM3异常快速参考附录D嵌套向量中断控制器和系统控制块暂存器快速参考附录ECortexM3疑难解答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接头参考文献