嵌入式:ARM的工作模式与寄存器组织
创始人
2024-04-20 13:07:36
0

文章目录

    • 特权模式
      • 处理器启动时的模式转换图
    • ARM的寄存器组织
      • ARM寄存器组成概述
      • ARM状态下的寄存器组织
      • Thumb状态下的寄存器组织

CPSR(当前程序状态寄存器)的低5位用于定义当前操作模式 , 如图示

特权模式

除用户模式外的其他6种模式称为特权模式。 特权模式中除系统模式以外的5种模式又称为异常模式,即

  • FIQ(Fast Interrupt Request)
  • IRQ(Interrupt ReQuest)
  • SVC(Supervisor)
  • 中止(Abort)
  • 未定义(Undefined)

大多数应用程序在用户模式下执行,当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的系统资源,也不能改变模式,除非异常发生,这允许操作系统来控制系统资源的使用。

当特定的异常出现时,进入相应的模式,每种模式都有某些附加的寄存器,以避免异常出现时,用户模式的状态不可靠。

不能由任何异常模式进入系统模式,它与用户模式有完全相同的寄存器,并且它是特权模式,不受任何用户模式的限制。它供需要访问系统资源的操作系统任务使用,但避免了使用与异常模式有关的附加寄存器,这就使得当任何异常出现时,都不会使任务的状态不可靠。

处理器启动时的模式转换图

ARM的寄存器组织

ARM寄存器组成概述

ARM处理器总共有37个寄存器,可以分为以下两类寄存器

31个通用寄存器(包括程序计数器PC)

  • R0~R15(PC);
  • 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

ARM状态下的寄存器组织

  1. ARM状态的寄存器简介

    ARM状态下的寄存器组织

  1. ARM状态的通用寄存器

    不分组寄存器(The unbanked registers):R0~R7

    分组寄存器(The banked registers):R8~R14

    程序计数器:R15(PC)

    不分组寄存器R0~R7

    R0~R7是不分组寄存器。这意味着在所有处理器模式下,它们每一个都访问的是同一个物理寄存器。它们是真正并且在每种状态下都统一的通用寄存器。

    未分组寄存器没有被系统用于特别的用途,任何可采用通用寄存器的应用场合都可以使用未分组寄存器,但必须注意对同一寄存器在不同模式下使用时的数据保护

    分组寄存器R8-R14

    • 分组寄存器R8-R12
      FIQ模式分组寄存器R8~R12
      FIQ以外的分组寄存器R8~R12
    • 分组寄存器R13、R14
      寄存器R13通常用做堆栈指针SP
      寄存器R14用作子程序链接寄存器(Link Register-LR),也称为LR

    程序计数器R15

    • 寄存器R15被用作程序计数器,也称为PC
    • R15值的改变将引起程序执行顺序的变化,这有可能引起程序执行中出现一些不可预料的结果
    • ARM处理器采用多级流水线技术,因此保存在R15的程序地址并不是当前指令的地址
    • 一些指令对于R15的用法有一些特殊的要求
  2. ARM程序状态寄存器

    • 所有处理器模式下都可以访问当前的程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。
    • 在每种异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。
    • CPSR和SPSR的格式

Thumb状态下的寄存器组织

Thumb状态下的寄存器集是ARM状态下寄存器集的子集。程序员可以直接访问8个通用的寄存器(R0~R7),程序计数器PC、堆栈指针SP、连接寄存器LR和当前状态寄存器CPSP。每一种特权模式都各有一组SP,LR和SPSR。


参考文献:

孟祥莲.嵌入式系统原理及应用教程(第2版)[M].北京:清华大学出版社,2017.

相关内容

热门资讯

珍奥助手安卓系统下载,轻松体验 你有没有听说最近有个超级好用的助手软件——珍奥助手?没错,就是那个能让你手机生活变得更加便捷的小帮手...
安卓换ios系统.数据,数据迁... 你有没有想过,手机系统就像是我们生活中的衣服,有时候换一件新衣服,整个人都焕然一新呢?没错,今天咱们...
安卓系统提示怎么关,轻松关闭功... 手机屏幕上突然弹出一个安卓系统的提示,让你不禁皱起了眉头。别急,别慌,今天就来手把手教你如何轻松关闭...
安卓系统如何刷回flyme系统... 你是不是也和我一样,对安卓手机的Flyme系统情有独钟呢?有时候,因为一些原因,我们可能需要将手机刷...
手机订餐系统源码安卓,基于手机... 你有没有想过,每天忙碌的生活中,点外卖已经成为了一种不可或缺的享受?而这一切的背后,离不开那些默默无...
顾问营销系统安卓版,助力企业高... 你有没有想过,在这个信息爆炸的时代,如何让你的产品在众多竞争者中脱颖而出呢?别急,今天我要给你介绍一...
安卓系统连接雅马哈音箱,打造个... 你有没有想过,家里的安卓手机和雅马哈音箱也能来个甜蜜的“牵手”呢?没错,今天就要来给你揭秘,如何让这...
安卓系统文件日志查看,揭秘系统... 手机里的安卓系统文件日志,听起来是不是有点儿高深莫测?别担心,今天我就要带你一探究竟,揭开这些神秘日...
努比亚升级安卓p系统,畅享智能... 你知道吗?最近手机界可是热闹非凡呢!努比亚这个品牌,竟然悄悄地给他们的手机升级了安卓P系统。这可不是...
仿苹果装安卓系统,揭秘仿苹果装... 你有没有想过,如果你的苹果手机突然变成了安卓系统,那会是怎样的场景呢?想象你那熟悉的iOS界面,突然...
安装安卓13子系统,全新功能与... 你听说了吗?安卓13子系统终于来了!这可是安卓系统的一大革新,让我们的手机体验更加丰富多元。今天,就...
安卓系统内核日志保存,深度洞察... 你有没有想过,当你手机里的安卓系统在默默运行时,它其实就像一个勤劳的小蜜蜂,不停地记录着它的“工作日...
安卓系统可以调用dll,安卓系... 你知道吗?安卓系统竟然能调用DLL文件,这可是个让人眼前一亮的小秘密呢!想象你手中的安卓设备,不仅能...
安卓通讯 录系统代码,基于安卓... 你有没有想过,你的手机里那个默默无闻的通讯录系统,其实背后有着一套复杂的代码在支撑呢?今天,就让我带...
安卓系统版本对应关系,安卓系统... 你有没有发现,每次手机更新系统,那感觉就像给手机换了个新衣裳,焕然一新呢!不过,你知道吗?安卓系统的...
小米note安卓系统4.4.4... 你有没有用过小米Note这款手机呢?那可是我心中的小宝贝,尤其是它的安卓系统4.4.4,简直让我爱不...
安卓系统取代了谁,谁在退居幕后... 你知道吗?在科技的世界里,总有一些“老将”被新一代的“新星”所取代。今天,咱们就来聊聊这个话题:安卓...
安卓系统能否上Facebook... 你有没有想过,你的安卓手机能不能轻松登录Facebook呢?这个问题,估计不少安卓用户都好奇过。今天...
安卓系统费电怎么解决,安卓系统... 手机电量总是不够用,是不是你也觉得安卓系统的费电问题让人头疼呢?别急,今天就来给你支几招,让你的安卓...
鸿蒙怎样还原安卓系统,系统切换... 你有没有想过,鸿蒙系统竟然能还原安卓系统?这听起来是不是有点像魔法一样神奇?没错,今天就要带你一探究...