自己学驱动17——ARM工作模式和ARM9寄存器

1.ARM体系CPU的7种工作模式

(1)用户模式(usr):ARM处理器正常的程序执行状态。

(2)快速中断模式(fiq):用于高速数据传输或通道处理。

(3)中断模式(irq):用于通用的中断处理。

(4)管理模式(svc):操作系统使用的保护模式。

(5)数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。

(6)系统模式(sys):运行具有特权的操作系统任务。

(7)未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。

可以通过软件进行模式的切换,或者发生各类中断、异常时CPU自动进入相应的模式。除用户模式以外的6种工作模式都属于特权模式,大多数程序运行于用户模式,进入特权模式是为了处理中断、异常,或者访问被保护的系统资源。

2.ARM920T的寄存器

ARM920T有31个通用的32位寄存器和6个程序状态寄存器,这37个寄存器分为7组,进入某个工作模式时就使用它的那组寄存器。有些寄存器,不同的工作模式下有自己的副本,当切换到另一个工作模式时,那个工作模式的寄存器副本将被使用:这些寄存器被称为备份寄存器。从下图中可以看出fiq模式的备份寄存器最多,这是为了提高fiq的响应速度,减少保存寄存器值所花费的时间。

CPSR在七种模式下都是同一个寄存器,所以可以修改里面的值来转换到不同的工作模式下。R0~R15可以直接访问,除R15外均为通用寄存器,既可以用于保存数据也可以用于保存地址。R13~R15稍有特殊:R13又被称为栈指针寄存器sp,通常用于保存栈指针;R14又被称为程序连接寄存器,当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份,而当发生中断或异常时,对应的R14_svc、R14_irq、R14_fiq、R14_abt或R14_und保存R15的返回值;R15又被称为程序计数器PC。

3.CPSR寄存器

CPSR中主要包括以下几种状态位:

(1)T位:置位时,CPU处于Thumb状态;否则处于ARM状态。

(2)中断禁止位:I位和F位属于中断禁止位。它们被置位时,IRQ中断、FIQ中断分别被禁止。

(3)工作模式位:表明CPU当前处于什么工作模式,可以更改这些位,使CPU进入指定的工作模式。

4.SPSR寄存器

SPSR寄存器,即程序状态保存寄存器,就是在除系统和用户模式外的5种模式下来保存CPSR寄存器的备份寄存器。当一个异常发生时,将切换进入相应的工作模式,这时ARM920T的CPU将自动完成如下事情。

(1)在异常工作模式的连接寄存器R14中保存前一个工作模式的下一条,即将执行的指令的地址。对于ARM状态,这个值是当前的PC值加4或者加8。

(2)将CPSR的值复制到异常模式的SPSR。

(3)将CPSR的工作模式位设为这个异常对应的工作模式。

(4)将PC值等于这个异常模式在异常向量表中的地址,即跳转去执行异常向量表中的相应指令。

相反地,从异常工作模式退出回到之前的工作模式时,需要通过软件完成如下事情。

(1)前面进入异常工作模式时,连接寄存器中保存了前一个工作模式的一个指令地址,将它减去一个适当的值后赋给PC寄存器。

(2)将SPSR的值复制回CPSR。

从表中可以看出,进入和退出异常时PC的计算方法会根据不同的模式进行不同的计算,主要分为3类(在表格中的(1)(2)(3)表示该模式属于的分类):

(1)PC值是这些指令的地址:SWI、未定义的指令、在预取时就失败的指令。本条指令已经被执行,下一条指令的地址就是PC+4。

(2)PC值是这些指令的地址:进入快速中断、中断模式前,被打断而未执行的指令。本条指令就已经被打断,所以下一条指令就是PC当前指向的指令。

(3)PC值是这些指令的地址:导致数据访问终止的加载/存储指令(LDR、STR、LDM和STM)。这几个特殊指令,流水线技术会导致后面几条的指令都是这个指令的副本,所以该条指令相当于并未执行成功,下一条指令也就是PC当前指向的指令。

注:流水线技术导致PC的值是当前被执行指令的地址+8,然而已经被取指令的指令会继续执行,中断等打断的也只是取指令,前面已经在流水线中的指令会继续执行完毕。

时间: 2024-10-17 01:29:29

自己学驱动17——ARM工作模式和ARM9寄存器的相关文章

ARM工作模式

ARM工作模式 一.存储器格式(字对齐): Arm体系结构将存储器看做是从零地址开始的字节的线性组合.从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,一次排列.作为32位的微处理器,arm体系结构所支持的最大寻址空间为4GB. 存储器格式 1.大端格式:高字节在低地址,低字节在高地址: 2.小端格式:高字节在高地址,低字节在低地址: 指令长度: Arm微处理器的指令长度是32位的,也可以为16位(thumb状态下).Arm微处理器中支持字节(8位

浅析arm的异常、中断和arm工作模式的联系

说到异常向量,会让人联想到中断向量.其实,中断是属于异常的子集的,也就是说中断其实是异常其中的一种. 回到异常向量,他其实是一张表格,每个格子里存放的是一个地址,或者是一个跳转命令,不管是哪个,其目的都是让PC跳转到真正处理异常的代码的地方. 以下是arm的异常向量表: 图1 初步介绍完异常向量,就来对比下ARM的arm的7种工作模式: 图2 User : 非特权模式,大部分任务执行在这种模式 FIQ :   当一个高优先级(fast) 中断产生时将会进入这种模式 IRQ :   当一个低优先级

arm工作模式笔记

linux用户态程序即应用程序,在user模式 linux内核运行在svc模式 arm七个模式: usr用户模式 fiq快速中断模式 irq普通中断模式 supervior   svc模式 abort undefined system arm4以后添加的模式

ARM 寄存器 和 工作模式了解

一. ARM 工作模式 1.   ARM7,ARM9,ARM11,处理器有 7 种工作模式:Cortex-A 多了一个监视模式(Monitor) 2.  用户模式:非特权模式,大部分任务执行在这种模式,它运行在操作系统的用户态,没有权限操作其他硬件资源,只能执行处理自己的数据,也不能切换到其他模式下 3.  快速中断模式 : 当一个高优先级(fast) 中断产生时将会进入这种模式 4.  普通中断模式 : 当一个低优先级(normal) 中断产生时将会进入这种模式 5.  管理模式(SVC) :

ARM之工作模式

前言            以下内容是个人学习之后的感悟,转载请注明出处~ ARM工作模式 ARM工作模式根据功能不同,可分为7类: User Mode:用户模式.操作系统的Task一般以这种模式执行.User Mode是ARM唯一的非特权模式,这表示如 果CPU处于这种模式下,很多指令将不能够执行,因此操作系统的资源得以保护. System Mode:这是V4及其以上版本所引入的特权模式. IRQ Mode:中断模式.中断(不包括软中断)处理函数在这种模式下执行. FIQ Mode:快速中断模

嵌入式中 ARM的几种工作模式 以及异常模式的优先级

一.Arm工作模式: Arm微处理器支持7种工作模式,分别为: 1. 用户模式(Usr)            用于正常执行程序 2. 快速中断模式(FIQ)    用于高速数据传输 3. 外部中断模式(IRQ)   用于通常的中断处理 4. 管理模式(SVC)          操作系统使用的保护模式(高权限),复位和软件中断进入 5. 数据访问终止模式(abt)   当数据或指令预取终止时进入该模式,可用于虚拟内存及存储保护 6. 系统模式(sys)            运行均有特权的操作

【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)

作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42375701 相关资源下载 :  -- 三星 ARM Architecture Reference Manual 文档 : http://download.csdn.net/detail/han1202012/8324641 一. ARM 芯片类型 1. ARM 分类 (1) ARM 分类类型(芯片 | 核 | 指令架构) ARM 分类 : -- ARM 芯片类型

ARM处理器工作模式

++++++++++++++++++++++++++++++++++++++++++ 本文转载自mr_raptor的专栏,感谢mr_raptor大神. http://blog.csdn.net/mr_raptor/article/details/6556157 ++++++++++++++++++++++++++++++++++++++++++ 1.1 ARM处理器工作模式 CPU的模式可以简单的理解为当前CPU的工作状态,比如:当前操作系统正在执行用户程序,那么当前CPU工作在用户模式,这时网

2.2 ARM处理器工作模式

ARM Architecture Reference Manual Arm 指令框架手册 1. 处理器7种工作模式 Processor mode Mode number Description User usr 0b10000 Normal program execution mode FIQ fiq 0b10001 Supports a high-speed data transfer or channel process Supervisor svc 0b10011 A protected