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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

处 理 处 理 器 异 常<br />

双 通 道 DMA 传 送<br />

除 处 理 两 个 通 道 外 , 示 例 6-17 类 似 于 第 6-31 页 的 示 例 6-16。 该 代 码 是 一 个 FIQ<br />

处 理 程 序 。 它 使 用 FIQ 编 组 寄 存 器 来 维 护 中 断 间 的 状 态 。 该 代 码 最 适 合 位 于<br />

0x1c。<br />

在 示 例 代 码 中 :<br />

r8 指 向 读 取 数 据 的 I/O 设 备 的 基 本 地 址 。<br />

IOStat<br />

IOPort1Active<br />

是 从 基 本 地 址 到 寄 存 器 的 偏 移 量 , 指 示 两 个 端 口 中 的 哪 个 造<br />

成 了 中 断 。<br />

是 一 个 位 屏 蔽 , 指 示 是 否 是 第 一 个 端 口 造 成 了 中 断 ( 否 则 就<br />

假 设 第 二 个 接 口 造 成 了 中 断 )。<br />

IOPort1, IOPort2 是 要 读 取 的 寄 存 器 的 偏 移 量 。 读 取 一 个 数 据 寄 存 器 清 除 了 相<br />

应 端 口 的 中 断 。<br />

r9 指 向 从 第 一 个 端 口 传 送 数 据 到 该 存 储 器 的 位 置 。<br />

r10 指 向 从 第 二 个 端 口 传 送 数 据 到 该 存 储 器 的 位 置 。<br />

r11, r12 指 向 传 送 目 的 地 的 最 后 一 个 地 址 (r11 用 于 第 一 个 端 口 ,r12<br />

用 于 第 二 个 端 口 )。<br />

处 理 正 常 传 送 的 全 部 序 列 为 九 个 指 令 。 位 于 有 条 件 返 回 语 句 后 的 代 码 被 用 作 传<br />

送 结 束 信 号 。<br />

示 例 6-17<br />

LDR r13, [r8, #IOStat] ; Load status register to find which port<br />

; caused the interrupt.<br />

TST r13, #IOPort1Active<br />

LDREQ r13, [r8, #IOPort1] ; Load port 1 data.<br />

LDRNE r13, [r8, #IOPort2] ; Load port 2 data.<br />

STREQ r13, [r9], #4 ; Store to buffer 1.<br />

STRNE r13, [r10], #4 ; Store to buffer 2.<br />

CMP r9, r11 ; Reached the end?<br />

CMPLE r10, r12 ; On either channel?<br />

SUBNES pc, lr, #4<br />

; Return<br />

; Insert transfer complete code here.<br />

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

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

Saved successfully!

Ooh no, something went wrong!