19.08.2013 Views

ARM7TDMI-S(Rev 4)技术参考手册 - Read

ARM7TDMI-S(Rev 4)技术参考手册 - Read

ARM7TDMI-S(Rev 4)技术参考手册 - Read

SHOW MORE
SHOW LESS

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 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!