ARM异常中断处理及编程.ppt
文本预览下载声明
ARM嵌入式体系结构与接口技术第7章 ARM异常中断处理及编程 第1章 嵌入式系统基础知识 第2章 ARM技术概述 第3章 ARM的指令系统 第4章 ARM汇编语言程序设计 第5章 ARM Realview MDK集成开发环境 第6章 GPIO编程 第7章 ARM异常中断处理及编程 第8章 串行通信接口 第9章 存储器接口 第10章 定时器 第11章 A/D转换器 第12章 LCD接口设计 第13章 温度监测仪开发实例 7.1 ARM异常中断处理概述 7.2 ARM体系异常种类 7.3 ARM异常的优先级 7.4 ARM 处理器模式和异常 7.5 ARM 异常响应和处理程序返回 7.6 ARM应用系统中异常中断处理程序的安装 7.7 ARM的SWI异常中断处理程序设计 7.8 FIQ和IRQ异常中断程序设计 7.9 基于ARM9 S3C2410X异常中断程序设计 7.10 小结 7.11 思考与练习 1、中断的概念 中断是一个过程,是CPU在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程。因硬件原因引起的中断过程的出现是不可预测的,即随机的,而软中断是事先安排的。 2、中断源的概念 我们把可以引起中断的信号源称之为中断源。 3、中断优先级的概念 ARM处理器中有7种类型的异常,按优先级从高到低的排列如下:复位异常(Reset)、数据异常(Data Abort)、快速中断异常(FIQ)、外部中断异常(IRQ)、预取异常(Prefetch Abort)、软件中断(SWI)和未定义指令异常(Undefined instruction) ARM的7种异常 当异常发生时,处理器会把PC设置为一个特定的存储器地址。这一地址放在被称为向量表(vector table)的特定地址范围内。向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。 当异常发生时,分组寄存器r14和SPSR用于保存处理器状态,操作伪指令如下。 R14_exception_mode = return link SPSR_exception_mode = CPSR CPSR[4∶0] = exception mode number CPSR[5] = 0 /*进入ARM状态*/ If exception_mode = = reset or FIQ then CPSR[6] = 1 /*屏蔽快速中断FIQ*/ CPSR[7] = 1 /*屏蔽外部中断IRQ*/ PC = exception vector address 异常返回时,SPSR内容恢复到CPSR, 连接寄存器r14的内容恢复到程序计数器PC。 异常处理向量表 1.复位异常 当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常中断通常用在下面两种情况下。 系统上电。 系统复位。 当复位异常时,系统执行下列伪操作: R14_svc = UNPREDICTABLE value SPSR_svc = UNPREDICTABLE value CPSR[4∶0] = 0b10011 /*进入特权模式*/ CPSR[5] = 0 /*处理器进入ARM状态*/ CPSR[6] = 1 /*禁止快速中断*/ CPSR[7] = 1 /*禁止外设中断*/ If high vectors configured then PC = 0xffff0000 Else PC = 0 1.复位异常 复位异常中断处理程序的主要功能。 ? 设置异常中断向量表。 ? 初始化数据栈和寄存器。 ? 初始化存储系统,如系统中的MMU等。 ? 初始化关键的I/O设备。 ? 使能中断。 ? 处理器切换到合适的模式。 ? 初始化C变量,跳转到应用程序执行。 2.未定义指令异常 当ARM处理器执行协处理器指令时,它必须等待一个外部协处理器应答后,才能真正执行这条指令。若协处理器没有相应,则发生未定义指令异常 当未定义异常发生时,系统执行下列的伪操作: r14_und = address of next instruction after the undefined instruction SPSR_und = CPSR CPSR[4∶0] = 0b11011 /*进入未定义指令模式*/ CPSR[5] = 0 /*处理器进入ARM状态*/ /*CPSR[6]保持不变*/ CPSR[7] = 1 /*禁止外设中
显示全部