ARM处理器的工作模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.2.4 Thumb状态下的寄存器组织
Thumb状态下的寄存器集是ARM状态下寄存器集的 子集。程序员可以直接访问8个通用的寄存器(R0~R7), 程序计数器PC、堆栈指针SP、链接寄存器LR和当前状态 寄存器CPSP。
第二十页,编辑于星期三:四点 二十九分。
1.3 ARM异常
本节主要内容
1、中断和异常的概念 2、ARM的异常中断介绍 3、ARM的异常中断响应过程 4、中断向量和中断优先级
第十页,编辑于星期三:四点 二十九分。
1.2 ARM9寄存器
1.2.1、ARM寄存器概述
ARM处理器v4及以上版本有37个32位的寄存器
其中31个为通用寄存器;6个为状态寄存器。
– 31个通用寄存器
R0~R15; R13_svc、R14_svc; R13_abt、R14_abt; R13_und、R14_und;
当执行BL子程序调用指令时,R14中得到R15(程序计数 器PC)的备份。其他情况下,R14用作通用寄存器。
与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、 R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。
第十五页,编辑于星期三:四点 二十九分。
1.2 ARM寄存器(7)
– I、F中断控制位——控制允许和禁止中断
• I=1 禁止IRQ中断
I=0 允许IRQ中断
• F=1 禁止FIQ中断
F=0 允许FIQ中断
– T控制(标志)位——反映处理器的运行状态
• T=1时,程序运行于Thumb状态
• T=0时,程序运行于ARM状态
– M控制位——决定了处理器的运行模式
• 当发生异常时这些位被改变。
• 1、用户模式特点:
– 应用程序不能够访问受操作系统保护的系统资源。 – 应用程序不能进行处理器模式的切换。
• 2、系统模式特点:
不属于异常模式,不是通过异常进入的。系统模式属于特 权模式,可以访问所有的系统资源,也可以直接进行模式的 切换。它主要供操作系统使用。
• 3、特权模式及其特点:
特权模式:除用户模式之外的工作模式又称为特权模式
式 虚拟存储及存储保护
• 6、未定义模式(und):当执行未定义指令时会进入 这种模式 软件仿真硬件协处理器
• 7、系统模式(sys):供需要访问系统资源的操作系统 任务使用 特权级的操作系统任务
第六页,编辑于星期三:四点 二十九分。
1.1.2 ARM处理器的工作模式(2)
二、模式分类及特点
七种模式可以划分成四类
0表示:正数/大于;1表示:负数/小于
Z:零标志位
0表示:结果不为零;1表示:结果为零
C:进位/借位/移出位
0表示:未进位/借位/移出0;1表示:进位/未借位/移出1
V:溢出标志位
0表示:结果未溢出;1表示:结果溢出
第十八页,编辑于星期三:四点 二十九分。
1.2.3 ARM9的状态寄存器(3)
2、控制位
第十四页,编辑于星期三:四点 二十九分。
1.2 ARM寄存器(6)
• R13:寄存器R13在ARM指令中常用作堆栈指针SP。
但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。 而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指 针。
• R14:寄存器R14也称作子程序链接寄存器 (Subroutine Link Regi寄存器的位[0]为1时,则微处理器从 ARM状态切换到Thumb状态。此为主动切换。
(2)当处理器处于Thumb状态时发生异常(如IRQ、FIQ、 Undef等),处理完异常后,在异常处理返回时,自动切换到 Thumb状态。此为自动切换。
• 从Thumb状态切换到ARM状态
• 2、R13和R14: 每个寄存器对应6个不同的物理寄存器,其中的一个是用户模
式与系统模式共用,另外5个物理寄存器,对应于其他5种不同 的异常模式。
采用以下的记号来区分不同的物理寄存器: – R13_<mode> – R14_<mode>
其中,mode为以下几种模式之一:usr、fiq、irq、svc、 abt、und。
处理器启动时的模式转换图
管理模式 (Supervisor)
多种特权
模式变化
复位后的缺省 模式
主要完成各模式的 堆栈设置,注意不 要进入用户模式
用户程序的 运行模式
一般为用户模式 User
第九页,编辑于星期三:四点 二十九分。
1.2 ARM9寄存器
本节主要内容
1、ARM寄存器概述 2、ARM通用寄存器 3、ARM状态寄存器
第十七页,编辑于星期三:四点 二十九分。
1.2.3 ARM的状态寄存器(2)
二、ARM状态寄存器的格式
31 30 29 28 27 … 8 7 6 5 4 3 2 1 0 N Z C V (保留) I F T M4 M3 M2 M1 M0
1、条件码标志位(保存ALU中的当前操作信息) N:正负号/大小 标志位
第二十一页,编辑于星期三:四点 二十九分。
1.3 ARM异常
1.3.1 中断和异常的概念
1、中断 当CPU正在执行程序时,系统发生了一件急需处理
的事件,CPU暂时停下正在执行的程序,转去处理相应的事件,事件 处理完后,CPU再返回执行原来的程序,这种情况称为中断。这是中 断的本来意义。
第四页,编辑于星期三:四点 二十九分。
1.1.2 ARM处理器的工作模式
一、 ARM9的7种工作模式
• 1、用户模式(usr):非特权模式,大部分任务执行在
这种模式。 正常程序执行的模式 • 2、快速中断模式(fiq):当一个高优先级(fast)中
断产生时将会进入这种模式。 高速数据传输或通道处理
有两种情况ARM处理器自动切换到Thumb状态。
(1)执行BX指令,当操作数寄存器的位[0]为0时,则微 处理器从Thumb状态切换到ARM状态。
(2)当处理器在Thumb状态时发生异常(如IRQ、FIQ、 Undef等),则处理器从Thumb状态自动切换到ARM状态 进行异常处理
第三页,编辑于星期三:四点 二十九分。
三、程序计数器PC(R15)
• 寄存器R15用作程序计数器(PC)。
在ARM状态下,位[1:0]为0,位[31:2]用于保存PC;在 Thumb状态下,位[0]为0,位[31:1]用于保存PC;
• 使用R15时注意:虽然R15可以用作通用寄存器,但
是有一些指令在使用R15时有一些特殊限制,若不注意, 执行的结果将是不可预料的。所以,一般不这么使用。
SPSR_mode用来进行异常处理,其功能包括:
─ 保存ALU中的当前操作信息
当异常发生时, 用来保存CPSR的值,从异常返回时,将
SPSR_mode复制到CPSR中,恢复CPSR的值。
─ 控制允许和禁止中断 修改SPSR的值
─ 设置处理器的运行模式
修改SPSR的值
问题:一共有多少个SPSR?为什么?
• 两种状态可以切换。程序执行过程中,通过执行带
状态切换的分支指令BX,随时在两种工作状态之间进行 切换。并且,处理器工作状态的转变,并不影响处理器的 工作模式和相应寄存器中的内容。
第二页,编辑于星期三:四点 二十九分。
1.1 ARM处理器的工作状态和模式(2)

从ARM状态切换到Thumb状态
有两种情况ARM处理器自动切换到Thumb状态。
1.1 ARM处理器的工作状态和模式(3)
例1.1 状态切换程序
;从ARM状态切换到Thumb状态
LDR
R0, =Lable+1
BX
R0
;从Thumb状态切换到ARM状态
LDR
R0, =Lable
BX
R0
注意:
ARM和Thumb之间状态的切换不影响处理器的模 式或寄存器的内容。
ARM处理器在开始执行代码时,只能处于ARM状 态。
1.2.2 ARM的通用寄存器
通用寄存器包括R0~R15,可以分为三类:
─ 未分组寄存器R0~R7 ─ 分组寄存器R8~R14
─ 程序计数器PC(R15)
一、未分组寄存器R0~R7
在所有的运行模式下,未分组寄存器都指向同一个物理寄存
器,他们未被系统用作特殊的用途,是真正的通用寄存器。
因此,在中断或异常处理进行运行模式转换时,由于不同的处 理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据 的破坏,这一点在进行程序设计时应引起注意。
嵌入式系统设计:ARM处理器的工作模式
第一页,编辑于星期三:四点 二十九分。
1.1 ARM处理器的工作状态和模式
为了能够体现ARM的特点和性能,ARM处理器有两 种工作状态和7种工作模式。
1.1.1 ARM处理器的工作状态
• 有两种工作状态:
ARM状态:处理器执行32位的字对齐的ARM指令;
Thumb状态:处理器执行16位的半字对齐的 Thumb指令。
R13_irq、R14_irq; • R8_fiq-R14_fiq
– 6 个状态寄存器
• CPSR • SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq
第十一页,编辑于星期三:四点 二十九分。
1.2 ARM9寄存器(2)
• 每一类处理器模式 都有一组相应的寄 存器组;
• 关于PC的值:由于ARM采用多级流水线技术,所以 PC总是指向正在取指的指令,而不是正在执行的指令。 也即PC总是指向当前指令的下两条指令的地址。因此, 对于ARM指令集而言,PC的值为当前指令的地址值加8 个字节。
第十六页,编辑于星期三:四点 二十九分。
1.2 ARM寄存器(8)
1.2.3 ARM的状态寄存器
①系统上电复位后进入管理模式,运行系统初始化程序, 如中断允许/禁止,主时钟设置,SDRAM配置,各个功能模 块初始化等。
②当执行软件中断指令SWI时,进入管理模式。
第八页,编辑于星期三:四点 二十九分。
1.1.2 ARM处理器的工作模式(4)
• 处理器模式的切换方式:
– 软件控制进行切换。
– 通过外部中断和异常进行切换
特点:

应用程序可以访问所有的系统资源

可以任意地进行处理器模式的切换
第七页,编辑于星期三:四点 二十九分。
1.1.2 ARM处理器的工作模式(3)
4、异常模式及其特点:
异常模式: 除用户模式、系统模式之 外的五种模式称为异常模式。
特点:以各自的中断或异常方式进入, 并且处理各自的中断或异常。对管理模式 (svc)进入方式和处理内容有:
• 3、外部中断模式(irq):当一个低优先级(normal)
中断产生时将会进入这种模式。 通常的中断处理
• 4、管理模式(svc):当复位或软中断指令执行时将
会进入这种模式。 供操作系统使用的一种保护模式
第五页,编辑于星期三:四点 二十九分。
1.1.2 ARM处理器的工作模式(2)
• 5、中止模式(abt):当存取异常时将会进入这种模
• 在任意的处理器 模式下,可见的寄 存器包括15个通用 寄存器(R0- R14)、1个或2个 状态寄存器和程序 寄存器。
• 带灰色底纹的单 元格表示,用户模 式或系统模式使用 的一般寄存器,已 被异常模式特定的 另一寄存器所替代。
第十二页,编辑于星期三:四点 二十九分。
1.2 ARM寄存器(4)
第十三页,编辑于星期三:四点 二十九分。
1.2 ARM寄存器(5)
二、分组的寄存器R8~R14
对于R8~R12,每一次所访问的物理寄存器,与处理器 当前的工作模式有关。
• 1、R8~R12
– 当处理器工作于fiq模式时,访问的寄存器为R8_fiq~R12_fiq; – 除fiq模式以外的其他模式,访问的寄存器为R8_usr~R12_usr。
• 如果处理器运行在特权模式,这些位也可以由程 序修改。
M[4:0] 10000 10001 10010 10011 10111 11011 11111
模式 用户 快中断 中断 管理 中止 未定义 系统
第十九页,编辑于星期三:四点 二十九分。
1.2.3 ARM9的状态寄存器(4)
3、保留位
CPSR中的其余位为保留位,当改变CPSR中的条件 码标志位或者控制位时,保留位不要改变,在程序中也不 要使用保留位来存储数据。保留位将用于ARM版本的扩展。
一、两种程序状态寄存器
在ARM微处理器中,有CPSR和SPSR两种程序状态寄存器。
• 1、当前程序状态寄存器 CPSR (Current Program Status Register)
– 用来保存当前程序状态的寄存器。
– 所有处理器模式下都可以访问当前程序状态寄存器CPSR。仅一个 CPSR。
• 2、保存程序状态寄存器SPSR_mode (Saved Program Status Register)
相关文档
最新文档