USB设备驱动程序的研究与开发
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注 册 表 和 I F 件 负责 帮 助 系 统 完 成识 别 设 备 以 N 文
及 分配设 备 资源 。
U B 备 层 、U B 线接 口层 。每 一 层 都 由主 机 S设 S总
和 U B 备 的不 同功 能 模 块 组 成 。图 1 示 是 一 S设 所
3 内核 数 据 结构
内核模 式 组 件 (n/ 管 理 器 等)主 要 是通 过  ̄I O 发送I \ 求 的方 式 来 运 行 驱 动 程 序 。 下 面 是 处 O请 理I 请 求时所 涉 及 的主要 内核 数据 结构 。 \ O
/ R 发送 给下 层 的U B / 将U B S 总线 驱动 程序
D i r bet > aoF n t n【R _ _ R — r eO jc 一 M jru c o I P MJC E v i
A E =D v rae T] rC et;
nSa s sC l S D fo ub tt u =U b a U B I( , r); t l d
Dr Ad v dDe ie vc ;
当系 统 加 载 或 卸 载 驱 动 程 序 时 ,I 管 理 器 \ O
负责 建立 或删 除 驱动 程序 对象 。驱动 程序 对 象 内
部包 含指 向设 备对 象 以及 不 同驱 动程 序例 程 的指
针 .其 数 据 结 构 如 图4 示 。其 中设 备 对 象保 存 所
端0 点
l
US B总线接 口 层
UB S 总线接 口
实际数据传输
UB S 总线接 口
…
…
…
…
…
…
一
一
i
…
…
…
…
…
…
一
一
;
图 1 US B系 统 的 分 层 结 构
w i3 应 用 程 序 n2 驱 动 程 序对 象
设 备对象
设备 对象
Ne t e ie xD v c
口。而要 实 现U B 件 设备 与 主机 间 稳定 的数 据 S硬
传 输 ,则 不 可避 免 的要 编 写适 合U B 件要 求 的 S硬
驱 动 程序 。为此 ,本 文结 合 实 例 ,论 述 了U B S 设
备 驱动 程序 的具 体实 现机 制和 开发 方法 。
示 是其 体 系结构 图。
图2 .其 中I 管 理 器 主 要 负责 把 用 户模 式 中 / O 的I P R 发送 至设 备 的驱 动程 序 :内核模 式 的P P n 管 理 器 负责 与操 作 系统 的其 它 内核 模 式组 件 和 驱动
1 U B系统 结 构 S
在 终端 用 户 看 来 ,U B S 系统 就 是设 备 通 过 一
第 l卷 2
第 1 期 1
电 子元 器 件 盔 用
Elc r nc Co e to i mpo e & De ieApp ia in n nt vc lc to s
Vo_ 2 l1 No. 1l No .20l v 0
2 0 1 月 0l 年 1
主 机 客户软件
US 备 B设 功 能 单 元
第 】 卷 年1 1 20 1期 21 第1 0 月
媳锗
VJ2N. 01 O 1 . 1
N V 00 O .2 1
E ] =D v o el ; R rP w r p r , , 分发例 程入 口
1 desb f re g ,rnfrlg, U L Ad rs, uf L nt t s Fas N L ); e h a e
功层 能
I 应 程 l 用序 l 辑 据 I 数传 uB 备 动 序 s设 驱 程 l
U B系统 软件 S
接口 x
l
U B 辑设备 S逻
UB 备 S 层 设
luB 线 动 序 辑 据 I s总 驱 程 l 数传 Is 控 器 动 序I B 制 驱 程 u主
一
或 多个 堆 栈 单 元 组 成 。图 3 的驱 动 程 序 栈 包 中
括2 驱 动程 序 ,当某 I P 要2 驱 动 程 序 处 理 层 R需 层
时 ,n O管理 器 可为其 堆 栈 建立2 O 单元 ,每 个n 栈
.
ed ̄r 2 1 .1 电 子 元 器 件 焘 用 5 c o t 0 01 c 3
的 主 功 能 代 码 ,MioF n t n 段 是 次 功 能 代 n ru c o 字 i
码 .它们 用于 指 明驱 动程 序应 执行 的具 体操作 。
3 . 驱 动 程 序 对 象 2
D ieE t 例程 是 驱 动 程 序 的入 口 ,一 般 由 r r nr v y
I 管 理 器 在 加 载 驱 动 程 序 的时 候 调 用 。 它 主要 \ 0
当前IP R
设备扩展
叵
臣回
匝囹 匪困
匹固
匝圃
I RP首 部
I St t o a us S t m Bu e yse f r
US  ̄备 驱 动 程 序 Bi
图4 驱 动 程 序 对 象的数 据 结构
臣
开发人 员 自定 ,其长 度 和 内容 通常都 不 固定 。
图2 US B设备 驱 动 程 序 体 系结 构
收 稿 日期 :01 — 3 1 2 0 0—9
I P ( 0 R q et ak g ,I R I e u s P c a e \ 求 包 )的数 \ O请
据结 构如 图3 所示 。 I \ O请求 包 首 部 的ISau 字段 用 于保 存 I o tts \ O请
求 经 某 个 驱 动 程 序 处 理 后 的状 态 ;U eB f r sr u e字 段 指 向用 户 的I \ 冲 区 。I 请 求 包 的堆 栈 区 由 O缓 \ O
M ru cl n F ntn 0 O Ma ru ci j F ntn o o
后 ,介 绍 了如何 编译 和加 载驱 动程序 。
图 3 I0请 求 包 的 数 据 结 构 \
wk.baidu.com
41 驱 动 程 序 入 口例 程 .
个 驱 动 程 序 对 应 一 个 。MaoF nt n 段 是 I P jru c o 字 i R
4 U B 备 驱 动 程 序 的 实现 S设
驱 动程 序 是一 些例 程 的集 合 ,它 一般 被 动地 存 在 ,以等 待 主 机 系统 软 件 (n 管 理 器 、I PP / O管 理 器 、 电源管 理器 1来 调用 。典 型 的U B 备 驱 S设 动 程序 主要 包 括若 干 例程 ,其 中有 驱 动程 序入 口
31 I P 求包 . R 请
个U B S 系统 的分 层 结 构 。 图 中 ,功 能层 负 责 实 现
U B 备 的特 定 功能 。该 层 不 需 要 理 解U B 体 S设 S具
的 串行 传输 机 制 ,而 只需 知 道 和U B 备 传 输 哪 S设
些 数据 。根据 不 同 的传 输 需要 ( 传输 数 据 量 的 如 大 小 和 速 率) ,这 样 ,通 过 客 户 软 件 ,便 可 在 和 U B 备 的功 能 单 元 进 行 通 信 时 .采 用 4 传 输 S设 种
而 目前 已经 成 为 主 机 与 外 部 设 备 连 接 的标 准 接
种 通 用 驱 动 模 型 , 旨在 实 现 对 新 硬 件 的 支 持 ,
并 可 进 一 步 降 低 所 需 驱 动程 序 的数 量 和 复 杂 性 , 以简 化驱 动 程 序 的开 发 。U B 备 所 采 用 的 驱动 S设 程 序 通 常都 是 一种 典 型 的WD M驱 动 程序 。 图2 所
类 型 进 行 操 作 ,这 四种 传 输 类 型 包 括 :控 制 传 输 、块 传输 、 中断传 输 和 同步传 输 ;U B 备层 S设 用 于实 现 主机 和U B 备 间 的 配 置通 信 ,如 分 配 S设
地址 、读 取 配置 描述 符 等 ,这些 功 能 主要 是 通过 缺省 控制 端 点 O 实 现 ;U B总 线 接 口层 可 用 于 来 S 实现 主机 和U B 备 间 的实 际数据 传输 。 S设
操作 ,因而 ,首 先需 要 通 过C etFl来 创 建访 问 ra i e e 设 备 的句 柄 。然 后 通 过 D v eo o t l 指 定 的 ei IC nr 向 c o 驱 动 发 送 特 定 的控 制 标 识 符 、缓 冲 区地 址 等 参 数 。 在 使 用 D vc IC nrl eieo o t 函数 过 程 中 ,通 常 需 o 要 注 意两 点 ,一 是d IC nrl o e 数 需 要 与 驱 wo o t C d参 o
周 明 建 .林 平 分
( 北京 工业 大 学北京 市嵌 入 式重 点 实验 室 ,北 京 1 0 2 ) 0 0 2 摘 要 :介 绍 了U B ̄ S  ̄系统 结构 ,分析 了U B S 设备 驱 动 程序 的结 构 、主 要 数 据 对 象 以及 驱 动
程序 的加 栽过 程 ,给 出了利 用D K开发WD D M型U B 备驱 动 程序 的 方法及 流程 。 S设 关键 词 :U B;WD S M;驱 动程序
有设 备 的特征 和状 态 信息 ;设 备 扩展 通 常 由驱动
5 电 子元 器 件 焘 用 2 1 .1 W . dan 4 0 01 W We c c c
/ / 电源管 理例 程人 口
D i r bet > jru c o R _ J P W— r e0 jc 一 Ma F n t n f P M — O v o i I
Us r f r eBu f e
I P 栈 R堆
I O S TACK
— _
驱动程序栈 驱动程序1 驱动 程序2
L A IN OC T O
I 栈 单元 / O U 栈 单元 O
例 程 、 即插 即用 例 程 、分 发 例 程 、电 源 管 理 例
程 、卸载 例程 等 。限 于篇 幅 ,本 文主要 讨 论驱 动 程 序 人 口例 程 及 分 发 例 程 ,并 在 完 成 这 些 例 程
萼兰 }1室塑 l 翌 茎 -
系 统 管 理 程 序
用模 户式
内核模式
Dr rnt i li ve
驱动入 口例程
Sat 例 程 trl o 制 载 例 程
分 发 例 程
D ie t t r ra l v S ro
d VE N RI Ru LOAD mAJ Rf O UNC I 】 T ON[
根U B S 电缆 和 主机 连 接 在 一起 。但 对 开发 人 员 来
程 序交 互 ,以配 置管 理 即插 即用 设 备 ;电源 管理
器 负 责 识 别 各 种 电 源事 件 ,并 传 递 给 驱 动 程 序 ;
说 。这 种 连 接 则 被 分 为 三 个 逻 辑 层 :功 能 层 、
0 引言
U B f 用 串 行 总 线 )具 有 诸 多 优 点 ,如 可 S 通
2 基 于WD M的U B 备 驱 动 程序 体 系 S设
WD ( n o sD ie d 1是 微 软 推 出 的 M Widw r r v Mo e
一
支 持热 插拔 、传输 稳 定且 速率 高 、易扩 展 等 。 因
负 责初 始 化操 作 ,如设 置 驱动 程序 对 象 中指 向各
种 例 程 的指 针 等 。其 相关 代码 如下 :
H ̄插 即用例 程人 口 l l J D i r be t > r eE tni > d D v e : r eO jc - D i r xe s n- A d ei v v o c
43 U B 备 驱 动 与 应 用 程 序 间 的 接 口 . S设
/ / 卸载 例程人 口 D ieO jc- D ieU la =D v nod r r bet> r r no d v v rU la ;
42 分 发 例 程 .
Wid w 中把 对 设 备 的 操 作 抽 象 为 对 文 件 的 no s
第 1卷 2
第 l期 l
Vo .2 11 NO 1 .1
2 0 l 月 01 年 1
NO .2 l V 0O
d i 03 6 / i n1 6 — 7 52 1 .1 1 o: .9 9j s . 3 4 9 .0 01 . 8 1 .s 5 0
UB S 设备驱动程序 的研究 与开发