01.12.2014 Views

RealView Compilation Tools Developer Guide - ARM Information ...

RealView Compilation Tools Developer Guide - ARM Information ...

RealView Compilation Tools Developer Guide - ARM Information ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

处 理 处 理 器 异 常<br />

6.13 系 统 模 式<br />

<strong>ARM</strong> 体 系 结 构 定 义 了 一 个 用 户 模 式 , 该 模 式 有 15 个 通 用 寄 存 器 、 一 个 PC 和 一<br />

个 CPSR。 除 该 模 式 外 , 还 有 五 个 处 理 器 特 权 模 式 , 每 个 模 式 都 有 一 个 SPSR 和<br />

许 多 寄 存 器 , 以 便 替 换 用 户 模 式 下 15 个 通 用 寄 存 器 中 的 部 分 寄 存 器 。<br />

备 注<br />

本 节 内 容 仅 适 用 于 <strong>ARM</strong> 体 系 结 构 的 版 本 v4、 v4T 和 更 新 的 版 本 。<br />

发 生 处 理 器 异 常 时 , 当 前 程 序 计 数 器 被 复 制 到 异 常 模 式 的 链 寄 存 器 中 ,CPSR 被<br />

复 制 到 该 异 常 模 式 的 SPSR 中 。 然 后 , CPSR 以 与 异 常 相 关 的 方 式 被 改 变 , 程 序<br />

计 数 器 被 设 置 到 一 个 异 常 定 义 的 地 址 , 开 始 执 行 异 常 处 理 程 序 。<br />

改 变 程 序 计 算 器 前 ,<strong>ARM</strong> 子 例 程 调 用 指 令 (BL) 将 返 回 地 址 复 制 到 r14 中 , 因 而 ,<br />

子 例 程 返 回 指 令 将 r14 移 动 到 PC (MOV pc,lr)。<br />

所 有 这 些 动 作 说 明 , 处 理 异 常 的 <strong>ARM</strong> 模 式 必 须 确 保 如 果 其 调 用 子 例 程 , 不 会 产<br />

生 另 一 个 同 类 型 的 异 常 , 因 为 该 子 例 程 的 返 回 地 址 被 异 常 的 返 回 地 址 所 覆 盖 。<br />

( 在 早 期 版 本 的 <strong>ARM</strong> 体 系 结 构 中 , 解 决 这 个 问 题 的 方 法 是 尽 量 避 免 在 异 常 模 式<br />

下 进 行 子 例 程 调 用 或 避 免 从 特 权 模 式 改 为 用 户 模 式 。 第 一 个 解 决 方 法 限 制 太 大 ,<br />

第 二 个 则 说 明 可 能 不 允 许 任 务 具 有 其 正 确 运 行 所 要 的 特 权 存 取 )。<br />

<strong>ARM</strong> 体 系 结 构 版 本 v4 和 更 新 版 本 提 供 了 一 个 被 称 为 system( 系 统 ) 模 式 的 处<br />

理 器 模 式 来 克 服 这 个 问 题 。 系 统 模 式 是 一 个 有 特 权 的 处 理 器 模 式 , 该 模 式 共 享<br />

用 户 模 式 的 寄 存 器 。 可 在 该 模 式 下 运 行 特 权 模 式 任 务 , 且 异 常 不 再 覆 盖 链 接 寄<br />

存 器 。<br />

备 注<br />

异 常 不 能 进 入 系 统 模 式 。 异 常 处 理 程 序 修 改 CPSR 以 便 进 入 系 统 模 式 。 请 参 阅 第<br />

6-29 页 的 可 重 入 中 断 处 理 程 序 的 一 个 示 例 。<br />

<strong>ARM</strong> DUI 0203BSC © 2002、 2003 <strong>ARM</strong> Limited 版 权 所 有 。 保 留 所 有 权 利 。 6-43

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

Saved successfully!

Ooh no, something went wrong!