第2章Cortex-M3内核原理3--Thumb-2指令系统

合集下载

第2章 ARM-cortex-M3内核1

第2章  ARM-cortex-M3内核1
在复位后,该寄存器的值为0。因此,在地址0 处必须包 含一张向量表,用于初始时的异常分配。

举例

如果发生了异常11(SVC),则NVIC 会计算出偏移 移量是11x4=0x2C,然后从那里取出服务程序的入口 地址并跳入。 0 号异常的功能则是个另类,它并不是什么入口地址, 而是给出了复位后MSP 的初值。

程序状态寄存器(PSRs 或xPSR)


程序状态寄存器在其内部又被分为三个子状态寄存器: 应用程序 PSR(APSR) 中断号 PSR(IPSR) 执行 PSR(EPSR) 这3 个寄存器即可以单独访问,也可以组合访问(2 个组 合,3 个组合都可以),当使用三合一的方式访问时,应 使用名字“xPSR”或者“PSRs”。

可嵌套中断支持
可嵌套中断支持的作用范围很广,覆盖了所有的外部中断 和绝大多数系统异常。 外在表现是:这些异常都可以被赋予不同的优先级,当前 优先级被存储在xPSR 的专用字段中。当一个异常发生时, 硬件会自动比较该异常的优先级是否比当前的异常优先级 更高。



如果发现来了更高优先级的异常,处理器就பைடு நூலகம்中断当前的 中断服务程序,而服务新来的异常,这个过程立即抢占。


3.3 操作模式和特权级别

Cortex‐M3 处理器支持两种处理器的操作模式,支持两 级特权操作。
操作模式

两种操作模式分别为:处理器模式(handler mode)和线程 模式(thread mode)。 引入两个模式的目的,是用于和区别异常服务例程的代码 和普通应用程序的代码。

特权极别

特权的分级——特权级和用户级。这可以提供一种存储器 访问的保护机制,使得普通的用户程序代码不能意外地, 甚至是恶意地执行涉及到要害的操作。 处理器支持两种特权级,这也是系统一个基本的安全模型。

第3章 Thumb-2指令系统4H

第3章 Thumb-2指令系统4H

LDR R1,[R2]
5、基址寻址
• 就是将基址寄存器的内容与给出的偏移量相加,形成 操作数的有效地址。用于查表、数组操作、功能部件 寄存器访问等。例: LDR R2,[R3,#0x0C];读R3+0x0C地址上的存储单元的值存R2
0x4000000C
0xAA
将R3+0x0C作为 R3 0x40000000 地址装载数据 R2 0xAA 0x55 LDR R2,[R3,#0x0C]
堆栈寻址

所以可以组合出四种类型的堆栈方 式: 向上生长的满栈、向上生长的空栈、 向下生长的满栈、向下生长的空栈。

Cortex-M3向下生长的满栈模型。

例: STMDB SP!, {R1-R7, LR} ; 将R1~R7、LR 入栈 LDMIA SP!, {R1-R7, PC} ; 出栈,到R1~R7、LR 寄存器
<指令码><目标寄存器>,<第一操作数>[,<第二操作数>]
Cortex-M3处理器支持8种基本寻址方式: –1、寄存器寻址 –2、立即寻址 –3、寄存器移位寻址 –4、寄存器间接寻址 –5、基址寻址 –6、多寄存器寻址 –7、堆栈寻址 –8、相对寻址
1、寄存器寻址
• 指令中的地址码字段(第一或第二操作数)给出的 是寄存器编号,操作数的值在寄存器中,指令执行 时直接取出寄存器值来操作。例: MOV R1,R2 ;将R2的值存入R1
3.1 Thumb-2指令集简介


Cortex-M3处理器使用的是Thumb-2指令集的子集,它的指 令工作状态只有Thumb-2状态。 Thumb-2继承了传统的Thumb指令集和ARM指令集的各自优 点,并不是Thumb的升级,包含16-bit指令集和32-bit指 令集两种长度的指令子集。 Thumb-2指令集体系架构,无需处理器进行工作状态的显 示切换,就可运行16位与32位混合代码,并由同一汇编器 对其进行汇编。

第2章cortex-M3内核

第2章cortex-M3内核

Cortex-M3 处理器
集成了内核和高级系统外设的分级处理器 Cortex-M3 内核 哈佛体系结构 拥有分支预测功能的三级流水线 Thumb®-2 指令集和传统的 Thumb指令集 带有 硬件除法和 单信号周期乘法的ALU Cortex-M3 处理器 Cortex-M3 内核 可配置的中断控制器 总线矩阵 先进的调试组件 可选择的 MPU & ETM
(irq) 用于通用中断处理
管理 (svc)
中止 (abt) 未定义 (und)
操作系统保护代码
用于支持虚拟内存和/或 存储器保护 支持硬件协处理器的软件 仿真
系统复位和软件中断响应时进入 此模式
在ARM7TDMI没有大用处 未定义指令异常响应时进入此模 式
特权模式
处理器模式 用户 系统 (usr) (sys) 系统 快中断 (sys) 快中断 中断 (fiq) (fiq) (irq) 说明 正常程序工作模式 用于支持操作系统的特权 任务等 备注 不能直接切换到其它模式
未定义指令异常响应时进入此模 式
异常模式
处理器模式 用户 (usr) 系统 快中断 (sys) (fiq) 说明 正常程序工作模式 备注 不能直接切换到其它模式
中断 (irq) 快中断 (fiq) 管理 中断(svc) (irq) 管理 中止 (svc) (abt) 中止 未定义 (abt) (und) 未定义 (und)
非特权模式:
对有些资源的访问受到限制或不允许访问
处理器模式
处理器模式 用户 (usr) 系统 (sys) 快中断 中断 (fiq) 说明 正常程序工作模式 用于支持操作系统的特权 任务等 支持高速数据传输及通道 处理 备注 不能直接切换到其它模式 与用户模式类似,但具有可以直 接切换到其它模式等特权 FIQ异常响应时进入此模式 IRQ异常响应时进入此模式

第3章Thumb-2指令系统4H解析

第3章Thumb-2指令系统4H解析

3.1 Thumb-2指令集简介


Cortex-M3处理器使用的是Thumb-2指令集的子集,它的指 令工作状态只有Thumb-2状态。 Thumb-2继承了传统的Thumb指令集和ARM指令集的各自优 点,并不是Thumb的升级,包含16-bit指令集和32-bit指 令集两种长度的指令子集。 Thumb-2指令集体系架构,无需处理器进行工作状态的显 示切换,就可运行16位与32位混合代码,并由同一汇编器 对其进行汇编。

ASR算术右移(Arithmetic Shift Right):移位过程中保 持符号位不变,即若源操作数为正数,则数据位的高端空 出的位补0,否则补1;
可采用的移位操作

ROR循环右移(Rtate Right):由数据位的低端移出的位填 入数据位的高端空出的位;

RRX带扩展的循环右移(Rotate Right eXtended by 1 place):操作数右移一位,高端空出的位用原C标志值填 充。
R2 R1
0xAA 0xAA 0x55

MOV R1,R2
SUB
R0,R1,R2
;将R1的值减去R2的值,结果存R0
2、立即寻址
• 地址码字段(第一或第二操作数)直接给出是一整数 (称立即数),例: SUBS R0,R0,#1 ;R0减1结果放入R0,影响标志位
MOV R0,#0xFF000 ;将立即数0xFF000装入R0 程序存储 MOV R0,#0xFF00
条件码 EQ NE CS/HS CC/LO MI PL VS VC HI LS GE LT GT LE AL
指令执行条件码




在 Cortex-M3中,只有分支转移指令(B指令)才可以随 意使用条件码。例: BEQ label ;当 Z = = 1 时,程序转移到label 对于其它指令,只有在IF-THEN(IT)指令块中(最多4条) 才能加条件码,且必须加条件码。 IT已经带了一个T,最多再带3个T或E(与T相反的条件),T 、E排列无顺序。例: … CMP R0, R1 ; 比较R0和R1的值,影响标志位 ITTEE GT ; 下带4条指令,如R0>R1既GT成立,否则LE成立 MOVGT R2, R0 ; GT成立,则 R2 = R0 MOVGT R3, R1 ; GT成立,则 R3 = R1 MOVLE R2, R1 ; LE成立,则 R2 = R1 MOVLE R3, R0 ; LE成立,则 R3 = R0 …

第2章 Cortex-M3 内核原理3--Thumb-2指令系统

第2章  Cortex-M3 内核原理3--Thumb-2指令系统

3. 统一的汇编语言
• ARM指令集体系架构下,ARM指令与Thumb 指令分属不同的程序模块,由不同的汇编 器对其分别进行汇编。
• Thumb-2指令集体系架构下, 16bit指令与 32bit指令可以在同一程序模块出现,并由 同一汇编器对其进行汇编。
Toolchain flow with ARM7
ARM7TDMI
r0
r1
r2
r3
State Change
r4 r5
eg. ISR entry/exit
r6
r7
r8
r8
r9
r9
r10
r10
r11
r11
rr1134r1((2slpr))rr1134r1((2slrrpr11))34
(spr)13 (lrr)14
r13 r(1s3p)(srp1)4 r(1l4r)(lr)
2. Thumb-2指令集分类(续)
• 基于Thumb-2指令体系架构编写的代码在执 行 过 程 中 , 处 理 器 不 存 在 ARM 工 作 状 态 和 Thumb工作状态之间的切换。
• 那么,处理器必须能够自动识别当前指令长 度,是16-bit还是32-bit,以正确地执行Thumb2指令代码,它是如何识别呢?
4. Cortex-M3常用的Thumb-2指令集(续)
(1)数据传送指令(续)
MRS/MSR 指令中的Sreg寄存器:
符号 IPSR EPSR APSR IEPSR IAPSR EAPSR PSR MSP PSP PRIMASK BASEPRI BASEPRI_MAX FAULTMASK CONTROL
当前服务中断号寄存器
功能
执行状态寄存器。它里面含T 位,在CM3 中T 位必须是1。 上条指令结果的标志

第2章 Cortex-M3 内核原理2

第2章  Cortex-M3 内核原理2

2.5 工作模式
工作模式
• Cortex‐M3支持两种模式和两个特权等级。
特权级 异常handler代码 Bootloader或主应 用程序代码 处理模式(handler mode) 用户级 用法错误
线程模式(thread mode) 线程模式(thread mode)
RESET
工作模式
• Cortex‐M3处理器的工作模式和特权等级共有三种配合。
Control寄存器与微处理器工作模式
工作模式(续)
• 在“线程模式+用户级”下,
禁止访问包含配置寄存器以及调试组件寄存器的系统控制空间 (SCS);P39 禁止使用MSR访问除APSR外的特殊功能寄存器。
• 在特权级下(“处理模式 or 线程模式”)
可通过置位CONTROL[0]来进入用户级; 不管是任何原因产生了任何异常,处理器都将以特权级来运行其服 务例程; 异常返回后将回到产生异常之前的特权级。
CONTROL[0]=? CONTROL[1]=0
CONTROL[0]=0 CONTROL[1]=0
工作模式(续)
• 特权等级和堆栈指针的选择均由CONTROL负责。
(2)若CONTROL[0]=1(线程模式+用户级),则在中断响应的始 末,处理器模式和特权等级都要发生变化。
CONTROL[0]=1 CONTROL[1]=1
• 用户级下(“线程模式”)
代码不能再试图修改CONTROL[0]来回到特权级。 它必须通过产生异常,并通过异常处理程序程序(处于特权级下) 来修改CONTROL[0],才能在线程模式拿到特权级。
工作模式(续)
• 特权级和处理器模式的切换
置位control[0]

第2章ARMcortexM3内部结构详解

第2章ARMcortexM3内部结构详解

2.1 ARMCortex-M3简介
嵌入式跟踪宏单元ETM •选配件 •实时的指令跟踪 •跟踪结果由TPIU输出 数据观察点及跟踪单元DWT: 设置数据观察点,匹配后可触发ETM 可将数据信息输出至ITM 指令跟踪宏单元ITM: 该模块可以支持DWT的调试消息输出 调试消息输出到TPIU 跟踪端口的接口单元TPIU: 提供处理器和外部跟踪设备的数据接口
异常类型
0 1 2 3 4 5 6 7‐10 11 12 13 14 15 16 17 18‐255
表项地址偏移量
0x00 0x04 0x08 0x0C 0x10 0x14 0x18 0x1c‐0x28 0x2c 0x30 0x34 0x38 0x3c 0x40 0x44 0x48‐0x3FF
异常向量
2.1 ARMCortex-M3简介
存储器保护单元MPU •选配件 •将存储器分为多个区域并分别进行保护
2.1 ARMCortex-M3简介
AHB-Lite
AHB APB
2.2 指令集
旧版本指令集 ARM:32位指令集 Thumb:16位指令集
新版本指令集Thumb2指令集 消灭了状态切换的额外开销,节省了执行时间和指令空间。 UAL(统一汇编语言)语法机制,由编译器决定使用32位指令或 16位指令。 不再需要把源代码文件分成按 ARM 编译的和按 Thumb 编译的, 软件开发的管理大大减负。
功能描述
这是个只有1个位的寄存器。当它置1时,就关掉所有可屏蔽 的异常,只剩下NMI和硬fault可以响应。它的缺省值是0,表 示没有关中断。
这是个只有1个位的寄存器。当它置1时,只有 NMI 才能响 应,所有其它的异常,包括中断和fault,通通屏蔽。它的缺 省值也是0,表示没有关异常。主要用于操作系统。

cortex-m3工作模式_工作原理_理论说明以及概述

cortex-m3工作模式_工作原理_理论说明以及概述

cortex-m3工作模式工作原理理论说明以及概述1. 引言1.1 概述Cortex-M3是一款基于ARM架构的微控制器处理器,它在嵌入式系统中具有广泛应用的能力。

该处理器以低功耗、高性能和可靠性著称,广泛应用于各种嵌入式系统中,如汽车电子、智能家居、医疗设备等领域。

本文将对Cortex-M3的工作模式和工作原理进行深入探讨,并介绍了相关的理论知识。

1.2 文章结构本文共分为5个部分。

首先,在引言部分简要介绍了Cortex-M3处理器的概述、应用领域和重要性。

其次,在第2部分“Cortex-M3工作模式”中,我们将详细解释什么是Cortex-M3的工作模式,并列举常见的工作模式及其特点,最后还将介绍工作模式之间的切换过程。

第3部分“Cortex-M3工作原理”将对该处理器的架构概述、处理器核心详解以及访存交互机制进行详细说明。

然后,第4部分“Cortex-M3理论说明”将介绍ARM指令集简介、硬件保护和栈管理以及特殊功能寄存器(SFR)的作用和使用方法。

最后,在第5部分“结论”中,我们将对全文进行总结,并提出进一步研究方向的建议。

1.3 目的本文的目的在于全面了解和掌握Cortex-M3处理器的工作模式、工作原理以及相关理论知识。

通过学习本文,读者将能够理解Cortex-M3在嵌入式系统中运行的方式和机制,从而为嵌入式系统设计与开发提供有力支持。

同时,本文还可以为进一步深入研究该领域奠定基础,并为相关技术人员提供参考资料。

2. Cortex-M3工作模式:2.1 工作模式定义:Cortex-M3是一种高性能、低功耗的32位嵌入式处理器核,具备多种工作模式以满足不同应用需求。

工作模式是指处理器在执行任务时所处的状态。

2.2 常见的工作模式:在Cortex-M3中,常见的工作模式包括运行、睡眠和待机。

以下分别介绍这些工作模式:- 运行(Run):在运行模式下,处理器核心处于正常运行状态,可以执行指令,并响应中断请求。

CortexM3处理器体系结构PPT课件

CortexM3处理器体系结构PPT课件
Copyright © 2009
Cortex-M 技术之NVIC
断响应周期时间中。在其他许多体系结构中,这些任务必须在软 件的中断处理程序中执行,从而引起延迟并使得过程十分复杂。
Copyright © 2009
Cortex-M 技术之NVIC
• NVIC 中的尾链
– 在背对背中断的情况下,传统系统会重复完整的状态保存和还原 周期两次,从而导致更高的延迟。Cortex-M 处理器通过在 NVIC 硬 件中实现尾链技术简化了活动中断和挂起的中断之间的转换。处 理器状态会在比软件实现时间更少的周期内自动保存在中断条目 上并在中断退出时还原,从而显著提升低 MHz 系统的性能。
Cortex-M3处理器指令集Thumb-2
• ARM Thumb-2技术的代码密度和代码性能
• 引自:ARM公司Richard Phelan撰写的《如何使用Thumb-2
• 改善代码密度和性能》
Copyright © 2009
Cortex-M3处理器指令集Thumb-2
• Thumb-2技术可以带来很多好处:
Copyright © 2009
Cortex-M3定位
从右边的图可以分析出 Cortex-M3处理器 架构:ARMv7-M 指令集:Thumb-2
ARM 架构支持各种 性能点上的实现。在许多细 分市场中它都占有主要架构 的地位。而其中Cortex-M 处 理器,通过配置文件,可快 速进行中断处理,适用于需 要高度确定的行为和最少门 数的成本、功耗敏感型设备。 而Cortex-M3处理器作为其中 的佼佼者 2009
Cortex-M3性能参数
Cortex-M3处理器规范 以下引用的数字是使用
通用 TSMC 工艺技术和 ARM 物理 IP 标准单元库和 RAM 的合成核心的说明。 Dhrystone:整数运算能力 在1MHz频率下,每秒执行一 百二十五万条指令的整数运 算能力。

第二章ARM_Cortex-M3内核结构

第二章ARM_Cortex-M3内核结构

第二章ARM Cortex-M3内核结构教学目标通过本章的学习,要理解ARM Cortex-M3内核结构,结合MCS-51单片机,分析其优缺点;掌握ARM Cortex-M3内核寄存器组织、处理器运行模式、存储器映象、异常及其操作;了解存储器保护单元及应用;了解ARM Cortex-M3调试组件的工作原理及应用。

本章是ARM Cortex-M3微控制器体系结构分析,内容涉及内核结构、CPU寄存器组织、存储器映射、异常形为及操作,在学习过程中与8位单片机(MCS-51单片机、PIC系列单片机等)结合分析,以期达到良好学习效果。

ARM Cortex-M3处理器简介2.1.1 概述ARM公司成立于上个世纪九十年代初,致力于处理器内核研究,ARM 即Advanced RISC Machines 的缩写,ARM公司本身不生产芯片,只设计内核,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。

这种运行模式运营的成果受到全球半导公司以及用户的青睐。

目前ARM体系结构的处理器内核有:ARM7TDMI、ARM9TDMI、ARM10TDMI、ARM11以及Cortex等。

2005年ARM推出的ARM Cortex系列内核,分别为:A系列、R系列和M系列,其中A系列是针对可以运行复杂操作系统(Linux、Windows CE、Symbian 等)的处理器;R系列是主要针对处理实时性要求较高的处理器(汽车电子、网络、影像系统);M系列又叫微控制器,对开发费用敏感,对性能要求较高的场合。

Cortex-M系列目前的产品有M0、M1、M3,其中M1用在FPGA中。

Cortex-M系列对微控制器和低成本应用提供优化,具有低成本、低功耗和高性能的特点,能够满足微控制器设计师进行创新设计的需求。

其中,ARM Cortex-M3处理器的性能是ARM7的两倍,而功耗却只有ARM7的1/3,适用于众多高性能、极其低成本需求的嵌入式应用,如微控制器、汽车系统、大型家用电器、网络装置等,ARM Cortex-M3提供了32位微控制器市场前所未有的优势。

Cortex-M3处理器简介PPT

Cortex-M3处理器简介PPT
20
基本型与增强型配置的差异
21
1.3.3 STM32 系列MCU 的优点
• 先进的内核结构:STM32 系列使用了 ARM 最新 的、先进架构的 Cortex-M3 内核。
• 优秀的功耗控制:STM32 处理器具有三种低功耗 模式和灵活的时钟控制机制,用户可以根据自己 所需的耗电/性能要求进行合理的优化。
• 时间戳:ITM 可产生与所发送信息包相关的时间
戳包,并向外发送。
12
存储器保护单元(Memory Protection Unit,MPU)
• MPU 提供以下支持: • 存储保护;保护区域重叠; • 访问允许控制;向系统传递存储器属性。
• 通过以上支持,MPU 可: • 实现存储管理优先规则; • 分离存储过程; • 实现存储访问规则。
2
• 1.1 Cortex-M3 处理器特点 • 1.2 Cortex-M3 处理器基本结构 • 1.3 STM32 系列处器
3
1.1 Cortex-M3 处理器特点
• 基于哈佛架构的 3 级流水线内核 • Thumb-2 指令集 • 嵌套矢量中断控制器(NVIC) • 存储器保护单元(MPU) • ARM CoreSight 调试跟踪体系结构
16
1.3.1 STM32 处理器的分类
• STM32F1 系列处理器目前分为 5 个子系列 • STM32F100 - 24 MHz CPU with motor control • STM32F101 是标准型系列,工作在 36MHz; up to 1 Mbyte Flash • STM32F102 - 48 MHz CPU with USB FS • STM32F103 是增强型系列,工作在 72MHz,带有更多片内RAM 和

第2章 Cortex-M3处理器-1

第2章 Cortex-M3处理器-1
程序存储器
周期1 周期2 周期3 周期4 周期5 周期6
处理器执行一条 取指 译码 执行 指令的三个阶段
取指 译码 执行 取指 译码 执行 取指 译码 执行
3 在第3个周期,PC指向指令3,此时指令 1进入三级流水线的执行阶段,指令2进入译
码阶段,取出指令3。
21/47
三级流水线结构的指令执行顺序
9/47
(4)32位单周期乘法,硬件除法指令 (5)具有分组的堆栈指针 ( 6 ) 处 理 模 式 ( handler mode ) 和 线 程 模 式 ( thread mode) (7)Thumb状态和调试状态 (8)功耗低 (9)具有门数目少 (价格低)、调试成本低 (10)支持非对齐访问
10/47
寄存器(LR)、程序计数器(PC)、程序状态寄存器 (xPSR)、两个分组的SP寄存器。 6. 内存保护单元(MPU,可选) 7. 低成本调试解决方案 8. ROM表
16/47
三、总线结构
基于哈佛体系结构,有专门的数据总线和指令总线,使得数 据访问和指令存取可以并行进行,效率大大提高。
AMBA片上总线包括: (1)AHB(Advanced High performance Bus)系统总线:主 要用于高性能模块(如CPU、DMA等)之间的连接。 (2)APB(Advanced Peripheral Bus)外设总线:主要用于 低带宽的外设之间的连接。
AHB-AP
Cortex-M3处理器的结构
总线 矩阵
I-code 总线 D-code 总线
系统总线
11/47
2. 嵌 套 向 量 中 断 控 制 器 ( Nested Vector Interrupt Controller,NVIC)

第2章 Cortex-M3微处理器

第2章 Cortex-M3微处理器

Cortex-A(ARMv7-A):需要运行复杂应用程序的“应用处 理器” 。支持大型嵌入式操作系统,比如Symbian(诺基亚 智能手机用),Linux,以及微软的Windows CE和智能手机 操作系统Windows Mobile。 Cortex-R(ARMv7-R):硬实时且高性能的处理器。面向高 端实时市场。像高档轿车的组件,大型发电机控制器,机器手 臂控制器等,要求可靠性高,对事件的反应也要极其敏捷。 Cortex-M(ARMv7-M):面向单片机的应用而量身定制。面 向实时控制系统,具有低成本、低功耗、极速中断反应以及高 处理效率。
13
第2章 Cortex-M3微处理器
2.2 Cortex-M3微处理器内核体系结构
14
Cortex-M3的一个简化视图
第2章 Cortex-M3微处理器
Cortex-M3处理器系统方框图
15
第2章 Cortex-M3微处理器
2.2 Cortex-M3微处理器内核体系结构

Cortex-M3内核
2.8 调试系统
2.9 指令集
2
第2章 Cortex-M3微处理器
2.1 Cortex-M3微处理器简介

有关ARM:
ARM在1990年成立,当初的名字是“Advanced RISC Machines
Ltd.,”,当时它是苹果电脑、Acorn电脑公司、以及VLSI技术(公 司)三家公司的合资。 1991年,ARM推出了ARM6处理器家族。 现如今,ARM芯片的出货量每年都比上一年多20亿片以上。 ARM 从不制造和销售具体的处理器芯片,而是把处理器的设计授 权给相关的商务合作伙伴,让他们去根据自己的强项设计具体的
10
第2章 Cortex-M3微处理器

第02章、ARMCortexM3体系结构

第02章、ARMCortexM3体系结构
第二章 ARM Cortex-M3体系结构

2.1 2.2 2.3 2.4 2.5 ARM Cortex-M3编程模型 ARM Cortex-M3寄存器组织 ARM Cortex-M3存储器 ARM Cortex-M3异常处理 NVIC与中断控制
桂林电子科技大学信息与通信学院
2.1 ARM Cortex-M3编程模型
桂林电子科技大学信息与通信学院
链接指针LR (r14)
寄存器R14是子程序的链接寄存器(LR)。在执行分
支(branch)和链接(BL)指令或带有交换的分支和链 接指令(BLX)时,LR用于接收来自PC的返回地址。 LR也用于异常返回。 其它任何时候都可以将R14看作一个通用寄存器。
桂林电子科技大学信息与通信学院
桂林电子科技大学信息与通信学院
桂林电子科技大学信息与通信学院
程序状态寄存器xPSR
系统级的Cortex-M3处理器状态可分为3类,因此有3 个程序状态寄存器。这3个寄存器分别是:应用PSR( APSR)、中断PSR(IPSR)、执行PSR(EPSR)。
通过MRS/MSR指令,这3个PSR即可以单独访问, 也可以组合访问(2个组合,3个组合都可以)。当使 用三合一的方式访问时,应使用名字“xPSR”或者 “PSR”。
桂林电子科技大学信息与通信学院
控制寄存器
控制寄存器有两个用途:其一,用于定义特权级别;其二, 用于选择当前使用哪个堆栈指针。 CONTROL[1]位:堆栈指针选择。该位为0时表示选择主堆栈 指针MSP(复位后的缺省值);为1时表示选择进程堆栈指针PSP 。在线程模式下,可以使用PSP。在处理模式下,只允许使用 MSP,所以此时不得往该位写1。 CONTROL[0]位:特权级别选择。为0时表示特权级的线程模 式;为1时表示用户级的线程模式。处理模式永远都是特权级的 。仅当在特权级下操作时才允许写该位。一旦进入了用户级,唯 一返回特权级的途径,就是触发一个(软)中断,再由服务例程 改写该位。

第3章 Thumb-2指令系统

第3章 Thumb-2指令系统

含义 相等 不相等,与EQ相反 进位(无符号数大于或等于) 未进位(无符号数小于) 负数 非负数 溢出 没有溢出 无符号数大于 无符号数小于或等于 有符号数大于或等于 有符号数小于 有符号数大于 有符号数小于或等于 无条件执行
指令执行条件码
在 Cortex-M3中,只有分支转移指令(B指令)才可以随
Cortex-M3向下生长的满栈模型。
例: STMDB SP!, {R1-R7, LR} ; 将R1~R7、LR 入栈 LDMIA SP!, {R1-R7, PC} ; 出栈,到R1~R7、LR 寄存器
8、相对寻址
相对寻址是基址寻址的一种变通。由程序计数器PC提供 基准地址,指令中的地址码字段作为偏移量,两者相加 后得到的地址即为操作数的有效地址。
AREA |test1.s|,CODE,READONLY;声明只读代码段
DCD
__Vectors
DCD Reset_Handler
EXPORT __Vectors
EXPORT Reset_Handler
__Vectors
Reset_Handler PROC
; PROC/ENDP函数起始
START
MOV R0,#15 ;R0 = 15
标号顶格写
MOV R1,#8 ; R1 =8 ADDS R0,R0,R1; R0 = R0 + R1
实际代码段
B START
ENDP
;此处函数起始标记可省
END
声明文件结束
第3章 Thumb-2指令系统
3.4 Thumb-2指令基本格式
2、指令执行条件码
使用指令条件码可以实现高效的逻辑操作,提高代码的 执行效率。不选为AL。
Cortex-M3处理器使用的是Thumb-2指令集的子集,它的指 令工作状态只有Thumb-2状态。

第二章ARM Cortex-M3内核结构

第二章ARM Cortex-M3内核结构

高 寄 存 器
R10 R11 R12 R13(SP) R14(LR) R15(PC) MSP PSP
特 殊 功 能 寄 存 器
状态寄存器 中断屏蔽 寄存器 控制寄存器
xPSR PRIMASK FAULTMASK BASEPRI CONTROL
图 2.2 寄存器组织图
2.2.1 通用寄存器 R0-R15
ETM支持指令跟踪的低成本跟踪宏单元。
9.TPIU
TPIU用作来自ITM和ETM (如果存在) 的Cortex-M3内核跟踪数据与片外跟踪端口分析仪之间的桥接。
10.SW/JTAG-DP
Cortex-M3处理器可配置为具有SW-DP或JTAG-DP调试端口的接口,或两者都有。这两个调试端口提 供对系统中包括处理器寄存器在内的所有寄存器和存储器的调试访问。
4.FPB
FPB单元实现硬件断点以及从代码空间到系统空间的修补访问,FPB有8个比较器。
5.DWT
数据观察点和跟踪,调试功能部件。
备课日期: 页
2011 年 03 月 1 日

3
四川师范大学成都学院
6.ITM
课时授课计划(教案)
ITM是一个应用导向(application driven)的跟踪源,支持对应用事件的跟踪和printf类型的调 试。
2.1.2 内核结构组成及功能描述
Cortex-M3微控制器内核包括处理核心和许多的组件,目的是用于系统管理和调试支持。如图2.1为 Cortex-M3内核方框图。
备课日期: 页
2011 年 03 月 1 日

1
四川师范大学成都学院
课时授课计划(教案)
NMI 中断号[239:0]
中断
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章 Cortex-M3 内核原理
(3)
Thumb-2指令系统 (Thumb-2指令体系架构)
主要内容
1. 概述 2. Thumb-2指令集分类 3. 统一的汇编语言 4. Cortex-M3常用的Thumb-2指令集 5. 小结
1. 概述
• 对于确定的微处理器而言,编写紧凑的代 码以降低消耗显得至关重要。
➢ 无法完成诸如处理中断、长跳转、原子存储器(atomic memory)操作,或协处理器操作等等复杂任务,
➢ 也无法像ARM模式那样进行条件执行和移位或循环移 位等操作。
⑥ Thumb代码和标准ARM代码不能混杂使用,必须显 式地在两种工作状态间进行切换,这迫使程序员必须 将所有的16位代码与32位代码分开并隔离到独立的模 块中。
(1)16-bit指令集; (2)32-bit指令集。
2. Thumb-2指令集分类(续)
• 按功能和寻址方式分类
(1)数据传送指令 (2)Load/Store指令 (3)批量Load/Store指令 (4)算术四则运算指令 (5)逻辑操作指令 (6)移位和循环指令 (7)符号扩展指令 (8)字节调序指令REV, REVH,REV16,REVSH (9)位域处理指令 (10)子程序调用与无条件转移指令 (11)隔离(barrier)指令 (12)饱和运算指令 (13) If‐Then指令 (14)比较跳转指令等
(sp) (lr)
r15 (pc) cpsr spsr spsr
• 通常,存储器的大小是固定的,而产品的 功能特性却各异,选择恰当的处理器并精 心调整代码是明智的。
1. 概述(续)
对于ARM体系架构的来说:
① 微处理器有两种工作状态:
➢ ARM工作状态 ➢ Thumb工作状态
② Thumb指令集是添加到ARM的标准RISC指令集之上 的独立指令集;
③ Thumb指令集包括了基本的加法、减法、循环移位 以及跳转等大约36条16位指令;
1. 概述(续)
• Thumb-2并不是Thumb的升级 • 它是另起炉灶,继承并集成了传统的Thumb指
令集和ARM指令集的各自优点,可以完全代 替Thumb和原先的ARM指令集, • 是Thumb指令集和ARM指令集的一个超集。 • Thumb-2指令集体系架构,无需处理器进行工 作状态的显示切换,就可运行16位与32位混合 代码。 • 与ARM体系架构相比,速度提高大约15%到 20%。
• PC寄存器所指向半字的Bits<15:11>的编码格式决定了 CPU所处理指令的长度。
• Thumb-2指令集空间被划分为16-bit 和32-bit 两个子集。 其中,x原则上可以为“0”、“1”任意值,但x 的取值 不能使得0b111xx=0b11100,以及0bxxxxx=0b111xx或者 0bxxxxx=0b11100。
1. 概述(续)
• Cortex-M3处理器使用的指令集是Thumb-2 指令集的子集,它的(指令)工作状态只 有一个,那就是Thumb-2状态。
• Cortex-M3处理器的两种工作状态:
① Thumb-2状态 ② 调试状态
2. Thumb-2指令集分类
• 按照指令的长度分类,Thumb-2指令集可 分为两种:
2. Thumb-2指令集分类(续)
• 基于Thumb-2指令体系架构编写的代码在执 行 过 程 中 , 处 理 器 不 存 在 ARM 工 作 状 态 和 Thumb工作状态之间的切换。
• 那么,处理器必须能够自动识别当前指令长 度,是16-bit还是32-bit,以正确地执行Thumb2指令代码,它是如何识别呢?
ቤተ መጻሕፍቲ ባይዱ
3. 统一的汇编语言
• ARM指令集体系架构下,ARM指令与Thumb 指令分属不同的程序模块,由不同的汇编 器对其分别进行汇编。
• Thumb-2指令集体系架构下, 16bit指令与 32bit指令可以在同一程序模块出现,并由 同一汇编器对其进行汇编。
Toolchain flow with ARM7
④ Thumb指令集作为ARM指令集的压缩方案,简洁、 有效,应用广泛并得到很好的支持,通过Thumb指 令替换ARM指令,可以将某些代码的规模减小大约 20%到30%。
1. 概述(续)
对于ARM体系架构的来说(续):
⑤ 但是,有限的Thumb指令仅对基本的算术和逻辑操 作有用:
➢ Thumb状态下,处理器将仅可使用有限数量的寄存器, R8-R12的使用受到限制,
ARM7TDMI
r0
r1
r2
r3
State Change
r4 r5
eg. ISR entry/exit
r6
r7
r8
r8
r9
r9
r10
r10
r11
r11
rr1134r1((2slpr))rr1134r1((2slrrpr11))34
(spr)13 (lrr)14
r13 r(1s3p)(srp1)4 r(1l4r)(lr)
Halfword1 Bits<15:11> 0b11100
0b111xx (xx≠00) 0bxxxxx (xxxxx≠111xx)
功能
16-bit 无条件分支Thumb-2指 令, 在所有Thumb-2体系结构 中定义 32-bit Thumb-2 指令, 在 Thumb-2中定义 16-bit Thumb -2指令
2. Thumb-2指令集分类(续)
• 指令长度的确定
PC寄存器指向的半字中,Bits<15:11>决定该半字是16bit指令,还是属于32-bit指令的一部分。图3-1说明了 Bits<15:11>确定指令长度的功能。
2. Thumb-2指令集分类(续)
• 不同指令长度的Bits<15:11>编码格式
1. 概述(续)
对于ARM体系架构的来说(续):
⑦ 其次,两种工作状态之间来回切换需要消耗时间, 导致代码运行速度降低大约15%,不仅要增加代码, 而且还需要几十个前导(preamble)以及后同步指令 (postamble)来组织指针并清空CPU的流水线。
⑧ 虽然Thumb指令能够实现较高密度的代码,缓存使 用效率更高,但实现ARM指令代码的功能往往需要较多 的Thumb指令代码,相比较而言,ARM指令使用起来更 灵活。
相关文档
最新文档