ARM的异常(S3C2440)

先厘清概念
异常:异常就是在程序运行过程中(USER mode),出现了一些异常情况,而中断是异常的一种情况。
中断:中断是一种异常。

异常发生了会进入相应的模式。

ARM体系的CPU有7种工作模式:

  • User(用户模式) : ARM处理器正常的程序执行状态
  • FIQ(快速中断模式) : 当一个高优先级(fast) 中断产生时将会进入这种模式
  • IRQ(中断模式) : 通常的中断产生时将会进入这种模式
  • Svc(管理模式) : 当复位或软中断指令执行时将会进入这种模式
  • Abt(中止模式) : 当数据或指令预取中止时将会进入这种模式
  • Und(未定义指令模式) : 当执行未定义指令时会进入这种模式
  • Sys(系统模式) : 使用和User模式相同寄存器集的特权模式,运行具有特权的操作系统任务

再看一下ARM在各模式下的寄存器
在这里插入图片描述
ARM一共有37个32位寄存器。其中31个通用寄存器和6个状态寄存器。
图中带三角的寄存器在物理上是不同的寄存器。例如,R8_fiq和R8就属于不同的物理寄存器。
再重点看一下程序状态寄存器:
在这里插入图片描述

ARM对异常(中断)处理过程
1 初始化:
a 设置中断源,让它可以产生中断
b 设置中断控制器(可以屏蔽某个中断,优先级)
c 设置CPU总开关,(使能中断)

2 执行其他程序:正常程序

3 产生中断:按下按键—>中断控制器—>CPU

4 cpu每执行完一条指令都会检查有无中断/异常产生

5 发现有中断/异常产生,开始处理。对于不同的异常,跳去不同的地址执行程序。这地址上,只是一条跳转指令,跳去执行某个函数(地址),这个就是异常向量。如下就是异常向量表。
(3-5都是硬件强制做的)
在这里插入图片描述

6 这些函数做什么事情?
软件做的:
a 保存现场(各种寄存器)
b 处理异常(中断):
分辨中断源
再调用不同的处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值