历史上的今天

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

正在发生

2021年09月29日 | ARM_Core的处理器模式与寄存器,结构杂谈

发布者:Wanderlust123 来源: eefocus关键字:处理器模式  寄存器 手机看文章 扫描二维码
随时随地手机看文章

ARM处理器的工作状态:ARM处理器有两种工作状态。在程序的执行过程中,处理器可以在两种工作状态之间切换,并且不影响相应寄存器中的内容。


ARM状态,此时处理器执行32位对齐的ARM指令;BX指令,当操作数寄存器最低位为0时,进入ARM状态。


Thumb,此时处理器执行16位对齐的Thumb指令。BX指令,当操作数寄存器最低位为1时,进入Thumb状态。


BX(Branch Exchange):BX Rn;   ##其中Rn可以是R0-R15中的任意一个。指令通过将寄存器Rn的内容拷贝到程序计数器PC来完成4Gbyte的地址空间的跳转。


在进入异常中断后,ARM内核会自动切换到ARM状态,所以在异常中断处理程序入口的是ARM指令,如果需要切换到Thumb状态必须在异常中断返回前,切换到ARM工作状态。当处理器在Thumb状态下发生异常时,返回后,自动切换到Thumb状态。


ARM处理器总是从ARM工作状态开始的。

 

ARM处理器的7中工作模式:

USE模式:正常用户模式。

FIQ模式:快速中断模式,支持高速数据传输。

IRQ模式:普通中断模式。

SVC模式:Supervisor模式,操作系统保护模式,处理软件中断swi,reset.

ABT模式:数据,指令中止模式。

UND模式:未定义模式,支持软件仿真。

SYS模式:系统模式,运行特权操作系统任务。


除用户模式之外的6中模式称为特权模式,特权模式下,程序可以访问所有的系统资源,可以任意的进行处理器模式的切换。


用户模式下不能访问一些受操作系统保护的系统资源,不能直接进行处理器模式切换,需要由应用程序产生异常处理。


特权模式中,除系统模式之外的5种模式称为异常模式。


FIQ要比IRQ的响应快很多,首先FIQ的优先级比较高,再次ARM的FIQ会有自己更多的寄存器,由ARM自动保存。


异常处理过程:将下一条指令存入LR寄存器,CPSR赋值到SPSR,强制设置CPSR运行位,跳转到异常处理函数。


返回:将LR中的值减相应的偏移量送到PC中,将SPSR的值复制到CPSR中。

异常向量表:0x0000_0000---复位Reset,进入SVC模式。

                 0x0000_0004---未定义指令,进入UND模式。

                 0x0000_0008---软件中断,进入SVC模式。

                 0x0000_000C---中止指令,进入ABT模式。

                 0x0000_0010---中止数据,进入ABT模式。

                 0x0000_0014---保留

                 0x0000_0018---IRQ中断,进入IRQ模式。

                 0x0000_001C---FIQ中断,进入FIQ模式。

 

ARM处理器中一共有37个寄存器。分别有31个通用寄存器:R0-R15, R13_svc, R14_svc, R13_abt, R14_abt, R13_und,

      R14_und, R13_irq, R14_irq, R8_frq----R14_frq。

                                            6个状态寄存器:CPSR, SPSR_svc, SPSR_abt, SPSR_und, SPSR_irq, SPSR_fiq。

R13通常用作堆栈指针。R14通常用作子程序连接。

CPSR当前程序状态寄存器。SPSR备份程序状态寄存器。

31--28:NZCV(Negative Zero Carry Overflow)

27---8:Reserve

7----5:IFT(IRQ disable FIQ disable State bit)

4----0:Mode bits

0b10000---用户模式,0b10001---FIQ模式,0b10010---IRQ模式,0b10011---SVC模式,0b10111---ABT模式,

0b11011---UND模式,0b11111---SYS模式。

 

question:为什么会根据Rn的最低位来切换状态呢,最低位是1表示8位对齐而不是16位啊。难道arm本身是16位地址对齐??

 

arm处理器的架构发展:

  

arm系统一般包括:mpcore,debug and trace,smmu,GIC,AMBA bus,security扩展,

  

  

arm中最多支持16个coprocessor,CP0-CP15,其中CP8-CP15是由arm reserve的,CP0-CP7是imp defined的。

  arm的coprocessor model中,coprocessor一般包括,

  1) 组成coprocessor interface的primary,secondary coprocessor寄存器;

  2) internal寄存器;

ARMv7以及之前的版本中,包含的coprocessor有:

  1) CP15,提供memory,cache,tcm的控制,和系统中非debug功能的寄存器;也被称为系统控制协处理器

  2) CP14,提供其他系统寄存器的访问,包括debug,trace;

  3) CP10,CP11,用作SIMD,VFP的控制,需要同时使用。

ARM的协处理器指令包括五个:

  1) CDP,协处理器数操作指令,

  2) LDC,协处理器数据加载指令,

  3) STC,协处理器数据存储指令,

  4) MCR,ARM寄存器到协处理器寄存器的数据传送指令,

  5) MRC,协处理器寄存器到ARM寄存器的数据传送指令,

 命令格式:

  

关键字:处理器模式  寄存器 引用地址:ARM_Core的处理器模式与寄存器,结构杂谈

上一篇:ARM体系架构—ARMv7-A处理器模式及寄存器
下一篇:详细解读ARM寄存器之CPSR

推荐阅读

根据报道,新加坡研究者近日研发出一款新型机器人,该机器人形状似魔鬼鱼,研究者称它为该类机器人中第一个使用单个,并依靠流体和鳍的相互作用来活动的新型机器人。与人们眼中对机器人的刻板印象不同的是,该机器人的鱼鳍灵巧而富有弹性,酷似真鱼,并且可以和真鱼一样游泳。 那如此逼真的机器人是如何设计出来的呢?据设计者透露,鱼鳍是设计的难点...
十几年前,物联网还是一个相当陌生的词,十几年后,物联网已成为人们观念中普遍的存在。随着国家大力推动物联网产业的发展以及物联网概念的逐渐普及,越来越多的人知道物联网是怎么一回事以及使用物联网可以做什么,基于物联网技术的项目也越来越多的落地应用。在大数据时代,物联网与传统产业之间的跨界整合是不可避免的,目前物联网在农业、医药、食品和...
  据海外媒体ladbible于9月20号报道,日本第二大便利店全家(FalyMart)引进一种7英尺高、外表可爱的机器人帮忙摆放货架。这是全家与机器人lexistence联手,为缓解日本劳动力而创造出这款名叫Model-T的机器人。   然而这种机器人并非具备人工智能,它要依靠人们的远程操控来完成工作。Model-T的身手敏捷,可以轻松完成搬动货物的工作。操控信号发出...
在线式气体检测仪大家应该都不陌生,在工业生产中,一般利用其可以检测环境中存在的气体种类,来查探环境是否安全。今天小编遇到了一位客户询问相关事项,今天为他而发文,给大家整理下在线式气体检测仪的故障原因以及推荐的排除故障的方法。在线式气体检测仪的故障原因:故障1、低浓度气体检测不出来排除故障方法如下:首先,检查在线式气体检测仪气泵是...

史海拾趣

问答坊 | AI 解惑

Palm软件设计前的六问

当我屁颠屁颠地跟在老师后面不厌其烦询问如何编写某个程序的时候,老师总是对我说先画出你程序的 控制流程序图吧。当时觉得麻烦,也就把这经验之谈当成了一阵风吹过。现在,走上了程序开发这条路 ,才知道开发之前系统的规化一下自已的思路是 ...…

查看全部问答∨

GR228X在线测试

前言 GR228X在线测试系统(简称GR228X测试系统或GR228X系统),是目前在线测试系统中以自动程序控制见长的典型的板测试系统。它采用高精度的测试诊断技术对印刷线路板实施快速的电子测试,是由计算机控制的组合测试系统。该类系统运行在基于Microsof ...…

查看全部问答∨

《微型计算机原理及应用》许立梓

看看对大家有没有用,谢谢支持回复…

查看全部问答∨

飞思卡尔09深圳FTF之行最新资料

飞思卡尔09年最新的工控电子方面的资料打包下载,都是pdf文档,主要是关于飞思卡尔的一些产品在工业控制行业的应用以及一些相关技术的解决方案。资料很全面,很详细。 …

查看全部问答∨

atmega128 485接收发送问题,无相应 但是串口两个RXD TXD端接能个接收数据

#define FRAMING_ERROR (1<<FE1) #define PARITY_ERROR (1<<UPE1) #define DATA_OVERRUN (1<<DOR1) #define DATA_REGISTER_EMPTY (1<<UDRE1) #define RX_BUFFER_SIZE1 64 #define TX_BUFFER_SIZE1 64 #define RevEnble()&n ...…

查看全部问答∨

找手机开发,地点北京

现有手机开发项目,要求有经验的手机开发团队参与。有意可以发:project911@163.com…

查看全部问答∨

通过sql ce 访问远程sql server2000问题

我用C#写了一段代码: System.IO.File.Delete("mydb.sdf"); string connString = "Data source=mydb.sdf"; SqlCeEngine engine = new SqlCeEngine(connString); engine.CreateDatabase(); string rdaOleDbConnectString = @"Pr ...…

查看全部问答∨

刚看了几十页感觉,STM32一书错误不少.

比如    80页19行  每个信息块被分为两页(每页2K)和16B   应该为,每个信息                 块又划 ...…

查看全部问答∨

关于DCO校正为题,请教?

#define DELTA 488 // Target DCO = DELTA*(4096) ~2MHz void Set_DCO (void) // Set DCO to selected frequency //---------------------------------------------------------------------- ...…

查看全部问答∨

国赛作品测试,大家有什么感想

本帖最后由 paulhyde 于 2014-9-15 03:56 编辑 我们明天就去作品测试了,心里很期待它能工作,拿个好成绩。  …

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

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

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

更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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