ARM寻址方式和指令系统.pptVIP

  • 2
  • 0
  • 约7.83千字
  • 约 50页
  • 2019-12-22 发布于广东
  • 举报
四、异常中断 FIQ(Fast Interrupt Request) FIQ异常是为了支持数据传输或者通道处理而设计的。 若将CPSR的F位置为1,则会禁止FIQ中断,若将CPSR的F位清零,处理器会在指令执行时检查FIQ的输入。 注意只有在特权模式下才能改变F位的状态。 可由外部通过对处理器上的nFIQ引脚输入信号(电平信号、边沿信号)产生FIQ。不管是在ARM状态还是在Thumb状态下进入FIQ模式,FIQ处理程序均可以执行以下指令从FIQ模式返回: SUBS PC, R14_fiq , #4 四、异常中断 FIQ(Fast Interrupt Request) 四、异常中断 IRQ(Interrupt Request) IRQ异常属于正常的中断请求,可通过对处理器的nIRQ引脚输入信号(电平信号、边沿信号)产生,IRQ的优先级低于FIQ,当程序执行进入FIQ异常时,IRQ可能被屏蔽。 若将CPSR的I位置为1,则会禁止IRQ中断,若将CPSR的I位清零,处理器会在指令执行完之前检查IRQ的输入。注意只有在特权模式下才能改变I位的状态。 不管是在ARM状态还是在Thumb状态下进入IRQ模式,IRQ处理程序均可以执行以下指令从IRQ模式返回: SUBS PC , R14_irq , #4 四、异常中断 IRQ(Interrupt Request) 四、异常中断 ABORT(中止) 产生终止异常意味着对存储器的访问失败。ARM微处理器在存储器访问周期内检查是否发生终止异常。 当指令预取访问存储器失败时,存储器系统向ARM处理器发出存储器中止(Abort)信号,预取的指令被记为无效,但只有当处理器试图执行无效指令时,指令预取终止异常才会发生。 终止异常包括两种类型: 指令预取中止 数据中止 若数据中止发生,系统的响应与指令的类型有关。 当确定了中止的原因后,Abort处理程序均可以执行以下指令从中止模式返回。 SUBS PC, R14_abt, #4 ;指令预取中止 SUBS PC, R14_abt, #8 ;数据中止 四、异常中断 ABORT(取指中止) 四、异常中断 ABORT(数据中止) 四、异常中断 Software Interrupt 软件中断指令(SWI)用于进入管理模式 常用于请求执行特定的管理功能。 软件中断处理程序执行以下指令可以从SWI模式返回,无论是在ARM状态还是Thumb状态: MOVS PC , R14_svc 四、异常中断 Software Interrupt 四、异常中断 Undefined Instruction 当ARM处理器遇到不能处理的指令时,会产生未定义指令异常。采用这种机制,可以通过软件仿真扩展ARM或Thumb指令集。 处理器执行以下程序返回 MOVS PC, R14_und 四、异常中断 Undefined Instruction 四、异常中断应用程序中的异常处理 为保证在ARM处理器发生异常时不会处于未知状态,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序。 我们需要处理所有的异常,尽管我们可以简单地在某些异常处理程序处放置死循环。 五、复位 当nRESET信号由低变为高电平时,ARM处理器执行下列操作: 1. 强制CPSR中的M[4:0]变为b10011(管理模式); 2. 置位CPSR中的I和F位; 3. 清零CPSR中的T位; 4. 强制PC从地址0x00开始对下一条指令进行取指; 5. 返回到ARM状态并恢复执行 。 六、IRQ异常中断实例 1、中断向量表 六、IRQ异常中断实例 2、IRQ_SVC_HANDLER程序代码 sub lr,lr,#4 stmfd sp!,{r0-r3,lr} ldr r0,=IRQ_SVC_Vector ;//外部中断服务程序 ldr pc,[r0] 六、IRQ异常中断实例 3、向量表 MAP_ISR_STARTADDRESS SYS_RST_VECTOR #4 UDF_INS_VECTOR #4 SWI_SVC_VECTOR #4 INS_ABT_VECTOR #4 DAT_ABT_VECTOR #4 RESERVED_VECTOR #4 IRQ_SVC_VECTOR #4 FIQ_SVC_VECTOR #4 六、IRQ异常中断实例 4、IRQ中断入口IRQ_SVC_Vector ldr r0,=IRQ_SVC_VECTOR ldr r1,=IsrIRQ Str r1,[r0

文档评论(0)

1亿VIP精品文档

相关文档