6.1.1 反常间断的品种
呼应进程称之为反常间断。例如当ARM 体系检测到外部的复位信号有用,ARM 体系的程
序就会跳转到复位处理程序。在处理反常之前,ARM 内核保存当时的处理器状况,这样当
处理程序结束时能够康复履行本来的程序。当然ARM 体系的产生反常间断后,会依照必定
的程序进行间断处理。下面咱们别离介绍ARM 体系反常,ARM 体系反常间断包含复位、
未界说的指令、软件间断,指令预取间断等。
●复位(Reset ):当处理器的复位引脚有用时,体系产生复位反常间断,程序跳转到复位异
常间断处理程序处履行。复位反常间断一般用在下面两种状况:①体系加电时 ②体系复位
时。
●未界说的指令(undefined instruction):当ARM 处理器或许时体系中是协处理器以为当时指
令未界说时,产生未界说指令反常间断。能够经过该反常间断机仿真浮点向量的运算。
●软件间断(Soft interrupt SWI):这时有用户界说的间断指令。可用于用户形式下的程序调
试特权操作指令。在实践的操作中能够经过该机制完成体系功用的调用。
●指令预取间断(Prefech Abort) :假如处理器预取的指令的地址不存在,或许该地址不答应
当时指令拜访,当该预取的指令履行时,处理器产生指令预取间断反常间断。
数据拜访间断(Data Abort):假如数据拜访指令的方针地址不存在,或许该地址不答应当时
指令拜访,处理器产生。
●外部间断请求(IRQ):当处理器的外部间断请求引脚有用,而且 CPSR 寄存器的 1 位控
制位被铲除时,处理器产生外部间断请求(IRQ)反常间断。体系中个外设一般经过该反常
间断请求处理器服务。
●快速间断请求(FIQ ):当处理器外部快速间断请求引脚有用,而且 CPSR 寄存器的 F 控
制位被铲除时,处理器产生外部间断请求(FIQ )反常间断。
6.1.2 处理反常间断的寄存器
间断形式(Abort abt ) 用于虚拟存储及存储保护
未界说指令形式(Undefined und ) 用于支撑经过软件仿真硬件的协处理器
体系形式(System sys) 用于运转特权级的操作体系
R13_svc 表明特权形式下的R13 寄存器,R_13abt 表明间断形式下的R13 寄存器,其他的各
寄存器称号意义类推。
用户形式 体系形式 特权形式 间断形式 未界说指令形式 外部间断形式 快速间断形式
CPSR CPSR CPSR CPSR CPSR CPSR CPSR
有必要保存和康复这些寄存器。
有必要运用伪操作RN 来界说这些称号。例如咱们要运用寄存器R13_abt 能够运用下面的句子。
过给各反常间断赋予必定的优先级来完成这种处理次第。当然有些反常间断时不可能一起发
生的,如指令预取间断反常间断和阮籍反常间断时由同一条指令的履行触发,它们时不可能
一起产生的。处理器履行一个特定的反常间断的进程中,称为处理器处于特定的间断形式。
各反常间断的间断向量地址以及间断的处理优先级如表 6.3 所示。
间断向量地址 反常间断类型 反常间断形式 优先级(6 级最低)
0x0 复位 特权形式(SVC) 1
0x4 未界说的指令 未界说的指令间断形式 6
0x8 软件间断 特权形式 6
0x10 数据拜访间断 间断形式 2
0x14 保存 未运用 未运用
0x18 外部间断请求 外部间断形式 4
0x1c 快速间断请求 快速间断形式 3
6.1.4 进入反常间断
6.1.5 退出反常间断
ARM 体系处理完间断后从反常间断处理程序中回来包含下面的过程。
由于整个运用体系时从复位反常间断处理程序履行的,所以复位反常间断处理程序不需要返
回。
不同的。相同,回来地址关于各种不同的反常间断也是不同的。
下面咱们别离介绍各种反常间断处理程序的回来办法。
1.SWI 和未界说指令反常间断处理程序的回来
SWI 和未界说指令反常间断是由当时履行的指令本身产生的,当 SWI 和未界说指令反常间断
产生时,程序及顺气 PC的值还未更新,它指向当时指令后边第 2 指令(关于 ARM指令来说,
它指向当时指令地址加 8 个字节的方位;关于 Thumb 指令来说,它指向当时指令地址加 4
个字节的方位)。当 SWI 和未界说指令反常间断产生时,处理器将值(PC-4)保存到反常模
式下的寄存器 lr_mode中。这时(PC-4)即指向当时的下一条指令。因而回来操作能够经过
下面的指令来完成:
MOV PC,LR
寄存器内容复制到当时程序状况寄存器 CPSR 中。
保存被间断程序的履行现场,在退出反常间断处理程序时康复被间断程序履行现场。反常中
断处理程序中运用的数据栈由用户供给。
SPSR_mode 寄存器内容复制到当时程序状况寄存器 CPSR 中。该指令只能在特权形式下运用。
2.IRQ和 FIQ 反常间断处理程序的回来
许 IRQ 间断及 FIQ 间断。假如有间断引脚有用,而且体系答应该间断产生,处理器将产生
IRQ 反常间断或 FIQ 反常间断。当 IRQ 和FIQ 反常间断产生时,程序计数器 PC 的值也经更
新,它指向当时指令后边第 3 条指令(对预 ARM 指令来说,它指向当时指令地址加 12 个字
节的方位;关于 Thumb 指令来说,它指向当时指令地址加 6 个字节的方位)。当 IRQ 和 FIQ
反常间断产生时,处理器将值(PC-4)保存到反常形式下的寄存器 lr_mode 中。这时(PC-4)
即指向当时指令后的第 2 条指令。因而回来操作能够经过下面的指令来完成:
该指令将寄存器LR中的值减4后,复制到程序计数器PC中,完成程序回来,一起将SPSR_mode
寄存器内容复制到当时程序状况寄存器 CPSR 中。
当反常间断处理程序中运用了数据栈时,能够经过下面的指令进入反常间断处理程序时保存
被间断程序的履行现场。反常间断处理程序中运用的数据栈由用户供给。
SPSR_mode 寄存器内容复制到当时程序程序寄存器 CPSR 中。该指令只能在特权形式下运用。
3.预取间断反常间断处理程序的回来
在指令预取时,假如方针地址时不合法的,该指令将被符号称有问题的指令。这时,流水线上
该指令之前的指令持续履行。当履行到该被符号称有问题的指令时,处理器产生指令预取中
止反常间断。
指令。因而指令预取间断反常间断程序应该回来到产生该指令预取间断反常间断的指令处。
而不是像前面两种状况下回来到产生间断的指令的下一条指令。
时,程序计数器 PC 的值还未更新,指向它当时指令后边第 2 条指令(关于 ARM 指令来说,
它指向当时指令地址加 8 各字节的方位;关于 Thumb 指令来说,它指向当时指令地址 4个字
节的方位)。当指令预取间断反常间断产生时,处理器将值(PC-4)保存到反常形式下的寄
存器 lr_mode 中。这时(PC-4)即指向当时指令的下一条指令。因而回来操作能够经过下面
的指令来完成:
SUSB PC , LR ,#4
该指令将寄存器 LR 中的值减 4 后,复制到程序计数器 PC 中,完成程序的回来,一起将
SPSR_mode 寄存器内容复制到当时程序状况寄存器 CPSR 中。
时保存被间断程序的履行现场,在推出反常间断处理程序时康复被间断程序的履行现场。异
常间断处理程序中运用的数据栈由用户供给。
SPSR_mode 寄存器内容复制到当时程序状况寄存器 CPSR 中。该指令只能在特权形式下运用。
4.数据拜访间断反常间断处理程序回来