历史上的今天

今天是:2024年09月29日(星期日)

正在发生

2021年09月29日 | ARM的7种工作模式、37个通用寄存器、CPSR程序状态寄存器

发布者:梦幻微笑 来源: eefocus关键字:ARM  工作模式  通用寄存器  程序状态寄存器 手机看文章 扫描二维码
随时随地手机看文章

一、ARM 采用的是32位架构


1、ARM约定


Byte:8 bits


Halfword:16 bits (2 byte)


Word:32 bits (4 byte)



2、大部分ARM core 提供


ARM 指令集(32-bit) 每条指令都是4个字节?


Thumb 指令集(16-bit )


Thumb2指令集(16 & 32bit)


二、ARM的7种基本工作模式


普通模式(Normal)


(1)User:非特权模式,大部分任务执行在这种模式


特权模式(Privilege)


(2)FIQ:当一个高优先级(fast) 中断产生时将会进入这种模式


(3)IRQ:当一个低优先级(normal) 中断产生时将会进入这种模式


(4)Supervisor:当复位或软中断指令执行时将会进入这种模式(SVC模式)


(5)Abort:当存取异常时将会进入这种模式


(6)Undef:当执行未定义指令时会进入这种模式


(7)System:使用和User模式相同寄存器集的特权模式。


各种模式的切换,可以是程序员通过代码主动切换(通过写CPSR寄存器),也可以是CPU在某些情况下自动切换。

各种模式下权限和可以访问的寄存器不同。

同一时刻只处于其中一种模式。

操作系统有安全级别要求,因此CPU设计多种模式是为了方便操作系统的多种角色安全等级需要。


不同模式下,对资源的访问权限不一样。

三、37个通用寄存器


1、寄存器分类和区别


(1)SoC中有2类寄存器:通用寄存器和SFR


通用寄存器(ARM中有37个)是CPU的组成部分,CPU的很多活动都需要通用寄存器的支持和参与。

SFR(special function register,特殊功能寄存器)属于外设硬件的组成部分,我们通过访问外设的SFR来编程操控这个外设,这就是硬件编程控制的方法。

(2)通用寄存器没有地址,通过寄存器名字来访问;而特殊功能寄存器有地址。


(3)寄存器是外设硬件的软件编程接口API。使用软件编程控制某一硬件,其实就是编程读写该硬件的寄存器。


2、37个通用寄存器

(1)ARM总共有37个寄存器,但是每种模式下最多只能看到18个寄存器,其他寄存器虽然名字相同但是在当前模式不可见。

对r13这个名字来说,在ARM中共有6个名叫r13(又叫sp,栈指针)的寄存器,但是在每种特定处理器模式下,只有一个r13是当前可见的,其他的r13必须切换到他的对应模式下才能看到。这种设计叫影子寄存器(banked register)。

(2)ARM共有37个寄存器,都是32位长度。

30个为“通用”型;

1个固定用作PC(Program control register,程序控制寄存器,PC指向哪里,CPU就会执行哪条指令,因此只有一个);

1个固定用作CPSR(程序状态寄存器,用来记录当前cpu的状态,因此只有一个);

5个固定用作5种异常模式下的SPSR(Saved Program Status Register,程序状态保存寄存器,用来保存CPSR的,返回时将spsr赋给cpsr)。

(3) lr用来存储返回地址。

(4)第二幅图中带颜色的,表示每种模式下特有的寄存器。


四、CPSR程序状态寄存器

  

(1)CPSR中各个bit位表明了CPU的某些状态信息,这些信息非常重要,和后面学到的汇编指令息息相关(譬如BLE指令中的E就和CPSR中的Z标志位有关)。

(2)CPSR中的I、F位和开中断、关中断有关。

(3)CPSR中的mode位(bit4~bit0共5位)决定了CPU的工作模式,在uboot代码中会使用汇编进行设置。


关键字:ARM  工作模式  通用寄存器  程序状态寄存器 引用地址:ARM的7种工作模式、37个通用寄存器、CPSR程序状态寄存器

上一篇:详细解读ARM寄存器之CPSR
下一篇:s3c2440——swi异常

推荐阅读

“你的脸上有点东西。”“有什么?”“有点漂亮。”以上土味情话发生在机器人独角兽公司优必选昨日年度发布会现场,进行对话的主体是优必选产品总经理周恒宇与“悟空”机器人,后者是此次发布会的主角之一。图 | 优必选产品总经理周恒宇与“悟空”机器人进行互动一群“疯子”的狂欢盛宴这是一场有趣的发布会。优必选创始人兼CEO周剑说,这是一家聚集了...
9月26日,上海正式发布了《上海5G产业发展和应用创新三年行动计划(2019-2021年)》(下称:《行动计划》),力争到2021年将上海打造成全球知名的5G产业发展高地和应用创新策源地。《行动计划》明确指出,上海将发挥5G研发集聚、网络先行、场景丰富、人才汇聚等优势,做强强项、补齐短板,带动5G全产业链融合发展,建设和培育一批影响面广、带动效果显著的...
本文作者:Semiengineering主编Ed Sperling英伟达即将斥资400亿美元收购Arm,预计将对芯片界产生重大影响,但要完全理解这笔交易的影响还需要数年时间。由于以下几个因素,预计未来几年会有更多这样的交易——有新的创新技术初创企业供应,利率较低,买家的市值和股价较高,这使得借钱或股票交易更加容易。此外,还有各种新兴市场刚刚开始升温,如5G、边...
一、CPSR概述ARM处理器共有37个寄存器。这37个寄存器按其在用户编程中的功能划分,可分为2类寄存器,即31个通用寄存器和6个状态寄存器。这6个状态寄存器在ARM公司文件中其名称分别为:CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fig。这12的作用分别如图1所示:所有处理器模式下都可访问当前程序状态寄存器CPSR。CPSR中包含条件码标志、中断禁止...

史海拾趣

问答坊 | AI 解惑

直流数控可调稳压电源的设计q

本帖最后由 paulhyde 于 2014-9-15 04:02 编辑 直流数控可调稳压电源的设计q,,,,,  …

查看全部问答∨

说说你的第一次!

总想跃跃欲试,总是摩拳擦掌,可是总找不到一个合适你          说说怎么走出电子制作的第一步!          经济实用为主!         请高手赐教! &nbs ...…

查看全部问答∨

编译后出现Undefined symbol PCLK 是什么意思啊

就是图中的问题,不知道是哪出问题了?大家帮忙看看吧 谢啦…

查看全部问答∨

wince串口问题。系统忙数据就出错

wince下串口问题,平时数据传输正常,但鼠标反复点击移动有时就会使串口数据错误,或者是界面切换时。我感觉是系统忙了有时会影响串口读取。波特率的57600,不算很高吧?缓冲区我也设置的很大了。数据没有丢失,只是出现错误。例如我发送端发的全是 ...…

查看全部问答∨

请问EVC的这些错误是什么愿意

我在编译、链接EVC程序时出现如下错误,不知如何解决,请高手指点,谢谢! (1)error C2011: \'_CPs_FileInfo\' : \'struct\' type redefinition (2)error C2440: \'=\' : cannot convert from \'void (__cdecl *)(struct _CPs_CoDecModule *) ...…

查看全部问答∨

后分频的作用

小弟想求教一下,单片机的后分频的作用,对pwm的输出有什么影响?…

查看全部问答∨

dsp软件仿真出现错误 请高手帮忙解决一下

Can\'t Run Target CPU: Can\'t write to data memory 0x950, check memory config [-2184] Can\'t Run Target CPU: Can\'t write to data memory 0x951, check memory config [-2184] …

查看全部问答∨

关于智能家装的问题

小弟刚刚踏入这个领域,希望有大虾指导下,发点最基本的教材或原理什么的,万分感谢,跪求了!…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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