分享
Cortex-M3技术参考手册(中文).pdf
下载文档

ID:3042286

大小:1.67MB

页数:246页

格式:PDF

时间:2024-01-18

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
Cortex M3 技术 参考手册 中文
广州周立功单片机发展有限公司广州周立功单片机发展有限公司 专注的力量成就梦想 专注的力量成就梦想 Cortex-M3 技术参考手册 Cortex-M3 技术参考手册 目录目录 目录 前言前言.1 关于本手册.1 第第 1 章章 概述概述.3 1.1 关于处理器.3 1.2 处理器的组件.4 1.2.1 Cortex-M3 的层次和实现的选项.5 1.2.2 处理器内核.6 1.2.3 NVIC.7 1.2.4 总线矩阵.7 1.2.5 FPB.8 1.2.6 DWT.8 1.2.7 ITM.8 1.2.8 MPU.8 1.2.9 ETM.8 1.2.10 TPIU.8 1.2.11 SW/JTAG-DP.9 1.3 可配置的选项.9 1.3.1 中断.9 1.3.2 MPU.9 1.3.3 ETM.9 1.4 指令集汇总.9 第第 2 章章 编程模型(编程模型(programmer s model).17 2.1 关于编程模型.17 2.1.1 工作模式.17 2.1.2 工作状态.17 2.2 特权访问和用户访问.17 2.2.1 主堆栈和进程堆栈.18 2.3 寄存器.18 2.3.1 通用寄存器.18 2.3.2 特殊用途的程序状态寄存器(xPSR).19 2.4 数据类型.22 2.5 存储器格式.22 2.6 指令集.24 第第 3 章章 系统控制系统控制.26 3.1 处理器寄存器汇总.26 3.1.1 嵌套向量中断控制器的寄存器.26 3.1.2 内核调试寄存器.28 3.1.3 系统调试寄存器.28 3.1.4 调试接口的端口寄存器.31 3.1.5 存储器保护单元的寄存器.32 3.1.6 跟踪端口接口单元的寄存器.32 3.1.7 嵌入式跟踪宏单元的寄存器.33 目录目录 第第 4 章章 存储器映射存储器映射.35 4.1 关于存储器映射.35 4.2 Bit-banding.37 4.2.1 直接访问别名区.38 4.2.2 直接访问 bit-band 区.38 4.3 ROM 存储器表.39 第第 5 章章 异常异常.40 5.1 关于异常模型.40 5.2 异常类型.41 5.3 异常优先级.42 5.3.1 优先级.43 5.3.2 优先级分组.43 5.4 特权和堆栈.44 5.4.1 堆栈.44 5.4.2 特权.44 5.5 占先.45 5.5.1 堆栈.45 5.6 末尾连锁(Tail-chaining).47 5.7 迟来.48 5.8 退出.49 5.8.1 异常退出.49 5.8.2 处理器从 ISR 中返回.50 5.9 复位.51 5.9.1 向量表和复位.51 5.9.2 预期的启动顺序(boot up sequence).52 5.10 异常的控制权转移.54 5.11 设置多个堆栈.54 5.12 中止(abort)模型.56 5.12.1 硬故障.56 5.12.2 局部故障和升级.56 5.12.3 故障状态寄存器和故障地址寄存器.58 5.13 激活等级(activation level).59 5.14 流程图.60 5.14.1 中断处理.60 5.14.2 占先.61 5.14.3 返回.62 第第 6 章章 时钟和复位时钟和复位.64 6.1 Cortex-M3 时钟.64 6.2 Cortex-M3 复位.65 6.3 Cortex-M3 复位方式.65 6.3.1 上电复位.65 6.3.2 系统复位.66 6.3.3 JTAG-DP 复位.67 6.3.4 SW-DP 复位.67 目录目录 6.3.5 正常工作.67 第第 7 章章 电源管理电源管理.68 7.1 电源管理概述.68 7.2 系统电源管理.68 7.2.1 SLEEPING.69 7.2.2 SLEEPDEEP.69 第第 8 章章 嵌套向量中断控制器嵌套向量中断控制器.70 8.1 NVIC 概述.70 8.2 NVIC 编程器模型.70 8.2.1 NVIC 寄存器映射.70 8.2.2 NVIC 寄存器描述.73 8.3 电平中断与脉冲中断.97 第第 9 章章 存储器保护单元存储器保护单元.98 9.1 MPU 概述.98 9.2 MPU 编程器模型.98 9.2.1 MPU 寄存器纵览.98 9.2.2 描述 MPU 寄存器.99 9.2.3 使用重叠寄存器访问 MPU.105 9.2.4 子区域.105 9.3 MPU 访问权限.106 9.4 MPU 异常中止.107 9.5 更新 MPU 区域.107 9.5.1 使用 CP15 等效代码更新 MPU 区域.107 9.5.2 使用两个或三个字来更新 MPU 区域.108 9.6 中断和更新 MPU.109 第第 10 章章 内核调试内核调试.110 10.1 关于内核调试.110 10.1.1 停止模式调试.110 10.1.2 退出内核调试.110 10.2 内核调试寄存器.111 10.2.1 调试停止控制和状态寄存器.111 10.2.2 调试内核选择寄存器.113 10.2.3 调试内核寄存器的数据寄存器.114 10.2.4 调试异常和监控控制寄存器.115 10.3 内核调试访问实例.117 10.4 在内核调试中使用应用寄存器.117 第第 11 章章 系统调试系统调试.118 11.1 关于系统调试.118 11.2 系统调试访问.119 11.3 系统调试的编程模型.120 11.4 Flash 修补和断点.121 11.4.1 FPB 的编程模型.121 11.5 数据观察点和跟踪.125 11.5.1 DWT 寄存器总结及描述.125 目录目录 11.6 仪表跟踪宏单元.135 11.6.1 ITM 寄存器总结和描述.135 11.7 AHB 访问端口.141 11.7.1 AHB-AP 处理类型.141 11.7.2 AHB-AP 寄存器总结和描述.141 第第 12 章章 调试端口调试端口.145 12.1 关于调试端口.145 12.2 JTAG-DP.146 12.2.1 扫描链接口.146 12.2.2 IR 扫描链和 IR 指令.148 12.2.3 DR 扫描链和 DR 寄存器.151 12.3 SW-DP.157 12.3.1 时钟.157 12.3.2 调试接口概述.158 12.3.3 协议操作概述.159 12.3.4 协议描述.162 12.3.5 传输时序.169 12.4 调试端口(DP)的通用特性.170 12.4.1 Sticky 标志和 DP 错误响应.170 12.4.2 读和写错误.171 12.4.3 溢出检测.171 12.4.4 协议错误,只用于 SW-DP.172 12.4.5 推动比较和推动验证操作.172 12.5 调试端口的编程模型.174 12.5.1 JTAG-DP 寄存器.174 12.5.2 SW-DP 寄存器.175 12.5.3 调试端口(DP)的寄存器描述.176 第第 13 章章 跟踪端口的接口单元跟踪端口的接口单元.186 13.1 关于跟踪端口的接口单元.186 13.1.1 TPIU 方框图.186 13.1.2 TPIU 组件.187 13.1.3 TPIU 输入和输出.188 13.2 TPIU 寄存器.189 13.2.1 TPIU 寄存器汇总.189 13.2.2 TPIU 寄存器描述.189 第第 14 章章 总线接口总线接口.194 14.1 关于总线接口.194 14.2 ICode 总线接口.194 14.2.1 分支状态信号.195 14.3 DCode 总线接口.195 14.3.1 专用.195 14.3.2 存储器属性.196 14.4 系统接口.196 14.4.1 不对齐访问.196 目录目录 14.4.2 Bit-band 访问.196 14.4.3 Flash 修补重新映射.196 14.4.4 独占访问(exclusive access).196 14.4.5 存储器属性.196 14.4.6 流水线式取指.196 14.5 外部专用外设接口.197 14.6 访问的对齐情况.197 14.7 横跨区域的不对齐访问.198 14.8 Bit-band 访问.198 14.9 写缓冲区.199 14.10 存储器属性.199 第第 15 章章 嵌入式跟踪宏单元嵌入式跟踪宏单元.200 15.1 ETM 概述.200 15.1.1 ETM 框图.200 15.1.2 ETM 资源.201 15.2 数据跟踪.202 15.3 ETM 资源.202 15.3.1 周期性同步(periodic synchronization).202 15.3.2 数据和指令地址比较资源.202 15.3.3 FIFO 功能.203 15.4 跟踪输出.203 15.5 ETM 结构.203 15.5.1 可重新开始的指令.203 15.5.2 异常返回.203 15.5.3 异常跟踪.204 15.6 ETM 编程器模型.205 15.6.1 APB 接口.205 15.6.2 ETM 寄存器列表.206 15.6.3 描述 ETM 寄存器.207 第第 16 章章 嵌入式跟踪宏单元的接口嵌入式跟踪宏单元的接口.209 16.1 ETM 接口概述.209 16.2 CPU ETM 接口端口描述.209 16.3 分支状态接口.210 第第 17 章章 指令周期定时指令周期定时.213 17.1 关于指令周期定时.213 17.2 处理器的指令周期定时.213 17.3 加载/存储(Load-store)执行时序.216 附录附录 A 信号描述信号描述.218 A.1 时钟.218 A.2 复位.218 A.3 杂项.218 A.4 中断接口.219 A.5 ICode 接口.219 A.6 DCode 接口.220 目录目录 A.7 系统总线接口.221 A.8 专用外设总线接口.221 A.9 ITM 接口.222 A.10 AHB-AP 接口.222 A.11 ETM 接口.223 A.12 测试接口.223 附录附录 B 术语表术语表.224 附录附录 C 周立功公司相关信息周立功公司相关信息.236 前言前言 1前言前言 前言部分概述了 Cortex-M3 r0p0技术参考手册,包括以下内容:?关于本手册?信息反馈 关于本手册关于本手册 本手册是关于 Cortex-M3 处理器的技术参考手册。产品修订状态产品修订状态 rnpn 标识符表示本手册中所述产品的修订状态。rn 表示产品的主要修改。pn 表示产品的细微修改。目标读者目标读者 本手册是为基于 Cortex-M3 处理器来实现片上系统(SoC)器件的系统设计人员,系统整合人员,以及验证工程师而写的。本手册的使用本手册的使用 本手册按以下章节组织:第 1 章 概述 本章描述了 Cortex-M3 处理器的组件以及处理器的指令集。第 2 章 编程模型(programmers model)本章描述了 Cortex-M3 的寄存器集,工作模式,和其它与 Cortex-M3 处理器的编程相关的信息。第 3 章 系统控制 本章描述了系统控制的寄存器和编程模型。第 4 章 存储器映射 本章描述了处理器映射和 bit-banding 特性。第 5 章 异常 本章描述了处理器的异常。第 6 章 时钟与复位 本章描述了处理器的时钟和复位。第 7 章 功率管理 本章描述了处理器功率管理和节电技术 第 8 章 嵌套向量中断控制器 本章描述了处理器中断处理和控制 前言前言 2第 9 章 存储器保护单元 本章描述了处理器的存储器保护单元 第 10 章 内核调试 本章描述了对处理器内核的调试和测试处理。第 11 章 系统调试 本章描述了处理器系统调试组件。第 12 章 调试端口 本章描述了处理器调试端口,JTAG 调试端口和串行线调试端口。第 13 章 跟踪端口接口单元 本章描述了处理器的跟踪端口接口单元(TPIU)。第 14 章 总线接口 本章描述了处理器的总线接口。第 15 章 嵌入式跟踪宏单元 本章描述了处理器的嵌入式跟踪宏单元(ETM)第 16 章 嵌入式跟踪宏单元接口 本章描述了处理器的 ETM 接口 第 17 章 指令时序 本章描述了处理器的指令时序和时钟周期 附录 A 信号描述 本章汇总了 Cortex-M3 信号。第 1 章 概述第 1 章 概述 3第第1章 概述章 概述 本章简要介绍了 Cortex-M3 处理器和指令集,包含以下内容:?关于处理器?处理器的组件?可配置选项?指令集汇总 1.1 关于处理器关于处理器 Cortex-M3 是一款低功耗处理器,具有门数目少,中断延迟短,调试成本低的特点,是为要求有快速中断响应能力的深度嵌入式应用而设计的。该处理器采用 ARMv7-M 架构。Cortex-M3 处理器整合了以下组件:?处理器内核。这款门数目少,中断延迟短的处理器具备以下特性:ARMv7-M:Thumb-2 ISA 子集,包含所有基本的 16 位和 32 位 Thumb-2 指令,用于多媒体,SIMD,E(DSP)和 ARM 系统访问的模块除外。只有分组的 SP 硬件除法指令,SDIV 和 UDIV(Thumb-2 指令)处理模式(handler mode)和线程模式(thread mode)Thumb 状态和调试状态 可中断-可继续(interruptible-continued)的 LDM/STM,PUSH/POP,实现低中断延迟。自动保存和恢复处理器状态,可以实现低延迟地进入和退出中断服务程序(ISR)。支持 ARMv6 架构 BE8/LE ARMv6 非对齐访问?嵌套向量中断控制器(NVIC)。它与处理器内核紧密结合实现低延迟中断处理,并具有以下特性:外部中断可配置为 1240 个 优先级位可配置为 38 位 中断优先级可动态地重新配置 优先级分组。分为占先中断等级和非占先中断等级 支持末尾连锁(tail-chaining)和迟来(late arrival)中断。这样,在两个中断之间没有多余的状态保存和状态恢复指令的情况下,使能背对背中断(back-to-back interrupt)处理。处理器状态在进入中断时自动保存,中断退出时自动恢复,不需要多余的指令。?存储器保护单元(MPU)。MPU 功能可选,用于对存储器进行保护,它具有以下特性:第 1 章 概述第 1 章 概述 4 8 个存储器区 子区禁止功能(SRD),实现对存储器区的有效使用。可使能背景区,执行默认的存储器映射属性。?总线接口 AHBLite ICode、DCode 和系统总线接口 APB 专用外设总线(PPB)接口 Bit band 支持,bit-band 的原子写和读访问。存储器访问对齐 写缓冲区,用于缓冲写数据。?低成本调试解决方案,具有以下特性:当内核正在运行、被中止、或处于复位状态时,能对系统中包括 Cortex-M3 寄存器组在内的所有存储器和寄存器进行调试访问。串行线(SW-DP)或 JTAG(JTAG-DP)调试访问,或两种都包括。Flash 修补和断点单元(FPB),实现断点和代码修补。数据观察点和触发单元(DWT),实现观察点,触发资源和系统分析(system profiling)仪表跟踪宏单元(ITM),支持对 printf 类型的调试。跟踪端口的接口单元(TPIU),用来连接跟踪端口分析仪。可选的嵌入式跟踪宏单元(ETM),实现指令跟踪。1.2 处理器的组件处理器的组件 这节内容描述了 Cortex-M3 处理器的组件,系统的主要模块包括:?处理器内核?NVIC?总线矩阵?FPB?DWT?ITM?MPU?ETM?TPIU 图 1-1 显示了 Cortex-M3 处理器的结构。第 1 章 概述第 1 章 概述 5NVICCM3内核MPUFPBSW/JTAG-DPAHB-APDWTAPBi/fITMTPIUROM表ETM中断睡眠调试指令数据跟踪端口串行线或多管脚专用外设总线(外部)I-code 总线D-code 总线系统总线触发专用外设总线(内部)Cortex-M3SLEEPINGSLEEPDEEPINTERRUPT239:0NMISW/JTAG 图图 1-1 Cortex-M3 模块框图模块框图 注:ETM 和 MPU 是可选的,您的系统实现中可以不具有这两个组件。1.2.1 Cortex-M3 的层次和实现的选项的层次和实现的选项 如图 1-1 所示,Cortex-M3 处理器的组件存在于两个层次等级中。它向我们展示了设计的 RTL 层次。由于 ETM、TPIU、SW/JTAG-DP 和 ROM 表 4 个组件是可选的,或者它们的实现和使用具有灵活性(或者执行和使用它们的方式非常灵活),因此这 4 个组件位于Cortex-M3 处理器的外面。您的实现可能与图 1-1 中显示的有所不同。可能的系统实现的选项见下面的 3 个部分。TPIU TPIU 的实现选项:?如果您的系统中有 ETM,则会含有 TPIU 格式程序,否则就不包含该格式程序。?一个多内核的实现可使用单个或多个 TPIU 来跟踪。?ARM TPIU 模块可以用兼容 TPIU 的指定合作伙伴的 CoreSight 取代。?在生产设备中,TPIU 可以移除。注:如果将 TPIU 移除,则 Cortex-M3 不具有跟踪功能。SW/JTAG-DP SW/JTAG-DP 的实现选项:?您的实现可以含有 SW-DP 或 JTAG-DP 中的任一个或两者都有。?ARM SW-DP 可以被兼容 SW-DP 的指定合作伙伴的 CoreSight 取代。第 1 章 概述第 1 章 概述 6?ARM JTAG-DP 可以被兼容 JTAG-DP 的指定合作伙伴的 CoreSight 取代。?SW-DP 或 JTAG-DP 可以包含指定合作伙伴的测试接口。ROM 表表 如果系统中添加了附加的调试元件,则 ROM 存储器表中的描述需进行修改。1.2.2 处理器内核处理器内核 Cortex-M3 处理器内核采用 ARMv7-M 架构,其主要特性如下:?Thumb-2 指令集架构(ISA)的子集,包含所有基本的 16 位和 32 位 Thumb-2 指令。?哈佛处理器架构,在加载/存储数据的同时能够执行指令取指。?三级流水线?32 位单周期乘法?硬件除法?Thumb 状态和调试状态?处理模式和线程模式?ISR 的低延迟进入和退出 无需多余指令就可实现处理器状态的保存和恢复。在保存状态的同时从存储器中取出异常向量,实现更加快速地进入 ISR。中断控制器的紧密式耦合接口,能够有效地处理迟来中断。采用末尾连锁(tail-chaining)中断技术,在两个中断之间没有多余的状态保存和恢复指令的情况下,处理背对背中断(back-to-back interrupt)。?可中断-可继续(interruptible-continued)的 LDM/STM,PUSH/POP。?ARMv6 类型 BE8/LE 支持?ARMv6 非对齐访问 处理器内核的相关内容将在下面各章中进一步描述。寄存器 寄存器 Cortex-M3 处理器包含:?13 个通用的 32 位寄存器?链接寄存器(LR)?程序计数器(PC)?程序状态寄存器,xPSR?两个分组的 SP 寄存器 存储器接口 存储器接口 Cortex-M3 处理器采用哈佛接口,在数据加载/存储的同时能够执行指令取指。存储器访问由下面的部件控制:?一个独立的加载存储单元(LSU),与来自 ALU 的加载和存储操作是分离的。?一个 3 字的入口预取指单元(entry prefetch unit)。一次取一个字。在取这个字时,第 1 章 概述第 1 章 概述 7可以使用 2 种 thumb 指令,字对齐的 thumb-2 指令或半字对齐的 thumb-2 指令的高/低半字。所有来自内核的取地址操作都是字对齐的。如果是半字对齐的,则需要两次取指操作才能完成 thumb-2 指令的取指。而 3 字入口的预取指缓冲区确保了只有第一个被取出的半字的 thumb-2 指令才需要一个暂停周期(stall cycle)。1.2.3 NVIC NVIC 与处理器内核是紧密耦合的,这样可简化低延迟的异常处理。NVIC 主要特性包括:?外部中断可配置为 1240 个?优先级的位可配置为 38 位?支持电平和边沿中断?中断优先级可动态地重新配置?优先级分组?支持末尾连锁(tail-chaining)中断技术?处理器状态在进入中断时自动保存,中断返回时自动恢复,不需要多余的指令。NVIC 的详细描述见第 8 章嵌套向量中断控制器。1.2.4 总线矩阵总线矩阵 总线矩阵用来将处理器和调试接口与外部总线相连。总线矩阵与下面的外部总线相连:?ICode 总线,该总线用于从代码空间取指令和向量,是 32 位 AHBLite 总线。?DCode 总线,该总线用于对代码空间进行数据加载/存储以及调试访问,是 32 位AHBLite 总线。?系统总线,该总线用于对系统空间执行取指令和向量,数据加载/存储以及调试访问,是 32 位 AHBLite 总线。?PPB,该总线用于对 PPB 空间进行数据加载/存储以及调试访问,是 32 位 APB(v2.0)总线。总线矩阵还对以下方面进行控制:?非对齐访问。总线矩阵将非对齐的处理器访问转换为对齐访问。?Bit-banding。总线矩阵将 bit-band 别名访问转换为对 bit-band 区的访问。它执行以下功能:对 bit-band 加载进行位域提取 对 bit-band 存储进行原子读修改写?写缓冲。总线矩阵包含一个单入口写缓冲区,该缓冲区使得处理器内核不受到总线延迟的影响。总线接口的详细描述见第 14 章总线接口。第 1 章 概述第 1 章 概述 81.2.5 FPB FPB 单元实现硬件断点以及从代码空间到系统空间的修补访问,FPB 有 8 个比较器:?6 个指令比较器,能够单独配置,实现将代码空间的指令取指重新映射到系统空间,或实现硬件断点。?两个 literal 比较器,将代码空间的 literal 访问重新映射到系统空间。FPB 的详细描述见第 11 章系统调试。1.2.6 DWT DWT 单元集成了以下调试功能:?DWT 包含 4 个比较器,其中的任一个都可配置为硬件观察点、ETM 触发、PC 采样事件触发、或数据地址采样事件触发。?包含几个用于性能分析(performance profiling)的计数器。?能够配置为以定义的间隔发送 PC 采样,以及发送中断事件信息。DWT 的详细描述见第 11 章系统调试。1.2.7 ITM ITM 是一个应用导向(application driven)的跟踪源,支持对应用事件的跟踪和 printf类型的调试。ITM 提供以下跟踪信息源:?软件跟踪,软件能够直接写入 ITM 激励寄存器(stimulus register),从而完成信息包的发出操作。?硬件跟踪,这些信息包由 DWT 产生,并由 ITM 发出。?时间戳(time stamping),时间戳要根据信息包来发送。TIM 的详细描述见第 11 章系统调试。1.2.8 MPU 如果希望向处理器提供存储器保护,则可以使用可选的 MPU。MPU 对访问允许和存储器属性进行检验。它包含 8 个区和一个可选的执行默认存储器映射访问属性的背景区。MPU 的详细描述见第 9 章存储器保护单元。1.2.9 ETM ETM 是只支持指令跟踪的低成本跟踪宏单元。ETM 的详细描述见第 15 章嵌入式跟踪宏单元。1.2.10 TPIU TPIU 用作来自 ITM 和 ETM(如果存在)的 Cortex-M3 跟踪数据与片外跟踪端口分析仪之间的桥接。TPIU 可配置为支持低成本调试的串行管脚跟踪,或用于更高带宽跟踪的多管脚跟踪。TPIU 与 CoreSight 是兼容的。TPIU 的详细描述见第 13 章跟踪端口的接口单元。第 1 章 概述第 1 章 概述 91.2.11 SW/JTAG-DP Cortex-M3 处理器可配置为具有 SW-DP 或 JTAG-DP 调试端口的接口,或两者都有。这两个调试端口提供对系统中包括处理器寄存器在内的所有寄存器和存储器的调试访问。SW/JTAG-DP 的详细描述见第 12 章调试端口。1.3 可配置的选项可配置的选项 这节描述处理器的配置选项,若想确认您的实现的配置,请联系您的 implementor。1.3.1 中断中断 外部中断可配置为 1240 个。中断优先级的位可配置为 38 位。1.3.2 MPU Cortex-M3 系统可配置为包含一个 MPU。MPU 的详细描述见第 9 章存储器保护单元。1.3.3 ETM Cortex-M3 系统可配置为包含一个 ETM。ETM 的详细描述见第 16 章嵌入式跟踪宏单元接口。1.4 指令集汇总指令集汇总 这节内容包括:?处理器 16 位指令汇总?处理器 32 位指令汇总 表 1-1 列出了 16 位 Cortex-M3 指令。表表 1-1 16 位位 Cortex-M3 指令汇总指令汇总 操作 操作 汇编指令 汇编指令 寄存器值与寄存器值及 C 标志相加 ADC,3 位立即数与寄存器值相加 ADD,#8 位立即数与寄存器值相加 ADD,#低寄存器值与低寄存器值相加 ADD,高寄存器值与低或高寄存器值相加 ADD,PC 加 4(8 位立即数)ADD,PC,#*4 SP 加 4(8 位立即数)ADD,SP,#*4 SP 加 4(7 位立即数)ADD,SP,#*4 或 ADD SP,SP,#*4 寄存器值按位与 AND,算术右移,移位次数取决于立即数值 ASR,#算术右移,移位次数取决于寄存器中的值 ASR,第 1 章 概述第 1 章 概述 10续表续表 1-1 操作 操作 汇编指令 汇编指令 条件分支 B 无条件分支 B 位清零 BIC,软件断点 BKPT 带链接分支 BL 比较结果不为零时分支 CBNZ,比较结果为零时分支 CBZ,将寄存器值取反与另一个寄存器值比较 CMN,与 8 位立即数比较 CMP,#寄存器比较 CMP,高寄存器与高或低寄存器比较 CMP,改变处理器状态 CPS,将高或低寄存器的值复制到另一个高或低寄存器中 CPY,寄存器的值按位异或 EOR,以下一条指令为条件,以下面两条指令为条件,以下面三条指令为条件,以下面四条指令为条件 IT IT IT IT 多个连续的存储器字加载 LDMIA!,将基址寄存器与5位立即数偏移的和的地址处的数据加载到寄存器中 LDR,#将基址寄存器与寄存器偏移的和的地址处的数据加载到寄存器中 LDR,将 PC 与 8 位立即数偏移的和的地址处的数据加载到寄存器中LDR,PC,#*4 将 SP 与 8 位立即数偏移的和的地址处的数据加载到寄存器中LDR,SP,#*4 将寄存器与5位立即数偏移的和的地址处的字节7:0加载到寄存器中 LDRB,#将寄存器与寄存器偏移的和的地址处的字节7:0加载到寄存器中 LDRB,将寄存器与 5 位立即数偏移的和的地址处的半字15:0加载到寄存器中 LDRH,#*2 将寄存器与寄存器偏移的和的地址处的半字15:0加载到寄存器中 LDRH,将寄存器与寄存器偏移的和的地址处的带符号字节7:0加载到寄存器中 LDRSB,将寄存器与寄存器偏移的和的地址处的带符号半字15:0加载到寄存器中 LDRSH,逻辑左移,移位次数取决于立即数值 LSL,#逻辑左移,移位次数取决于寄存器中的值 LSL,逻辑右移,移位次数取决于立即数值 LSR,#逻辑右移,移位次数取决于寄存器中的值 LSR,将 8 位立即数传送到目标寄存器 MOV,#第 1 章 概述第 1 章 概述 11续表续表 1-1 操作 操作 汇编指令 汇编指令 将低寄存器值传送给低目标寄存器 MOV,将高或低寄存器值传送给高或低目标寄存器 MOV,寄存器值相乘 MUL,将寄存器值取反后传送给目标寄存器 MVN,将寄存器值取负并保存在目标寄存器中 NEG,无操作 NOP 将寄存器值按位作逻辑或操作 ORR,寄存器出栈 POP 寄存器和 PC 出栈 POP 寄存器压栈 PUSH 寄存器和 LR 压栈 PUSH 将字内的字节逆向(reverse)并复制到寄存器中 REV,将两个半字内的字节逆向并复制到寄存器中 REV16,将低半字15:0内的字节逆向并将符号位扩展,复制到寄存器中。REVSH,循环右移,移位次数由寄存器中的值标识 ROR,寄存器中的值减去寄存器值和C标志 SBC,发送事件 SEV 将多个寄存器字保存到连续的存储单元中 STMIA!,将寄存器字保存到寄存器与5位立即数偏移的和的地址中 STR,#*4 将寄存器字保存到寄存器地址中 STR,将寄存器字保存到SP与8位立即数偏移的和的地址中 STR,SP,#*4 将寄存器字节7:0保存到寄存器与5位立即数偏移的和的地址中 STRB,#将寄存器字节7:0保存到寄存器地址中 STRB,将寄存器半字15:0保存到寄存器与5位立即数偏移的和的地址中 STRH,#*2 将寄存器半字15:0保存到寄存器地址中 STRH,#*2 寄存器值减去3位立即数 STRH,#*2 寄存器值减去8位立即数 SUB,#寄存器值减去寄存器值 SUB,SP减4(7位立即数)SUB SP,#*4 操作系统服务调用,带8位立即数调用代码 SVC 从寄存器中提取字节7:0,传送到寄存器中,并用符号位扩展到32位 SXTB,从寄存器中提取半字15:0,传送到寄存器中,并用符号位扩展到32位 SXTH,将寄存器与另一个寄存器相与,测试寄存器中的置位的位 TST,从寄存器中提取字节7:0,传送到寄存器中,并用零位扩展到32位 UXTB,第 1 章 概述第 1 章 概述 12续表续表 1-1 操作 操作 汇编指令 汇编指令 从寄存器中提取半字15:0,传送到寄存器中,并用零位扩展到32位 UXTH,等待事件 WFE 等待中断 WFI 表 1-2 列出了 32 位 Coxtex-M3 指令。表表 1-2 32 位位 Coxtex-M3 指令汇总指令汇总 操作 操作 汇编指令 汇编指令 寄存器值与12位立即数及C位相加 ADCS.W,#寄存器值与移位后的寄存器值及C位相加 ADCS.W,寄存器值与12位立即数相加 ADDS.W,#寄存器值与移位后的寄存器值相加 ADDS.W,寄存器值与12位立即数相加 ADDW.W,#寄存器值与12位立即数按位与 ANDS.W,#寄存器值与移位后的寄存器值按位与 ANDS.W,Rm,算术右移,移位次数取决于寄存器值 ASRS.W,条件分支 Bcond.W 位区清零 BFC.W,#,#将一个寄存器的位区插入另一个寄存器中 BFI.W,#,#12位立即数取反与寄存器值按位与 BICS.W,#移位后的寄存器值取反与寄存器值按位与 BICS.W,带链接的分支 BL 带链接的分支(立即数)BL 无条件分支 B.W 返回寄存器值中零的数目 CLZ.W,寄存器值与12位立即数两次取反后的值比较CMN.W,#寄存器值与移位后的寄存器值两次取反后的值比较 CMN.W,寄存器值与12位立即数比较 CMP.W,#寄存器值与移位后的寄存器值比较 CMP.W,数据存储器排序(barrier)DMB 数据同步排序(barrier)DSB 寄存器值与12位立即数作异或操作 EORS.W,#寄存器值与移位后的寄存器值作异或操作 EORS.W,指令同步排序(barrier)ISB 多存储器寄存器加载,加载后加1或加载前减1 LDMIA|DB.W!,保存寄存器地址与12位立即数偏移的和的地址处的数据字 LDR.W,#将寄存器地址与12位立即数偏移的和的地址处的数据字保存到PC中 LDR.W PC,#第 1 章 概述第 1 章 概述 13续表续表 1-2 操作 操作 汇编指令 汇编指令 将基址寄存器地址的8位立即数偏移的地址处的数据字保存到PC中,后索引 LDR.W PC,#+/-保存基址寄存器地址的8位立即数偏移的地址处的数据字,后索引 LDR.W,#+/保存基址寄存器地址的8位立即数偏移的地址处的数据字,前索引 LDR.W,#+/!将基址寄存器地址的8位立即数偏移的地址处的数据字保存到PC中,前索引 LDR.W PC,#+/!保存寄存器地址左移0,1,2或3个位置后的地址处的数据字 LDR.W,LSL#将寄存器地址左移0,1,2或3个位置后的地址处的数据字保存到PC中 LDR.W PC,LSL#保存PC地址的12位立即数偏移的地址处的数据字 LDR.W,PC,#+/将PC地址的12位立即数偏移的地址处的数据字保存到PC中 LDR.W PC,PC,#+/保存基址寄存器地址与12位立即数偏移的和的地址处的字节7:0 LDRB.W,#保存基址寄存器地址的8位立即数偏移的地址处的字节7:0,后索引 LDRB.W.,#+/-保存寄存器地址左移0,1,2或3个位置后的地址处的字节7:0 LDRB.W,LSL#保存基址寄存器地址的8位立即数偏移的地址处的字节7:0,前索引 LDRB.W,#+/!保存PC地址的12位立即数偏移的地址处的字节 LDRB.W,PC,#+/保存寄存器地址8位偏移4的地址处的双字,前索引 LDRD.W,#+/*4!保存寄存器地址8位偏移4的地址处的双字,后索引 LDRD.W,#+/*4 保存基址寄存器地址与12位立即数偏移的和的地址处的半字15:0 LDRH.W,#保存基址寄存器地址的8位立即数偏移的地址处的半字15:0,前索引 LDRH.W,#+/!保存基址寄存器地址的8位立即数偏移的地址处的半字15:0,后索引 LDRH.W.,#+/-保存基址寄存器地址左移0,1,2或3个位置后的地址处的半字15:0 LDRH.W,LSL#保存PC地址的12位立即数偏移的地址处的半字 LDRH.W,PC,#+/第 1 章 概述第 1 章 概述 14续表续表 1-2 操作 操作 汇编指令 汇编指令 保存基址寄存器地址与12位立即数偏移的和的地址处的带符号字节7:0 LDRSB.W,#保存基址寄存器地址的8位立即数偏移的地址处的带符号字节7:0,后索引 LDRSB.W.,#+/-保存基址寄存器地址的8位立即数偏移的地址处的带符号字节7:0,前索引 LDRSB.W,#+/!保存寄存器地址左移0,1,2或3个位置后的地址处的带符号字节7:0 LDRSB.W,LSL#保存PC地址的12位立即数偏移的地址处的带符号字节 LDRSB.W,PC,#+/保存基址寄存器地址与12位立即数偏移的和的地址处的带符号半字15:0 LDRSH.W,#保存基址寄存器地址的8位立即数偏移的地址处的带符号半字15:0,后索引 LDRSH.W.,#+/-保存基址寄存器地址的8位立即数偏移的地址处的带符号半字15:0,前索引 LDRSH.W,#+/!保存寄存器地址左移0,1,2或3个位置后的地址处的带符号半字15:0 LDRSH.W,LSL#保存PC地址的12位立即数偏移的地址处的带符号半字 LDRSH.W,PC,#+/逻辑左移,移位次数由寄存器中的值标识 LSLS.W,逻辑右移,移位次数由寄存器中的值标识 LSRS.W,将两个带符号或无符号的寄存器值相乘,并将低32位与寄存器值相加 MLA.W,将两个带符号或无符号的寄存器值相乘,并将低32位与寄存器值相减 MLS.W,将12位立即数传送到寄存器中 MOVS.W,#将移位后的寄存器值传送到寄存器中 MOVS.W,将16位立即数传送到寄存器的高半字31:16中 MOVT.W,#将16位立即数传送到寄存器的低半字15:0中,并将高半字31:16清零 MOVW.W,#将状态传送到寄存器中 MRS,传送到状态寄存器中 MSR _,将两个带符号或不带符号的寄存器值相乘 MUL.W,无操作 NOP.W 将寄存器值与12位立即数作逻辑“或非”操作 ORNS.W,#将寄存器值与移位后的寄存器值作逻辑“或非”操作

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开