Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
广州周立功单片机发展有限公司 Tel (020)38730976 38730916 Fax 38730925 http //www.zlgmcu.com<br />
2.9.5 中断请求<br />
中断请求<br />
中断请求 IRQ 异常是一个由 nIRQ 输入端的低电平所产生的正常中断 IRQ 的优先级低于 FIQ 对<br />
于 FIQ 序列它是被屏蔽的 任何时候在一个特权模式下 都可通过置位 CPSR 中的 I 位来禁止 IRQ,<br />
不管异常入口是来自 ARM 状态还是 Thumb 状态 IRQ 处理程序都会通过执行下面的指令从中断返回<br />
SUBS PC,R14_irq,#4<br />
2.9.6 中止<br />
中止<br />
中止表示当前存储器访问不能被完成 这是通过外部 ABORT 输入指示的 不管异常入口是来自 ARM<br />
状态还是 Thumb 状态 FIQ 处理程序都会通过执行下面的指令从中断返回<br />
SUBS PC,R14_fiq,#4 在存储器访问周期结束时检测中止异常<br />
有两种类型的中止<br />
预取指中止 发生在指令预取指过程中<br />
数据中止 发生在对数据访问时<br />
预取指中止<br />
预取指中止<br />
当发生预取指中止时 <strong>ARM7TDMI</strong>-S 内核将预取的指令标记为无效 但在指令到达流水线的执行阶段<br />
时才进入异常 如果指令在流水线中因为发生分支而没有被执行 中止将不会发生<br />
在处理中止的原因之后<br />
SUBS PC,R14_abt,#4<br />
不管处于哪种处理器操作状态 处理程序都会执行下面的指令<br />
这个动作恢复了 PC 和 CPSR 并重试被中止的指令<br />
数据中止 数据中止<br />
数据中止<br />
当发生数据中止时 根据指令的类型产生不同的动作<br />
数据转移指令 LDR,STR 回写到被修改的基址寄存器 中止处理程序必须注意这一点<br />
交还指令 SWP 中止好像没有被执行过一样 中止必须发生在 SWP 指令进行读访问时<br />
块数据转移指令 LDM,STM 完成 当回写被设置时 基址寄存器被更新 在指示出现中止后<br />
<strong>ARM7TDMI</strong>-S 内核防止所有寄存器被覆盖 这意味着 <strong>ARM7TDMI</strong>-S 内核总是会保护被中止的<br />
LDM 指令中的 r15 总是最后一个被转移的寄存器<br />
中止的机制使指令分页的虚拟存储器系统能够被实现 在这样一个系统中 处理器允许产生仲裁地址<br />
当某一地址的数据无法访问时 存储器管理单元 MMU 通知产生了中止 中止处理程序必须找出中止的<br />
原因 使请求的数据可以被访问并重新执行被中止的指令 应用程序不必知道可用存储器的数量 也不必<br />
知道它的被中止时所处的状态<br />
在修复产生中止的原因后<br />
SUBS PC,R14_abt,#8<br />
不管处于哪种处理器操作状态 处理程序都必须执行下面的返回指令<br />
这个动作恢复了 PC 和 CPSR 并重试被中止的指令<br />
2.9.7 软件中断指令<br />
软件中断指令<br />
软件中断指令<br />
软件中断(SWI)用于进入超级用户模式<br />
行下面的指令返回<br />
MOVS PC,R14_svc<br />
通常用于请求一个特定的超级用户函数 SWI 处理程序通过执<br />
这个动作恢复了 PC 和 CPSR 并返回到 SWI 之后的指令 SWI 处理程序读取操作码以提取 SWI 函数编<br />
号<br />
2.9.8 未定义的指令<br />
未定义的指令<br />
当 <strong>ARM7TDMI</strong>-S 处理器遇到一条系统内任何协处理器都无法处理的指令时 <strong>ARM7TDMI</strong>-S 内核执行<br />
- 16 -