ARM处理器的运行模式和ARM寄存器

2020-01-18来源: eefocus关键字:ARM处理器  运行模式  ARM寄存器

一、ARM处理器共有7种运行模式 

处理器模式描述
用户模式(User,usr)正常程序执行的模式
快速中断模式(FIQ,fiq)用于高速数据传输和通道处理
外部中断模式(IRQ,irq)用于通常的中断处理
特权模式(Supervisor,sve)供操作系统使用的一种保护模式
数据访问中止模式(Abort,abt)用于虚拟存储及存储保护
未定义指令中止模式(Undefined,und)用于支持通过软件仿真硬件的协处理器
系统模式(System,sys)用于运行特权级的操作系统任务

usr是普通模式,其他六种是特权模式(Privileged Modes),在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。除了usr和sys模式以外的五种模式又被称为异常模式。

处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下。这时,应用程序不能够访问一些受操作系统保护的系统资源。应用程序也不能直接进行处理器模式的切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理过程中进行处理器模式的切换。这种体系结构可以使操作系统控制整个系统的资源。

当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器(保存了程序运行状态)不被破坏。

系统模式(sys)并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所用的系统资源,也可以直接进行处理器模式切换。它主要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏。


二、ARM寄存器

ARM处理器共有37个寄存器。包括:31个通用寄存器和6个状态寄存器,他们都是32位的。


1、31个通用寄存器可用分为3类:未备份寄存器,包括R0~R7、备份寄存器,包括R8~R14、程序计数器PC,即R15。


1)、未备份寄存器,包括R0~R7。对于未备份寄存器来说,在所以处理器模式下指的都是同一个物理寄存器。在异常中断造成处理器模式切换时,由于不同的处理器模式使用相同的物理寄存器,可能造成寄存器中数据被破坏。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的应用场合都可以使用。


2)、备份寄存器,对于备份寄存器R8~R12来说,每个寄存器对应两个不同的物理寄存器。例如,当使用快速中断模式下的寄存器时,寄存器R8和寄存器R9分别记作R8_fiq、R9_fiq;当使用用户模式下的寄存器时,寄存器R8和寄存器R9分别记作R8_usr、R9_usr时等。在这两种情况下,使用的是不同的物理寄存器。系统没有将这几个寄存器用于任何特殊用途,但是当中断处理非常简单,仅仅使用R8~R14寄存器时,FIQ处理程序可以不必执行保存和候复中断现场的指令,从而可以使中断处理过程非常迅速,c从而达到快速中断的目的。


3)、对于备份寄存器R13和R14来说,每个寄存器对应6个不同的物理寄存器,其中一个是用户模式和系统模式共用的。记作:R13_usr、R13_svc、R13_abt、R13_und、R13_irq、R13_fiq。


寄存器R13在ARM中常用作栈指针。在ARM指令集中,这只是一种习惯的用法,并没有任何指令强制性地使用R13作为栈指针,用户也可以使用其他的寄存器作为栈指针;而在Thumb指令集中,有一些指令强制性地使用R13作为栈指针。每一种异常模式都拥有自己的物理的R13。应用程序初始化该R13,使其指向该异常模式专用的栈地址。当进入异常模式时,可以将需要使用的寄存器保存在R13所指的栈中:当退出异常处理程序时,将保存在R13所指的栈中的寄存器值弹出。这样就使异常处理程序不会破坏被其中断程序的运行现场。

寄存器R14又被称为连接寄存器(Link Register,LR),在ARM体系中具有下面两种特殊的作用:
A、每一种处理器模式自己的物理R14中存放着当前子程序的返回地址。当通过BL或BLX指令调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值复制到程序计数器PC中时,子程序即返回。


B、当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址。对于有些异常模式,R14的值可能与将要返回的地址有一个常数的偏移量。


4)、程序计数器R15,当成功地向R15写入一个地址数值时,程序将跳转到该地址执行。

 

2、程序状态寄存器

CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。每一种处理器模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断程序退出时,可以用SPSR中保存的值来恢复CPSR。

由于用户模式和系统模式不是异常中断模式,所以它们没有SPSR。当在用户模式或系统模式中访问SPSR时,将会产生不可预知的结果。

CPSR的格式如下所示。SPSR格式与CPSR格式相同。

N(Negative):当两个补码表示的有符号整数运算时,1表示运算结果为负数,0表示结果为正或零。

Z(Zero):1表示运算的结果为零,0表示运算的结果不为零。对于CMP指令,1表示进行比较的两个数大小相等。

C(Carry):下面分四种情况讨论C的设置方法:

a)加法运算(包括比较指令CMN):当运算产生了进位时(无符号数溢出),C=1,否则C=0。

b)减法运算(包括比较指令CMP):当运算时产生了借位(无符号数溢出),C=0,否则C=1。

c)对于包含移位操作的非加/减运算指令,C为移出值的最后一位。

d)对于其他的非加/减运算指令,C的值通常不改变。

V(overflow):下面分两种情况讨论V的设置方法

a)对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。

b)对于其他的非加/减运算指令,V的值通常不改变。

 

CPSR的低8位I、F、T、M[4:0]统称为控制位。当异常中断发生时,这些位发生变化。

I:1 表示禁止外部(硬件)中断(IRQ)
F:1 表示禁止快速中断(FIQ)
T:1表示为thumb状态,0为arm状态

M[4:0]:用来设置处理器的工作模式。

M[4:0]

处理器模式

可访问的寄存器

0b10000

User   

PC,R14一R0,CPSR

0b10001

FIQ   

PC,R14_fiq-R8_flq,R7~R0,CPSR,SPSR_nq

0b10010

1RQ

PC,R14 _irq-R13 _irq,R12一R0,CPSR,SPSR_ irq

0b10011

Supervisor

PC,R14_ svc-R13 _svc,R12~R0,CPSR,SPSR_svc

0b10111

Abort

PC,R14_abt-R13_abt,R12~R0,CPSR,SPSR_abt

0b11011

Undefined

PC,R14_und-R13_und,R12~R0,CPSR,SPSR_ und

0b11111SystemPC,R14-R0,CPSR

各种处理器模式下的寄存器表(共37个):

用户模式

系统模式

特权模式

中止模式

未定义指令模式

外部中断模式

快速中断模式

R0

R0

R0

R0

R0

R0

R0

R1

R1

R1          

R1

R1

R1

R1

R2

R2

R2

R2

R2

R2

R2

R3

R3

R3

R3

R3

R3

R3

R4

R4

R4

R4

R4

R4

R4

R5

R5

R5

R5

R5

R5

R5

R6

R6

R6

R6

R6

R6

R6

R8

R8

R8

R8

R8

R8

R8_fiq

R9

R9

R9

R9

R9

R9

R9_fiq

R10

R10

R10

R10

R10

R10

R10_fiq

R11

R11

R11

R11

R11

R11

R11_fiq

R12

R12

R12

R12

R12

R12

R12_fiq

R13

R13

R13_svc

R13_abt

R13_und

R13_inq

R13_fiq

R14

R14

R14_svc

R14_abt

R14_und

R14_inq

R14_fiq

PC

PC

PC

PC

PC

PC

PC

CPSR

CPSR

CPSR

SPSR_svc

CPSR

SPSR_abt

CPSR

SPSR_und

CPSR

SPSR_inq

CPSR

SPSR_fiq


引用自《ARM体系结构与编程》 杜春雷版

关键字:ARM处理器  运行模式  ARM寄存器 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic486034.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:ARM裸机驱动中的main函数调用前的准备工作
下一篇:ARMv7汇编代码分析

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

ARM处理器、X86处理器和AI处理器的区别
目前主要的处理器架构有:X86: Intel, AMD, 海光, 兆芯ARM: 华为,飞腾,华芯通,Cavium,Ampere,富士通,亚马逊POWER:IBM, 中晟宏芯MIPS:龙芯Alpha:申威X86处理器X86架构(The X86 architecture)是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。ARM处理器 ARM(Advanced RISC Machines)一个32位元精简指令集(RISC)处理器架构,ARM处理器广泛地使用在许多嵌入式系统设计。ARM处理器的特点有指令长度固定,执行效率高,低成本等。 ARM 架构是开放性
发表于 2020-02-24
ARM处理器、X86处理器和AI处理器的区别
ARM处理器各个模式之间是如何切换的?
1、ARM处理器各个模式之间是如何切换的?答:除用户模式外的其他6种模式称为特权模式,这些模式中,程序可以访问所有系统资源,也可以任意进行处理器模式的切换。处理器模式可以通过软件控制进行切换(直接设置CPSR寄存器的后五位就可以在6种特权模式之间互相切换),也可以通过外部中断或异常处理过程进行切换(例如,在USR模式下,发生中断后切换到IRQ模式)。2、ARM各个模式之间切换时,上下文的保存哪些是硬件在做?哪些是操作系统在做?答:CPU做的:(1)把返回地址保存到相应模式的lr寄存器中,例如从usr模式切换到irq模式,CPU会将usr模式下的pc值,保存到irq模式下的lr寄存器中。(2)保存CPSR到相应模式的SPSR寄存器中
发表于 2020-01-19
ARM处理器解析
按图分析:ARM处理器有七种工作模式,为的是形成不同的使用级别,以防造成对系统的破坏。不同模式可以访问的寄存器不同,可以运行的指令不同。(1)user(10000):普通应用程序运行的模式(应用程序),普通程序时运行在此模式下。(2)FIQ(10001):快速中断模式,以处理快速情况,高速数据传输(3)IRQ(10010):外部中断模式,普通中断处理(4)svc(10011):保护模式(管理模式),操作系统使用的特权模式(内核),Linux是运行在此模式下。(5)abt(10111):数据访问中止模式,用于虚拟存储和存储保护(6)und(11011):未定义指令终止模式,用于支持通过软件仿真硬件的协处理器(7)sys(11111
发表于 2020-01-11
ARM处理器解析
ARM处理器冲上80核心 7nm工艺,32个核心+八通道DDR4内存
这几年,面向服务器、数据中心的ARM处理器如雨后春笋般涌现,亚马逊、Ampere、Calxeda、博通(Cavium)、美满电子、高通、华为、富士通纷纷投入其中,不断拿出越来越出彩的产品。 Ampere Computing是一家由前Intel总裁Renee James创建的半导体公司,通过收购AppliedMciro做起了ARM处理器,还是NVIDIA ARM平台的重要合作伙伴。 Ampere目前的产品为eMAG,采用台积电16nm工艺制造,基于ARM v8.0指令集架构自研,最多32个核心,稳定加速频率可达3.3GHz,支持八通道DDR4-2667内存、42条PCIe 3.0、四个SATA 6Gbps,热设计
发表于 2019-12-27
ARM处理器冲上80核心 7nm工艺,32个核心+八通道DDR4内存
亚马逊AWS面向云服务开发全新ARM处理器 最多可达32核心
多年来,ARM架构一直希望冲出移动领域,进入桌面乃至是服务器市场,也有不少厂商先后推出了各种设计。现在,亚马逊AWS正在面向云服务开发全新的ARM处理器。亚马逊已经有了一款ARM架构处理器“Gravition”,基于ARM A72核心魔改,主频2.3GHz,最多16核心,分成四个四核集群,每个集群2MB共享二级缓存。新一代处理器暂无名字,使用了ARM的下一代架构Neoverse N1,最多可达32核心,并通过Fabirc总线连接各种外部特定目的加速器,以提升特定工作负载的效率。ARM Neoverse N1(又名ARES)架构基于消费级的A76,4宽度拾取/解码,11级流水线(需要时可改为9级),高频率设计以提升单线程性能
发表于 2019-12-05
亚马逊AWS面向云服务开发全新ARM处理器 最多可达32核心
msp430f149的低功耗模式
430的低功耗确实很强啊,虽然和VR单片机比起来速度慢了好多。在CPU进行工作时,如果没有什么事情干,就得进入低功耗模式啦,LMPX(0~4)这几种模式的具体事项就是如下的,得记住了。一,运行模式MSP430具有一种活动模式和五种软件可选的低功耗运行模式。一个中断事件可以将芯片从五种低功耗模式中的任何一种唤醒,为请求服务并在从中断程序返回时恢复低功耗模式。下面6种运算模式由软件配置。● 活动模式AM:-所有时钟活动● 低功耗模式0(LPM0)-CPU关闭ACLK和SMCLK保持活动,MCLK关闭● 低功耗模式1(LPM1)-CPU关闭ACLK和SMCLK保持活动,MCLK关闭如果DCO在活动模式中没有使用,DCO的直流发生器将关闭
发表于 2020-01-09
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved