嵌入式:ARM的工作模式与寄存器组织

举报
timerring 发表于 2022/12/10 11:03:17 2022/12/10
【摘要】 CPSR(当前程序状态寄存器)的低5位用于定义当前操作模式 , 如图示 特权模式除用户模式外的其他6种模式称为特权模式。 特权模式中除系统模式以外的5种模式又称为异常模式,即FIQ(Fast Interrupt Request)IRQ(Interrupt ReQuest)SVC(Supervisor)中止(Abort)未定义(Undefined)大多数应用程序在用户模式下执行,当处理器...

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。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。