ARM七种运行模式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 位,统称为控制位。当发生异常时将会改变这些位。
如果处理器运行在特权模式,它们也可由软件控制。