ARM七种运行模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

s3c2440中断体系结构:

如何用中断?

1.中断发生:保存别人的状态

如何中断可以事先设置,对程序初始化,使能中断。

中断发生后,进入中断模式

2.中断处理

分辨中断源

进行不同的处理

清理工作

3.恢复别人的状态

过程:外界信号上升沿、下降沿,高电平、低电平都可以设置成信号引脚设置,再进入状态寄存器。

状态寄存器连接屏蔽寄存器

进入第二个状态寄存器,储存各种中断,可以储存多个中断

进入优先级寄存器,判断中断运行顺序

再进入屏蔽使能寄存器和模式寄存器

进入优先级寄存器

进入cpu处理

cpu的处理:进入入口地址 b handleIRQ

计算返回地址,被中断处地址

保存现场,即各寄存器状态

调用处理函数

函数运行完后恢复现场

函数的处理:分辨终端

处理中断

清除数据,即清除中断

1.中断寄存器

arm的七种模式

r 用户模式r0-r15

2.fiq 快中断模式r0-r7

专用寄存器r8-r15,

3.svc 管理模式

专用寄存器r13-r14,

4.abt 数据访问终止模式

5.sys 系统模式

6.und 未定义指令终止模式

7.irq 中断模式

几种模式的区别:

嵌入式的中断:

a.不同的寄存器

b.不同的权限

c.触发条件不一样

何时使用几种模式:

usr 用户模式:arm处理器正常的程序执行状态

fiq 快中断模式:高速数据传输和通道处理

svc 管理模式:操作系统使用的保护模式

abt 数据访问终止模式:数据或者指令终止时进入,用于虚拟存储或者存储保护

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

und 未定义指令终止模式:未定义的指令执行时进入该模式,用于支持硬件处理器的软件仿真.

irq 中断模式:用于通用的中断处理

后六种是特权模式,用于处理中断、异常和特殊权限处理

用户模式是最常见的模式

2.中断中的异常

中断是一种异常。

当发生中断时,cpu进入中断模式

cpu进入异常入口,异常入口是硬件规定的一个地址

运行模式

ARM920T 支持7 种运行模式:

●用户(usr)):正常ARM 程序执行状态

●快中断(fiq)):为支持数据传输或通道处理设计

●中断(irq)):用于一般用途的中断处理

●管理(svc)):操作系统保护模式

●中止(abt ): 数据或指令预取中止后进入

●系统(sys)):操作系统的特权用户模式

●未定义(und)):执行了一个未定义指令时进入

模式的改变可由软件控制,或者由外部中断或进入异常引起。大部分应用程序都将在用户模式执行。

被称为特权模式的非用户模式,都将进入到中断服务或异常中去,或者访问受保护的资源。内部寄存器

ARM920T 总共有37 个寄存器,其中31 通用32 位寄存器和6 个状态寄存器,但不能在同一时刻对所有的寄存器可见。处理器状态和运行模式决定了哪些寄存器对程序员可见。

ARM状态时内部寄存器集在ARM 状态,16 个通用寄存器和一个状态寄存器在任意时刻都可见。

在特权(非用户)模式下,将切换到指定模式的分组(banked)寄存器。图2-3 显示了哪些寄存器在各模式下是可见的:

分组寄存器被标记了阴影三角形。

ARM 状态时寄存器被设为包含16 个直接可以访问的寄存器:R0 到R15。

除了R15,其他全部寄存器都为通用寄存器,如可能用于保存数据或地址值。除此之外,还有第17 个寄存器用于存储状态信息。

FIQ 模式包含7 个分组寄存器,分别映射到R8-14(R8_fiq-R14_fiq)。

在ARM 状态,有很多不需要保存寄存器的FIQ 处理程序。

用户,IRQ,管理中止和未定义模式都包含两个分组寄存器映射到R13 和R14,允许这些模式都都包含私有堆栈指针和链接寄存器。

Thumb 状态时内部寄存器集

Thumb 状态时的寄存器集为ARM 状态时的寄存器的分配的一个子集。

程序员能够直接访问8 个通用寄存器R0 至R7,还有程序计数器(PC),一个堆栈指针寄存器(SP),一个链接寄存器(LR)和CPSR。

各自特权模式还分别有分组堆栈指针,链接寄存器和进程保存状态寄存器(SPSR)。如图2-4 所示。

Thumb 状态访问高寄存器(Hi-Registers )

在Thumb 状态,寄存器R8-R15(“Hi registers”)不是标准的寄存器集的一部分。然而,汇编语言程序员可以受限的对它们的进行访问,可以将它们用于快速暂存。

使用MOV 指令的特殊变量可以将一个值从R0-R7(“Lo register”)范围内的寄存器传送到高寄存器或从高寄存器到第低寄存器。使用CMP 和ADD 指令也可以对高寄存器的值与寄存器的值进行比较以或相加。

更多内容请参考表3-34。

程序状态寄存器

ARM920T 包含了一个当前程序状态寄存器(Current Program Status Register-CPSR),还有5 个用于异常程序处理的程序状态保存寄存器(Saved Program Status Registers-SPSR)。这些寄存器的功能为:

●保存最近已处理的ALU 操作的信息

●控制中断的使能与禁止

●设置处理器的运行模式

图2-6 显示了各位的编排

状态代码标志位

N,Z,C 和V 位为状态代码标志位。算术或逻辑操作结果可能会改变这些位,并检验以决定是否应该执行某条指令。

在ARM 状态,所有指令都可能为条件执行:详情见表3-2。

在Thumb 状态,只有分支指令才能条件执行:详情见表3-46。

控制位

PSR (包含I,F,T 和M[4:0])的末端8 位,统称为控制位。当发生异常时将会改变这些位。

如果处理器运行在特权模式,它们也可由软件控制。

相关文档
最新文档