RealView Compilation Tools Developer Guide - ARM Information ...
RealView Compilation Tools Developer Guide - ARM Information ...
RealView Compilation Tools Developer Guide - ARM Information ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
处 理 处 理 器 异 常<br />
BLEQ<br />
MOV<br />
STR<br />
ADD<br />
LDMFD<br />
SUBS<br />
ENDP<br />
C_int_handler<br />
r0,#0<br />
r0,[r4,#4]<br />
sp,sp,#4<br />
sp!,{r0-r4,r12,lr}<br />
pc,lr,#4<br />
将 其 与 没 有 使 用 __irq 关 键 字 时 的 结 果 比 较 :<br />
IRQHandler PROC<br />
STMFD<br />
MOV<br />
LDR<br />
CMP<br />
BLEQ<br />
MOV<br />
STR<br />
LDMFD<br />
ENDP<br />
sp!,{r4,lr}<br />
r4,#0x80000000<br />
r0,[r4,#0]<br />
r0,#1<br />
C_int_handler<br />
r0,#0<br />
r0,[r4,#4]<br />
sp!,{r4,pc}<br />
6.7.2 可 重 入 中 断 处 理 程 序<br />
如 果 中 断 处 理 程 序 再 次 激 活 了 中 断 , 然 后 调 用 一 个 子 例 程 , 并 且 产 生 了 另 个 一 中<br />
断 , 则 在 第 二 个 IRQ 被 占 用 时 , 子 例 程 的 返 回 地 址 ( 存 储 在 lr_IRQ 中 ) 将 被 破<br />
坏 。 在 C 语 言 中 使 用 __irq 关 键 字 不 会 造 成 重 入 中 断 处 理 程 序 所 要 求 的 对 SPSR<br />
进 行 存 储 和 恢 复 , 因 而 要 使 用 汇 编 语 言 编 写 高 层 中 断 处 理 程 序 。<br />
在 跳 转 到 嵌 套 子 例 程 或 C 函 数 前 , 重 入 中 断 处 理 程 序 须 保 存 IRQ 状 态 、 切 换 处<br />
理 器 模 式 并 为 新 的 处 理 器 模 式 保 存 该 状 态 。<br />
<strong>ARM</strong> 版 本 4 或 以 后 版 本 可 切 换 至 系 统 模 式 。 系 统 模 式 使 用 了 用 户 模 式 寄 存 器 ,<br />
并 启 用 您 的 异 常 处 理 程 序 所 要 求 的 特 权 存 取 方 式 。 有 关 详 细 信 息 请 参 阅 第 6-43<br />
页 的 系 统 模 式 。 相 反 , 在 早 于 v4 版 本 的 <strong>ARM</strong> 体 系 结 构 中 , 必 须 切 换 到 超 级 用<br />
户 模 式 。<br />
备 注<br />
该 方 法 适 用 于 IRQ 和 FIQ 中 断 。 但 是 , 因 FIQ 中 断 要 求 尽 快 得 到 服 务 , 通 常 仅<br />
有 一 个 中 断 源 , 所 以 , 可 能 不 必 为 其 提 供 重 入 特 性 。<br />
IRQ 处 理 程 序 安 全 地 激 活 中 断 所 需 的 步 骤 是 :<br />
1. 构 造 返 回 地 址 并 保 存 在 IRQ 堆 中 。<br />
2. 保 存 工 作 寄 存 器 和 spsr_IRQ。<br />
<strong>ARM</strong> DUI 0203BSC © 2002、 2003 <strong>ARM</strong> Limited 版 权 所 有 。 保 留 所 有 权 利 。 6-29