1、第 27卷 第 5期 大 庆 师 范 学 院 学 报 Vol. 27 No. 52007年 10月 JOURNAL OF DAQ ING NORMAL UN IVERSITY October, 2007DMA传 送 的 C语 言 实 现吕 桂 琴(大 庆 师 范 学 院 物 理 与 电 气 信 息 工 程 系 ,黑 龙 江 大 庆 163712)摘 要 :计 算 机 采 用 直 接 存 储 器 存 取 DMA传 送 数 据 时 ,是 在 设 备 之 间 直 接 开 辟 高 速 的 数 据 通 道 ,不 需 要 CPU介 入 ,而 是 由 DMA控 制 器 直 接 控 制 。 因 此 ,编 程
2、合 理 与 否 ,直 接 影 响 计 算 机 的 运 行 效 率 和 正 确 性 ,这 里 以 实 验 为 例 ,利 用C语 言 给 出 DMA控 制 器 的 编 程 步 骤 及 其 技 巧 。关 键 词 :存 储 ; 端 口 ; 指 令 ; 总 线作 者 简 介 :吕 桂 琴 (1957 - ) ,女 ,黑 龙 江 大 庆 人 ,大 庆 师 范 学 院 物 理 与 电 气 信 息 工 程 系 教 师 ,从 事 C语 言 研 究 。中 图 分 类 号 : TP312 文 件 标 识 码 : A 文 章 编 号 : 1006 - 2165 (2007) 05 - 0024 - 02 收 稿 日
3、期 : 2007 - 03 - 270引 言直 接 存 储 器 存 取 简 称 DMA (D irectM emory Access) ,是 一 种 不 需 要 CPU干 预 ,用 硬 件 实 现 存 储 器 与 存储 器 之 间 或 存 储 器 与 外 设 之 间 进 行 的 高 速 数 据 传 送 ,主 要 用 来 传 送 数 据 块 和 大 批 量 的 数 据 。 DMA传 送 包括 : RAM I/O端 口 的 DMA读 传 送 ; I/O端 口 RAM的 DMA写 传 送 ; RAM RAM的 存 储 单 元 传 送 。 系 统总 线 分 别 受 到 CPU和 DMAC这 两 个 器
4、 件 的 控 制 ,即 CPU可 以 向 地 址 总 线 、 数 据 总 线 和 控 制 总 线 发 送 信息 , DMAC也 可 以 向 地 址 、 数 据 和 控 制 总 线 发 送 信 息 。 但 是 ,在 同 一 时 间 ,系 统 总 线 只 能 受 一 个 器 件 控 制 。当 CPU控 制 总 线 时 , DMAC必 须 与 总 线 脱 离 ;而 当 DMAC控 制 总 线 时 , CPU必 须 与 总 线 脱 离 。 因 此 ,CPU与 DMAC之 间 必 须 有 联 络 信 号 。1 DMA传 送 的 工 作 过 程 1 I/O端 口 向 DMA控 制 器 发 出 DMA请 求
5、 ,请 求 数 据 传 送 。 DMA在 接 到 I/O端 口 的 DMA请 求 后 ,向 CPU发 出 请 求 信 号 ,请 求 CPU交 出 系 统 总 线 控 制 权 。 CPU在 执 行 完 当 前 指 令 周 期 后 ,向 DMA控 制 器 发 出 总 线 允 许 信 号 ,表 示 同 意 让 出 总 线 控 制 权 。 CPU与 系 统 的 控 制 、 地 址 及 数 据 总 线 脱 离 关 系 ,处 于 等 待 状 态 ,由 DMA接 管 它 们 的 控 制 权 。 DMA控 制 器 向 I/O端 口 发 出 DMA应 答 信 号 ,表 示 接 受 I/O请 求 ,可 以 进 行
6、 DMA操 作 。 DMA控 制 器 把 进 行 DMA传 送 涉 及 到 的 RAM地 址 送 到 地 址 总 线 上 。 如 果 进 行 I/O端 口 RAM传送 , DMA控 制 器 向 I/O端 口 发 出 I/O读 命 令 ,向 RAM发 出 存 储 器 写 命 令 ;如 果 进 行 RAM I/O端 口 传 送 ,DMA控 制 器 向 RAM发 出 存 储 器 读 命 令 ,向 I/O端 口 发 出 I/O写 命 令 ,从 而 完 成 一 个 字 节 的 传 送 。 当 设 定 的 字 节 数 传 送 完 毕 , DMA传 输 过 程 结 束 ,也 可 以 由 来 自 外 部 的
7、终 止 信 号 迫 使 传 输 过 程 结 束 。DMA控 制 器 就 将 总 线 请 求 信 号 变 成 无 效 ,并 放 弃 对 总 线 的 控 制 , CPU检 测 到 总 线 请 求 信 号 无 效 后 ,也 将 响应 信 号 变 成 无 效 ,于 是 , CPU重 新 控 制 三 总 线 ,继 续 执 行 被 中 断 的 当 前 指 令 的 其 它 总 线 周 期 。2 DMA控 制 器 8237A的 基 本 功 能 2 一 个 芯 片 中 有 4个 独 立 的 DMA通 道 。 每 一 个 通 道 的 DMA请 求 都 可 以 被 允 许 或 禁 止 。 每 一 个 通 道 的 D
8、MA请 求 有 不 同 的 优 先 级 ,既 可 以 是 固 定 优 先 级 ,也 可 以 是 循 环 优 先 级 。 每 一 个 通 道 一 次 传 送 的 最 大 字 节 数 为 64KB。 8237A提 供 4种 传 送 方 式 :单 字 节 传 送 方 式 、 数 据 块 传 送 方 式 、 请 求 传 送 方 式 和 级 连 传 送 方 式 。423 8237A的 初 始 化 编 程 3 (1)命 令 字 写 入 控 制 寄 存 器 。在 初 始 化 时 必 须 设 置 控 制 寄 存 器 ,以 确 定 其 工 作 时 序 、 优 先 级 方 式 、 请 求 信 号 DREQ 和 应
9、 答 信 号DACK的 有 效 电 平 及 是 否 允 许 工 作 等 。(2)屏 蔽 字 写 入 屏 蔽 寄 存 器 。当 某 通 道 正 在 进 行 初 始 化 编 程 时 ,接 收 到 DMA请 求 ,可 能 未 初 始 化 结 束 , 8237A就 开 始 进 行 DMA传送 ,导 致 出 错 。 初 始 化 编 程 时 ,必 须 先 屏 蔽 要 初 始 化 的 通 道 ,在 初 始 化 结 束 后 再 解 除 该 通 道 的 屏 蔽 。(3)方 式 字 写 入 方 式 寄 存 器 。为 通 道 规 定 传 送 类 型 及 工 作 方 式 。(4)置 0先 /后 触 发 器 。对 口
10、地 址 DMA + 0CH执 行 一 条 输 出 指 令 (写 入 任 何 数 据 均 可 ) ,从 而 产 生 一 个 写 命 令 ,即 可 置 “ 0”先 /后 触 发 器 ,为 初 始 化 基 地 址 寄 存 器 和 基 本 字 节 寄 存 器 作 准 备 。(5)写 入 基 地 址 和 基 本 字 节 寄 存 器 。图 1 DMA编 程 流 程 图把 DMA操 作 的 存 储 区 首 址 或 末 址 写 入 地 址 寄 存 器 ,把 要 传 送 的 字 节 数减 1,写 入 基 本 字 节 寄 存 器 。 这 几 个 寄 存 器 都 是 16位 的 ,写 入 要 分 两 次 进 行 :
11、先 写 低 8位 (先 /后 触 发 器 置 1) ,后 写 高 8位 (先 /后 触 发 器 自 动 清 “ 0” )。(6)解 除 屏 蔽 。初 始 化 之 后 向 通 道 的 屏 蔽 寄 存 器 写 入 D2 D0 = 0 的 命 令 字 ,置 0相应 通 道 的 屏 蔽 触 发 器 ,准 备 响 应 DMA请 求 。(7)写 入 请 求 寄 存 器 。如 果 采 用 软 件 DMA请 求 ,在 完 成 通 道 初 始 化 之 后 ,在 程 序 的 适 当 位 置 向请 求 寄 存 器 写 入 D2 D0 = 1 的 命 令 字 ,即 可 使 相 应 通 道 进 行 DMA传 送 。4
12、DMA控 制 器 的 编 程 举 例 4 实 验 流 程 如 图 2所 示 ,来 说 明 从 存 储 器 1000: 0000H单 元 到 I/O传 送 5个字 节 的 过 程 。#include main ( )char i, aa 5 = 0x00, 0x01, 0x02, 0x03, 0x04;for( i = o; i 5; i + + )pokeb (0x1000, i, aa i ) ; outportb (0x0c, 0) ; / 3 主 清 命 令 3 /outportb (0xb, 0x45) ; / 3 设 工 作 方 式 3 /outportb (0x83, 0x1) ;
13、 / 3 写 地 址 3 /outportb (0x0a, 1) ; / 3 开 启 DMA 3 /5结 束 语DMA方 式 之 所 以 能 够 实 现 外 设 与 计 算 机 系 统 的 高 速 信 息 交 换 ,关 键 在 于 该 方 式 的 实 现 采 用 了 专 用 控制 器 而 CPU不 参 与 控 制 ,这 使 得 DMA方 式 与 其 他 I/O方 式 有 了 显 著 的 区 别 , DMA方 式 不 是 在 程 序 控 制下 进 行 的 ,而 是 以 纯 硬 件 控 制 的 方 式 进 行 的 。参 考 文 献 1 董 渭 清 . 高 档 微 机 接 口 技 术 及 应 用 M . 西 安 :西 安 交 通 大 学 出 版 社 , 1996. 2 李 大 友 . 微 型 计 算 机 接 口 技 术 M . 北 京 :清 华 大 学 出 版 社 , 1999. 3 仇 玉 章 . 微 型 计 算 机 系 统 接 口 技 术 M . 南 京 :江 苏 科 学 技 术 出 版 社 , 1997. 4 沈 美 明 . IBM - PC汇 编 语 言 程 序 设 计 M . 北 京 :清 华 大 学 出 版 社 , 1995.52