一、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.
二、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寄存器的信息如下图所示。
各Field代表含义如下:
三、ARMv7-A协处理器CP15寄存器
ARMv7-A架构保护系统控制协处理器CP15,主要用于处理存储系统相关的功能。CP15只能在特权模式下访问。CP15提供了16个32位主寄存器,命名为c0-c15。c0-c15寄存器可能对应多个不同的物理寄存器。
协处理器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 )用于控制内存,系统功能以及提供状态信息。
示例:
初始化CP15:SCTLR,使能Cache,指令Cache及分支预测功能。
上一篇:Linux ARMv7架构通用中断流程(1)
下一篇:ARM_Core的处理器模式与寄存器,结构杂谈
推荐阅读最新更新时间:2024-11-13 10:17
推荐帖子
- New head job opportunity for you
- HerearesomenewjobopportunitiesforyoufromEMCChina,ifit\'sfitforyou.Plztouchme,thanksforyoursupport!Christina(028)86701200QQ:1106525264PrincipalSoftwareQAEngineer-USD/ChengduResponsibilitiesObtainingtes
- wisdompower Linux与安卓
- MSP430F5529单片机的DAC8552
- DAC8552是TI公司推出的16位双路电压输出数模转换器,本次来介绍一下这个芯片在MSP430单片机上如何使用。1.芯片的电路图介绍在这里插入图片描述一共才八个引脚,比较简单,具体介绍我就不说了,如果小伙伴们有疑问或者更具体的资料可以去官网直接去查datasheet,一共就二十来页,一会儿就看完了。2.程序介绍先来说一下dac8552库函数怎么写voidDAC8552_Init(){P1DIR|=BIT3+BIT4+BIT5;//配置MSP430的引脚
- 火辣西米秀 微控制器 MCU
- HOSTLINK协议解析
- HOSTLINK协议解析欧姆龙的PLC通信协议HOSTLINK解析,英文资料。方便各位喜欢PLC周边开发的各位^_^如何上传附件呀?今天发现上传文件不成功想发在这。^_^HOSTLINK协议解析
- tiandi8734 嵌入式系统
- 程序
- 大神,430f5529的pwm波为何不能两路同时输出?求指教程序很确定的告诉你,能两路同时输出可以同时输出多路,你分别要什么样的PWM输出?
- 龙龙4321 微控制器 MCU
- 哈工大 数字电子技术基础 数字电路王立欣教授主讲 52讲 视频教程
- 链接:http://pan.baidu.com/share/link?...4&uk=1882058826密码:0gsp哈工大数字电子技术基础数字电路王立欣教授主讲52讲视频教程谢谢分享谢谢分享谢过先。谢谢分享王立欣老师的教程好东西谢谢分享。。感谢版主的无私,本人珍藏了!!!!现行谢过了。能重新发下么,失效了失效了失效了 可以分享一下吗?楼主的失效了失效了谢谢分享
- 楞伽山人 模拟电子
- 关于C2000芯片的FLASH锁死----以及解决办法
- FLASH锁死了这是为什么,有没有办法解锁。为什么会有类似下面这几种报错:Readstatusvalue0x0001fromsymbolPRG_status(24x系列)ADCCalibrationnotcomplete,checkifdeviceisunlockedandrecalibrate.(2833x系列)答:FLASH锁死是由于在FLASH中的密码部分写入了密码。如果在烧写的的过程中,受到干扰就有机会导致FLASH锁死,如果试了下面的方
- hlx3012 微控制器 MCU
设计资源 培训 开发板 精华推荐
- LTC3736-1 的典型应用 - 具有扩频功能的双路 2 相、无 RSENSE 同步控制器
- TS431可调精密并联稳压器典型应用电路
- AM6TW-2409SZ 9V 6瓦双输出DC-DC转换器的典型应用
- NCP3135GEVB:2.9V 至 5.5V、5A 集成同步 DC-DC 降压转换器评估板
- 使用 HCNR200 的高性能模拟接收器电路概述
- DN05072/D、125W Hi-PF 单级 LED 驱动器设计说明
- LTC3586EUFE 演示板,高效 USB 电源管理器 + 双降压 + 升压 + 降压-升压 DC/DC
- MIC69153YML EV,用于工业用 0.5V、1.5V、1.8V、2.5V、3.3V DC 到 DC 单路输出电源的评估板
- FEB157-001,使用 FAN7554D PWM 控制器的评估板,高亮度 LED 驱动器
- 51+sl811读写U盘的源程序+原理图