历史上的今天

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

正在发生

2021年09月29日 | ARM体系架构—ARMv7-A处理器模式及寄存器

发布者:温暖微笑 来源: eefocus关键字:ARM体系架构  寄存器 手机看文章 扫描二维码
随时随地手机看文章

一、ARMv7-A处理器模式

在这里插入图片描述

ARMv7架构支持安全扩展,如果使能了安全扩展,ARMv7-A架构分为安全模式(Secure State)和非安全模式(Non-secure State)两个世界。

在非安全模式下,存在三种运行特权PL0,PL1和PL2(privilege level)。


If the Virtualization Extensions are implemented there is a privilege model different to that of previous architectures. In Non-secure state there can be three privilege levels, PL0, PL1 and PL2.

在这里插入图片描述

image.png

二、ARMv7-A通用寄存器

ARMv7-A架构提供了16个32位通用寄存器(R0-R15)和一个程序状态寄存器CPSR(Current Program Status Register),在异常模式下,可以访问SPSR(Saved Program Status Register),在异常模式下,SPSR用于保存当前CPSR寄存器值。其中R0-R14可以用于普通数据存储,R15是程序计数器PC(program counter)。

在这里插入图片描述

以上寄存器可能因运行模式不同而对应不同的物理存储位置,上图中蓝色区域即如此,它们使用不同的物理存储,通常只有在进程以特定模式执行时才可访问。


R0-R7在任何模式下都对应相同的物理存储,称之为未分组寄存器;

R8-R14根据模式不同对应不同的物理存储,称之为分组寄存器;

R13(SP)在User和Sys模式下对应相同的物理存储,FIQ,IRQ,ABT,SVC,UND,MON,HYP模式分别对应不同的物理存储。R13在ARM架构中用于SP堆栈指针(stack pointer)。MON模式用于管理安全与非安全模式,HYP模式用于管理虚拟操作系统(GuestOS)。

R14(LR)在User,Sys和HYP模式下对应相同的物理存储,FIQ,IRQ,ABT,SVC,UND,MON模式分别对应不同的物理存储。R14在ARM架构中用于LR链接寄存器,在每种模式下,R14用于保存子程序返回地址。执行BL指令时,R14用于备份R15寄存器的值。

R15(PC)保存当前程序执行的地址。在所有模式下,R15(PC)共享相同的物理存储。在ARM状态下,[1:0]为0,[31:2]用于保存PC。在Thumb状态下,[0]为0,[31:1]用于保存PC。

CPSR是程序状态寄存器,保存条件标志位,中断禁止位,当前处理器模式等控制和状态位。每种异常模式下还存在SPSR,保存进入异常模式前的CPSR寄存器值,用于异常处理完成后恢复CPSR的状态。User和Sys不属于异常模式,没有CPSR寄存器,在User模式下,受限的CPSR寄存器称谓APSR( Application Program Status Register)。ARMv7-A中CPSR寄存器的信息如下图所示。

CPSR bits

各Field代表含义如下:

image.png

三、ARMv7-A协处理器CP15寄存器

ARMv7-A架构保护系统控制协处理器CP15,主要用于处理存储系统相关的功能。CP15只能在特权模式下访问。CP15提供了16个32位主寄存器,命名为c0-c15。c0-c15寄存器可能对应多个不同的物理寄存器。

image.png

image.png

协处理器CP15寄存器访问包括读和写操作。


读操作即将CP15内的寄存器CRn的值读到通用寄存器Rt中,使用指令语法MRC, Op1, Rt, CRn, CRm, Op2;

写操作即将通用寄存器Rt的值写入CP15内的寄存器CRn中,使用指令语法MCR, Op1, Rt, CRn, CRm, Op2;

在这里插入图片描述

MRC:将CP15寄存器值读到ARM通用寄存器;

MCR:将ARM通用寄存器值写到CP15寄存器;

Op1 :协处理行为操作码;

Rt :ARM通用寄存器,不能是R15(PC);

CRn:协处理器CP15寄存器c0-c15;

CRm:附加目标寄存器,不需要附加信息,则设置为c0;

Op2 :区分同一编号不同的物理寄存器,例如分别访问c0中的MIDR和MPIDR,Op2值分别为0和1。默认情况下设置为0;

示例:

将CP15寄存器c0的MIDR寄存器读到R1中。


MRC p15, 0, R1, c0, c0, 0


四、系统控制寄存器CP15.SCTLR

系统控制寄存器SCTLR(System Control Register )用于控制内存,系统功能以及提供状态信息。

System Control Register bits

image.png

示例:

初始化CP15:SCTLR,使能Cache,指令Cache及分支预测功能。

在这里插入图片描述

关键字:ARM体系架构  寄存器 引用地址:ARM体系架构—ARMv7-A处理器模式及寄存器

上一篇:Linux ARMv7架构通用中断流程(1)
下一篇:ARM_Core的处理器模式与寄存器,结构杂谈

推荐阅读

OLED_Refresh_Gram 函数先设置页地址,然后写入列地址(也就是纵坐标),然后从 0 开始写入 128 个字节,写满该页,最后循环把 8 页的内容都写入,就实现了整个从 STM32F4 显存到OLED 显存的拷贝。OLED_Refresh_Gram 函数还用到了一个外部函数,也就是我们接着要介绍的函数:OLED_WR_Byte,该函数直接和硬件相关,函数代码如下:#if OLED_MODE==1//通过拼...
有消息传东芝突发失火,多位业内人士资讯该事。 东芝是日本最大的半导体制造商,也是全球第二大NAND闪存芯片生产商,作为世界大厂一般都会24小时不停歇的工作,至少机器要保持运作。东芝的5座NADN闪存工厂于当地时间6月15日下午6点25分发生断电事故,停电过程仅13分钟。 13分钟的停电事故导致了344亿日元的损失,约合23亿人民币或者3.2亿美元。 在东芝之前...
工业机器视觉和边缘人工智能的应用日渐广泛。近几年随着人工智能的开发,工业机器视觉和边缘人工智能越来越受到业界重视。据安森美半导体智能感知部全球市场和应用工程副总裁易继辉介绍,除了传统工厂自动化、智能化工厂的发展,机器视觉还在智能交通、新零售、智能楼宇/家居、机器人等领域不断发展。尤其是在冠状病毒的检测和疫情防护方面,未来的趋势也...
一.硬件方案本设计主要是制作出一款基于51单片机的GPS定位器,根据设计需求,硬件部分主要由51单片机+GPS定位模块+LCD12864液晶+LED指示灯+3.3V稳压电路+天线设计而成;如图:二.设计功能(1)单片机选用:51单片机(STC89C51/52、AT89C51/52、AT90C51/52均可兼容),GPS定位模块(带天线)。(2)采用LCD12864液晶显示当前的时间、日期、经度、速度、航向、...

史海拾趣

问答坊 | AI 解惑

AVR基本硬件线路设计与分析

基本的AVR硬件线路,包括以下几部分: 1。复位线路 2。晶振线路 3。AD转换滤波线路 4。ISP下载接口 5。JTAG仿真接口 6。电源 复位线路的设计 Mega16已经内置了上电复位设计。并且在熔丝位里,可以控制复位时的额外时间,故AVR外部的复位 ...…

查看全部问答∨

宁波中纬现场:巨亏拖累比亚迪的芯片项目真实状况

中纬设备使用年限已超过15年,基本到达寿命终期。 “一切以公告为准。”日前,记者联系比亚迪汽车销售公司副总经理王建均,他出言十分谨慎。 王建均所指公告系比亚迪于11月20日作出,比亚迪在公告中承认宁波中纬仍然亏损,并解释是由于该业绩仍处 ...…

查看全部问答∨

肖特基二极管的原理

肖特基二极管的原理…

查看全部问答∨

奇特发明:空中漂浮装置问世

SSBOT咖啡水瓶装置   瑞士的法兰西斯科-斯皮彻(Francisco Speich)设计了SSBOT,这是一种咖啡机器的水瓶装置。 三明治中空面包   三明治中空面包   来自法国的吉恩-保罗-马格罗(Jean-Paul Magro)发明了一种适合三明治中空面包制作方法 ...…

查看全部问答∨

我现在要做个温度无线采集系统

要求:1,采集温度 通过gprs模块上传到计算机            2,需要自己做出板子            3.,需要编写单片机程序    & ...…

查看全部问答∨

求助:winCE5.0点开控制面板,系统马上就报错,停止响应!

我用的系统是winCE5.0,每当我点开控制面板,系统就会报错,并且停止响应。错误如下: Data Abort: Thread=8bb44664 Proc=89df63b0 \'gwes.exe\' AKY=00000049 PC=03fc4860(coredll.dll+0x00054860) RA=45084508(???+0x45084508) BVA=0a079c00 FSR ...…

查看全部问答∨

232转485的电路,电路一通电就一直不停的收到00,怎么回事?

232转485的电路,电路一通电就一直不停的收到00,怎么回事? 我的接法如图, 把485芯片的A,B,挂到总线上去。 总线上接有120欧姆匹配电阻(首,尾都有,共两个)。 PC上串口调试程序不停的收到00(是16进制的),有时也有别的。 即使我把89C5 ...…

查看全部问答∨

让struct飞一会儿

让struct飞一会儿 嵌入式开发时,大多使用C语言。C语言并非那么几个函数的事,也不是几个变量就能搞定。在网络编程和USB使用时,大家都觉的困难,这些程序读起来更困难。在这些程序中使用了较多的struct,所以看起来很复杂,用起来很是麻烦。即使 ...…

查看全部问答∨

电容器的检测方法与经验

1 固定电容器的检测   A 检测10pF以下的小电容 因10pF以下的固定电容器容量太小,用万用表进行测量,只能定性的检查其是否有漏电,内部短路或击穿现象。测量时,可选用万用表R×10k挡,用两表笔分别任意接电容的两个引脚,阻值应为无穷 ...…

查看全部问答∨

TI M3停产怎么办!!

公司现在有些产品还在用LM3S6911 、LM3S811、LM3S9B92,LM3S9B96(做PTP),停产后供货还能持续多久?? M4又不支持以太网,以后怎么办??~~~    M3下的这么彻底,TI您好歹给我们留条后路啊!! [ 本帖最后由 yanhy 于 2012-12-13 15:49 ...…

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

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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