课程列表

基本问题

开源资源

好好学习天天向上

联大大纲—通信电子 ;教师介绍; 单片机课程学习经验- 学习路线图; 1.概述 -应用 -定义 -特点 -构成; 2.嵌入式处理器 —DIY CPU处理器ARM处理器Cortex-A8S5PV210讨论; 3.汇编语言 -作业 4.Bootloader -作业 5.Linux内核移植 6.嵌入式Linux程序设计 7.图形用户接口QT 8.其他框架介绍; 9.嵌入式物联网应用系统设计

异常事件处理响应机制

当一个异常/中断事件发生时,微处理器会暂停正常操作,自动查找向量表。获得异常/中断事件所对应的中断向量,找到异常/中断服务子程。当服务子程运行结束后再返回主程序。

1.响应前期的准备

为了使微处理器能够正确的响应异常/中断事件,前期需要做好准备工作。

1)开辟有效堆栈区。

2)编写异常/中断服务子程序,填写异常/中断向量表。

3)服务子程序入口是否需要参数保护,注意异常/中断服务子程返回类型。

4)正确了解和设置异常/中断的申请/触发条件。

2.响应异常/中断事件

异常/中断事件发生后,微处理器响应过程如下:

1)备份寄存器。把CPSRPC保存到相应模式下的SPSR_lr_寄存器中。

2)设置当前模式寄存器组。当FIQIRQ或外部中止异常发生时,可通过检测安全配置寄存器SCR[3:1]位的内容来确定所进入的工作模式。设置的寄存器组可参见表1.2.

3)读取向量表,设PC为相应异常处理程序的入口地址,获得中断向量。

3.执行异常事件服务子程序

依照所编写的服务子程序完成异常事件的处理过程。

4.异常事件服务子程序的返回

当完成一个异常处理后返回时,异常处理程序需要执行异常返回指令,各种模式下异常入口处保留在r14PC值以及退出异常返回前需要执行的指令参见表1.6

1.6  ARM异常向量表

异常入口

返回指令

返回前r14_

描述

SVC

MOVS PC R14_svc

PC+4

PCSVC(进入超级用户模式指令), SMC(进入监视模式指令)或Undefined指令代码的地址。  

SMC

MOVS PC R14_mon

PC+4

UNDEF

MOVS PC R14_und

PC+4

PABT

SUBS PC R14_abt #4

PC+4

PC:导致预取指中止的指令地址。

FIQ

SUBS PC R14_fiq #4

PC+4

PCFIQ or IRQ的优先级而未被执行的指令地址。

IRQ

SUBS PC R14_irq #4

PC+4

DABT

SUBS PC R14_abt #8

PC+8

PC:导致数据中止的load /tore指令地址。

RESET

-

-

复位状态开始执行主程序,不需要返回。

BKPT

SUBS PC R14_abt #4

PC+4

软件断点。

从处理异常事件服务子程序返回前需要完成下面两个操作:

1) 从spsr_中恢复状态内容到cpsr中。

2) 从lr_中恢复程序断点到pc中,返回到异常中断的指令的下一条指令处执行。