ARM体系架构—ARMv7-A处理器模式及寄存器

最新更新时间:2021-10-21来源: 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的处理器模式与寄存器,结构杂谈

推荐阅读

ARM开发中几个常见的寄存器详解
1、介绍FP:栈顶指针,指向一个栈帧的顶部,当函数发生跳转时,会记录当时的栈的起始位置。SP:栈指针(也称为栈底指针),指向栈当前的位置,LR:链接寄存器,保存函数返回的地址。关于gcc就有一个关于stack frame的优化选项,加上该选项则忽略掉FP栈顶指针,(记得高版本默认是不加FP的,gcc4.8以上吧(待确认))-fomit-frame-pointerDon’t keep the frame pointer in a register for functions that don’t need one. This avoids the instructions to save, set up and restore fra
发表于 2023-03-27
单片机成长之路(51基础篇)51单片机寄存器功能一览表
21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有
发表于 2023-03-24
基于ARM单片机中的部分寄存器地址为什么会相差4
图中是LPC1114用户手册系统控制模块(SYSCON)中的部分寄存器,请看红色框内,地址相差0x4。为什么会相差4?很多初学者问我这个问题,高手就请绕过吧。计算机、单片机都是以字节为单位进行存储的。这里的4就是4个字节的意思。上面列举的LPC1114是ARMCortex-M0内核,STM32是ARM Cortex-M3内核,这两ARM单片机都是32位的。1个字节是8位,4个字节就是32位。32位单片机的寄存器基本上是32位的,8位单片机的寄存器基本上也是8位的。打开你曾经用过的reg51.h文件,看看普通51单片机的寄存器地址映射,一共不到100个寄存器,几下就写完了。但是ARM单片机内部的模块非常多,寄存器也非常多,寄存器地址映
发表于 2023-03-23
基于ARM单片机中的部分<font color='red'>寄存器</font>地址为什么会相差4
lpc54102双核介绍及LPC54102寄存器直接编程
  随着科技的进步,双核逐渐被淘汰已是时间上的问题,四核乃至八核心CPU也已不再是什么新奇的事物,不过在微控制器领域,双核却是个十分新颖的东西。很多工程师朋友在开发MCU应用系统的时候,若是系统功能复杂、一颗MCU芯片无法满足要求,往往会采用多颗MCU协同工作,把一些“打杂”的工作交给低端的MCU完成,高端的MCU则可以放开“手脚”,完成系统主要的任务。不过这样一来,系统研发的复杂性,成本以及可靠性都会受到不同程度的影响,多微控制器方案带来系统的功耗问题也不容小视。对此,恩智浦推出了基于ARMCortex-M4和 ARM Cortex-M0+非对称双核架构的LPC54102系列微控制器,旨在提供一个低功耗高性能的双核解决方案,用于超
发表于 2023-03-20
寄存器,存储器,RAM,ROM有什么区别?
这些都是比较抽象的专业名词了,特别是寄存器,很多人在学单片机的时候对这个一脸懵逼,寄存器到底是个啥玩意?其实不用很深刻的理解它到底是什么,你只需要知道通过配置寄存器的值,就可以把外设用起来。我做单片机开发的这10几年,接触寄存器非常多,比如单片机有寄存器,很多外围芯片也有寄存器(EEPROM、FLASH、时钟芯片等),只要你掌握其中一个,其它的都可以触类旁通。就像密码锁一样,设置正确的密码,锁就会打开,寄存器也是一样,设置正确的值,芯片资源就能为你所用。下面更加全面地介绍下它们之间的区别:一、寄存器在单片机应用上,寄存器(register)通常用于存储程序的运行时状态,例如程序计数器(Program Counter,PC)用于存储下
发表于 2023-03-14
解读LPC210X之外部中断寄存器
LPC2101/02/03最多包含了三个外部中断输入作为可选择的管脚功能。管脚进行组合后,外部事件可以处理成三个独立的中断信号。外部中断输入能够可选择的用于将处理器从低功耗模式下唤醒。此外,10个捕获输入没有可选择的将器件从低功耗模式唤醒功能,但也能够被用于外部中断。Register description有四个寄存器涉及外部中断External Interrupt Flag register (EXTINT - 0xE01F C140)外部中断标志寄存器位信号描述复位值0EINT0对应管脚外部中断到来时,该标志位置位。写1清除该位,如果该中断处于电平触发模式,那么电平触发期间该位不能清除。01EINT1同EINT002EINT2同
发表于 2023-03-07
解读LPC210X之外部中断<font color='red'>寄存器</font>

推荐帖子

聊聊extern "C"
#ifdef__cplusplusextern"C" { #endif /****somedeclarationorso*****/ #ifdef__cplusplus } #endif 聊聊extern"C"
aishuang 单片机
新手学习树莓派3笔记(2)--安装wiringPi并使用其控制外设
wiringPi库是由GordonHenderson所编写幵维护的一个用C语言写成的类库。里面有GPIO库,I2C库、SPI库、UART库和软件PWM库等,可以方便直接调用控制外设。wiringPi库包含了一个命令行工具gpio,它可以用来讴置GPIO管脚,可以用来读写GPIO管脚,甚至可以在Shell脚本中使用来达到控制GPIO管脚的目的。 第一步:安装github工具,在官网最新的Raspbian中,已经默认给安装了。安装命令如下:
RCSN Linux与安卓
pcb新人看过来,这里有一波适合你的学习资料
最近发现论坛来了很多pcb新朋友,在问pcb相关的知识问题。管管在此特意整理收集了论坛上,下载中心上的适合pcb新手的学习资料,希望对大家的pcb学习之旅能有帮助!!! pcb技能知识贴 okhxyyo的AltiumDesigner之旅——汇总帖 http://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=482948&fromuid=536508 说一下AltiumDesigner软件画不规则PCB板边框的方法 htt
okhxyyo PCB设计
与大家分享一些单片机应用实例与300种常用芯片资料
今天要下载模电和数电的电子书,没想到在本论坛刚注册就可以下载完了。速度非常快,所以怀着一颗感恩的心分享一些自己的电子资料!因为300种常用芯片资料太大,而且我是刚注册的号等级较低,如有需要的请发信息到9125980@qq.com邮箱索取。我会在第一时间给您送上。与大家分享一些单片机应用实例与300种常用芯片资料
cuitone 单片机
【SC8905 EVM测评】+单片机I2C通讯实验
本帖最后由hujj于2020-9-2313:19编辑 抱歉!帖子错发到【电源技术】版块了,这里就给个链接吧,免得重复发帖浪费资源:http://bbs.eeworld.com.cn/thread-1142391-1-1.htmlhttp://bbs.eeworld.com.cn/thread-1142391-1-1.html 【SC8905EVM测评】+单片机I2C通讯实验
hujj 国产芯片交流
HC32F4A0_FreeRTOS_LwIP移植
HC32F4A0-FreeRTOS移植-国产芯片交流-电子工程世界-论坛(eeworld.com.cn)上篇已经实现了FreeRTOS的移植,经过2天的努力硬肝,实现了LwIP协议栈带FreeRTOS实时系统的移植。板载网络芯片为RTL8021F,可以与单片机以MII或RMII的方式连接。这里,我选择的是RMII的方式,在实际项目中我是用的DP83848,也是使用RMII的方式,RMII方式使用的引脚更少,我们可以留出更多的管脚来控制其他设备。工程代码在文末哦。以下是RMII接口
Zachary_yo 国产芯片交流
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved