%@ Page Language="VB" ContentType="text/html" ResponseEncoding="gb2312" %>
工业级品质的ARM平台 |
稳定源于品质,品质源于理解,理解源于学习,我们致力于打造氛围良好的ARM学习平 台,让每一个使用我们产品的工程师能做出高品质、高稳定的作品。 |
2007年10月16日 4:52 |
首页 | 关于我们 | ARM资讯 | ARM学园 | 联系方式 | 购买指南 |
|---|
ARM9系列 |
|---|
| ARM9263开发平台 |
| ARM9263学习板 |
| ARM9263工业板 |
| ATARM9263试验板 |
| ARM7系列 |
| ARM7202开发平台 |
| ARM7202学习板 |
| ARM7202工业板 |
| ARM7202试验板 |
| 微型打印机系列 |
| 针打系列 |
| 热敏系列 |
| 液晶系列 |
公告 这是一个学习的园地,所列文章仅用于学术目的,未经许可,不得用于商业目的。 |
|---|
ARM异常的具体描述
FIQ异常是为了支持数据传输或者通道处理而设计的。在ARM状态下,系统有足够的私有寄存器,从而可以避免对寄存器保存的需求,并减小了系统上下文切换的开销。 若将CPSR的F位置为1,则会禁止FIQ中断,若将CPSR的F位清零,处理器会在指令执行时检查FIQ的输入。注意只有在特权模式下才能改变F位的状态。 可由外部通过对处理器上的nFIQ引脚输入低电平产生FIQ。不管是在ARM状态还是在Thumb状态下进入FIQ模式,FIQ处理程序均会执行以下指令从FIQ模式返回: SUBS PC,R14_fiq ,#4 该指令将寄存器 R14_fiq 的值减去 4 后,复制到程序计数器 PC 中,从而实现从异常处理程序中的返回,同时将 SPSR_mode 寄存器的内容复制到当前程序状态寄存器 CPSR 中。 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 该指令将寄存器 R14_irq 的值减去 4 后,复制到程序计数器 PC 中,从而实现从异常处理程序中的返回,同时将 SPSR_mode 寄存器的内容复制到当前程序状态寄存器 CPSR 中。 ABORT(中止) 产生中止异常意味着对存储器的访问失败。ARM微处理器在存储器访问周期内检查是否发生中止异常。 中止异常包括两种类型: ─ 指令预取中止:发生在指令预取时。 ─ 数据中止:发生在数据访问时。 当指令预取访问存储器失败时,存储器系统向ARM处理器发出存储器中止(Abort)信号,预取的指令被记为无效,但只有当处理器试图执行无效指令时,指令预取中止异常才会发生,如果指令未被执行,例如在指令流水线中发生了跳转,则预取指令中止不会发生。 若数据中止发生,系统的响应与指令的类型有关。 当确定了中止的原因后,Abort处理程序均会执行以下指令从中止模式返回,无论是在ARM状态还是Thumb状态: SUBS PC, R14_abt, #4 ;指令预取中止 SUBS PC, R14_abt, #8 ;数据中止 以上指令恢复PC(从R14_abt)和CPSR(从SPSR_abt)的值,并重新执行中止的指令。 Software Interruupt(软件中断) 软件中断指令(SWI)用于进入管理模式,常用于请求执行特定的管理功能。软件中断处理程序执行以下指令从SWI模式返回,无论是在ARM状态还是Thumb状态: MOV PC , R14_svc 以上指令恢复PC(从R14_svc)和CPSR(从SPSR_svc)的值,并返回到SWI的下一条指令。 Undefined Instruction(未定义指令) 当ARM处理器遇到不能处理的指令时,会产生未定义指令异常。采用这种机制,可以通过软件仿真扩展ARM或Thumb指令集。 在仿真未定义指令后,处理器执行以下程序返回,无论是在ARM状态还是Thumb状态: MOVS PC, R14_und 以上指令恢复PC(从R14_und)和CPSR(从SPSR_und)的值,并返回到未定义指令后的下一条指令。
|
|---|
| 返回 |
|---|