(计算机软件与理论专业论文)usb监视系统usbspy的设计与实现.pdf_第1页
(计算机软件与理论专业论文)usb监视系统usbspy的设计与实现.pdf_第2页
(计算机软件与理论专业论文)usb监视系统usbspy的设计与实现.pdf_第3页
(计算机软件与理论专业论文)usb监视系统usbspy的设计与实现.pdf_第4页
(计算机软件与理论专业论文)usb监视系统usbspy的设计与实现.pdf_第5页
已阅读5页,还剩60页未读 继续免费阅读

(计算机软件与理论专业论文)usb监视系统usbspy的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东北大学硕士学位论文 摘要 u s b 监视系统u s b s p y 的设计与实现 摘要 u s b ( u n i v e r s a ls e r i a lb u s ) 总线协议是以i n t e l 为主并由c o m p a q 、m i c r o s o f t 、 i b m 、d e c 、n o r t h e m t e l e e o m 以及日本n e c 等共七家公司共同制定的串行接口标 准,由于其即插即用及配置简单得到广泛地运用。 设备驱动程序提供连接到计算机的硬件的软件接口,它是操作系统的一个重 要组成部分。内核模式驱动是w i n d o w s 系统的一部分,它可以是逻辑虚拟或物理 设备的驱动程序。符合w d m ( w i n d o w sd r i v e rm o d e ) 驱动模型的驱动程序叫w d m 驱动程序。u s b 驱动程序也是w d m 驱动程序的一种。 一般来说驱动程序的调试方法分成2 种,一种是在驱动程序编写的时候往程 序里添加代码,这样驱动程序在d e b u g 状态下运行时调试窗口能显示输出流。这 种调试工具的代表是n u m e g av t o o l s d 提供的d e b u gm o n i t o r 。还有一种就是利用 n u m e g a 公司开发的s o r i c e 进行程序调试。s o f t i c e 可以在源代码级调试。 本论文研究、设计和实现了一种能够监视w i n d o w s 系统中u s b 功能驱动程序 内部行为的软件- - u s b s p y 。u s b s p y 采用过滤驱动程序技术截获u s b 功能驱动 程序发往u s b 总线驱动程序的数据包u r b ,并在监视窗口显示出来。该软件由四 部分组成:一个过滤驱动程序,一个完整的w d m 设备驱动程序,一个过滤驱动 程序安装程序和监视窗口程序。该软件能够在不改变u s b 功能驱动程序的前提下, 记录u s b 功能驱动程序运行过程中与底层u s b 总线驱动通信的数据。设计该软件 的目是为u s b 驱动开发人员提供一种新的驱动程序调试工具,也可以为了解u s b 协议的人员提供帮助。 关键词:u s bw d m 设备驱动程序过滤驱动程序i r pu r b 东北大学硕士学位论文 r e s e a r c ha n di m p l e m e n t a t i o no f u s bm o n i t o rs y s t e m u s b s p y a b s t r a c t u s b ( u n i v e r s a ls e r i a lb u s ) p r o t o c o li sas e r i a li n t e r f a c es t a n d a r d ,w h i c hi sp r o p o s e d a n dc o n s t i t u t e db yi n t e l ,c o m p a q , m i c r o s o f t , i b m ,d e c ,n o r t h e r nt e l e c o ma n dn e c f o ri t sp r o p e r t yo fp l u sa n dp l a ya n de a s i n e s st oc o n f i g u r e d ,u s bh a sb e e nu s e dw i d e l y ad e v i c ed r i v e rp r o v i d e sas o f t w a r ei n t e r f a c et oc o m p u t e rh a r d w a r ea n di ti sa n i m p o r t a n tp a r to fa no p e r a t i n gs y s t e m ak e r n e lm o d ed r i v e ri sap o r t i o no fw i n d o w s s y s t e m i tc a nb eal o g i c a lo rp h y s i c a ld e v i c ed r i v e r 1 0 s ew h oa c c o r dw i t hw d m ( w i n d o w sd r i v e rm o d e ) a r ee a l l e dw d m d r i v e r s u s bd r i v e ri saw d md r i v e r g e n e r a l l y , t h e r ea r et w om e t h o d so fd e b u g g i n gad r i v e r o n ei st oa d dc o d e st ot h e d r i v e rs oa st od i s p l a yt h ep r i n t i n gs t r e e m so nd e b u g g i n gw i n d o wi n d e b u gm o d e v t o o l s db yn u m e g ai ss u c hat 0 0 1 n l eo t h e rd e b u g g i n gt o o li ss o f f l c ea l s ob y n u m e g a , w h i c h c a nd e b u gp r o g r a mi ns o t n c el e v e l i nt h i sd i s s e r t a t i o n , id os o m er e s e a r c ho nh o wt oi m p r o v eu s b d r i v e rd e b u g g i n g e f f i c i e n c y a n d i m p l e m e n t a k i n d o f s o f t w a r e w i t h n a n l eo f u s b s p y = w h i c hc o n s i s t so f a f i l t e rd r i v e r ,aw h o l ew d md r i v e r ,af i l t e rd r i v e ri n s t a l l a t i o np r o g r a ma n dam o n i t o r p r o g r a m 盯1 ec o r et e c h n i q u ei nu s b s p yi st h ea p p l i c a t i o no ff i l t e rd r i v e r u s b s p y l o g st h ed e e d so ff u n c t i o nd r i v e r si nb r m d o w ss y s t e m ,a n dd i s p l a y sc a p t u r e dd a t a i n s t a n t l yo nm o n i t o rw i n d o w i th e l p sd e v e l o p e r st od e b u gu s bd r i v e r sa n da l s od o e s g o o d t ou n d e r s t a n d i n gu s b p r o t o c 0 1 k e yw o r d s :u s b ,w d md e v i c ed r i v e r , f i l t e rd r i v e r , 吧u r b - 1 1 1 - 独创性声明 本人申明所呈交的学位论文是在导师的指导下完成的。论文中取得 的研究成果除加以标注和致谢的地方外,不包含其他人已经发表或撰写 过的研究成果,也不包括本人为获得其他学位而使用过的材料。与我一 同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明 并表示谢意。 本人签名:像黎 日 期:舢步年f 月 学位论文版权使用授权书 本学位论文作者和指导教师完全了解东北大学有关保留、使用学位 论文的规定:即学校有权保留并向国家有关部门或机构送交论文的复印 件和磁盘,允许论文被查阅和借阅。本人授权东北大学可以将学位论文 的全部或部分内容编入有关数据库进行检索、交流。 ( 如作者和导师同意网上交流,请在下方签名;否则视为不同意。) 学位论文作者签名:俊抹 签字日期:0 q 。玉、1 导师签名: 签字日期: 东北大学硕士学位论文 第一章绪论 1 1 课题背景 第一章绪论 通用串行总线( u s b ,u n i v r s a ls e r i a lb u s ) 是最近几年流行的计算机与外设之 间的通信标准。1 9 9 6 年2 月公布了u s b 规范版本1 o 【l j 。由于u s b 支持即插即用, 电源管理能力及可扩展性,很多设备现在都采用了u s b 接口与计算机通信。比如 u s b 存储器,u s b 读卡器,u s b 调制解调器等等。u s b 可把多达1 2 7 个外设同时 联到系统上,所有的外设通过协议来共享u s b 的带宽。其1 2 m b p s 的带宽对于键 盘鼠标等低中速外设是完全足够的。在1 9 9 9 年2 月发布的u s b 规范版本2 0 草案 中,带宽已提升到1 2 0 2 4 0 m b p s 。 , 设备驱动程序提供连接到计算机的硬件的软件接口,它是操作系统的一个重 要组成部分。用户应用程序以一种规范的方式访闯硬件,而不必考虑必须如何控 制硬件。驱动程序是一个软件,在装入后成为操作系统内核的一部分。它使一个 或多个设备可用于用户态程序员,每个设备代表一个物理的或逻辑的硬件。比如, 一个物理硬盘可以看成两个逻辑盘c :和d :。 在w m d o w s 系统中,驱动程序使设备看起来像个文件,可以打开设备的一个 旬柄,然后应用程序可以在设备旬柄最后关闭之前向驱动程序发出读写请求。 由于许多硬件共享总线或完成类似的任务,w m d o w s 系统中提供了一些通用 的驱动程序,执行这些常见任务,设备驱动程序可以使用这些标准驱动程序的功 能。这种方法不仅使公共总线的共享更容易,而且更容易写出新的驱动程序。在 w i n d o v q s9 8 和w m d o w s2 0 0 0 中,设备驱动程序必须根据w m d o w s 驱动程序模型 ( w d m ) 设计。u s b 驱动程序也是w d m 驱动程序的一种。 w i n d o w s 已经提供了一系列的系统驱动程序,为许多标准类型设备服务。第 一种是支持不同类型的总线,如通用串行总线c o s b ) ,i e e e1 3 9 4 ( f i r e w i r e ) 和音频 端口设备等。还有一种是支持各嵇标准的设备类,如人工输入设备( 如d ) ,存储 类设备等。这些系统驱动程序简化了设备驱动程序的开发工作。对于u s b 设备驱 动开发来说,由于u s b 总线驱动程序处理了总线上的所有底层通信,设备驱动程 序只需处理用户的请求,调用总线程序提供的接口向u s b 总线发出请求即可。 过滤驱动程序也是一种驱动程序,它位于客户驱动程序上层或下层,透明的 截获发往客户驱动程序设备对象的请求。过滤驱动程序在许多核心技术上有广泛 的应用。例如,文件系统的透明加密可以采用文件系统过滤驱动程序。在文件写 到磁盘之前进行加密,在文件读出进行解密;为h i d 类驱动程序添加一个过滤驱 动程序,可以为键盘增加一些特殊的功能键,比如启动某个特定程序,如 东北大学硕士学位论文 第一章绪论 1 2 论文的研究内容 一般来说驱动程序的调试方法分成2 种,一种是在驱动程序的编写的时候往 程序里添加代码,这样调试窗1 :3 能显示驱动程序在d e b u g 状态下的输出流,如 n u m e g av t o o l s d 提供的d e b u gm o n i t o r 。还有一种就是利用n t t m e g a 公司开发的 s o 敞c e 进行程序调试。s o f h c e 可以在源代码级调试w i n 3 2 应用程序、w d m 、 n t 驱动程序、v x d 、w i n l 6 应用程序和d o s 应用程序等。 上面提到的2 种调试方法都是驱动程序开发中通用的调试工具。当编写完一 个u s b 驱动,安装起来驱动不能正常工作或功能达不到设计要求时,这就不仅仅 是语法上的闯题了。本人参与了多个u s b 设各的开发与研制,参与设计了u s b 读 卡器和u s bf s k d t m f 调制解调器。对于开发驱动程序的复杂性,尤其是驱动程 序的调试深有感触。当编写的u s b 驱动达不到设计的功能时,这时想做的事就是 弄清楚这个驱动与设备之间到底发生了哪些事情,进行了什么样的通信,到底设 备描述符有没有送到,是否主机已成功配置设备等等。这些事情是与u s b 协议相 关的,通用的调试工具满足不了要求,因此有必要开发另外一种u s b 驱动辅助调 试工具,使其能够监视u s b 设备驱动的所有动作。要弄清u s b 设备与主机之间的 通信必须得了勰u s b 协议和w d m 设备驱动工作原理。在深入了解u s b 协议和 w d m 设备驱动之后,我设计和实现了u s b 监视程序u s b s p y 。它能实时监视 设备与u s b 总线驱动之间的通信数据和设备状态,将数据存在日志中,并还可以 实时地在监视窗口显示出来。 1 3 论文的组织结构 第二章u s b 总线协议,简单讨论u s b 总线协议,其中着重讨论u s b 事务。 第三章u s b 设备架构,介绍u s b 设备与系统之间的关系,重点讨论了u s b 设备 的标准设备请求。第四章内核模式驱动,介绍w d m 驱动模型,驱动程序的架构 以及u s b 驱动设备栈。第五章在前三章的基础上具体提出了u s b s p y 的工作原理 和详细的实现。第六章u s b s p y 的应用,探讨了u s b s p y 软件的安装以及在u s b i c 读卡器驱动开发调试和u s bf s k d t m fm o d e m 驱动开发调试中的应用。第七 章结论,总结整篇论文所作的工作,并对u s b s p y 以后的研究工作进行了展望。 查苎查璺堡主兰堡堡圭 苎二主壁垒 o u t l o o k 程序。 1 2 论文的研究内容 一般来说驱动程序的调试方法分成2 种,一种是在驱动程序的编写的时候往 程序里添加代码,这样调试窗v l 能显示驱动程序在d e b u g 状态下的输出流。如 n u m e g av t a o l s d 提供的d e b u gm o n i t o r 。还有种就是利用n u m e g a 公司开发的 s o i t i c e 进行程序调试。s o i t l c e 可以在源代码级调试w i n 3 2 应用程序、w d m 、 n t 驱动程序、v x d 、w i n l 6 应用程序和d o s 应用程序等。 上面提到的2 种调试方法都是驱动程序开发中通用的调试工具。当编写完一 个u s b 驱动,安装起来驱动不能正常工作或功能达不到设计要求时,这就不仅仅 是语法上的问题了。本人参与了多个u s b 设备的开发与研匍,参与设计了u s b 读 卡器和u s bf s k d t m f 调制解调器,对于开发驱动程序的复杂性,尤其是驱动程 序的调试深有感触。当编写的u s b 驱动达不刭设计的功能时,这时想做的事就是 弄清楚这个驱动与设备之间到底发生了哪些事情,进行了什么样的通信,到底设 各描述符有没有送到,是否主机已成功配置设各等等。这些事情是与u s b 协议相 关的,通用的调试工具满足不了要求,因此有必要开发另外一种u s b 驱动辅助调 试工具t 使其能够监视u s b 设各驱动的所有动作。要弄清u s b 设各与主机之间的 通信必须得了解u s b 协议和w d m 设备驱动工作原理。在深入了解u s b 协议和 w d m 设备驱动之后,我设计和实现了u s b 监视程序一u s b s p y 。它自 实时监视 设备与u s b 总线驱动之间的通信数据和设备状态,将数据存在日志中,并还可以 实时地在监视窗口显示出来。 1 3 论文的组织结构 第二章u s b 总线协议,简单讨论u s b 总线协议,其中着重讨论u s b 事务。 第三章u s b 设备架构,介绍u s b 设备与系统之间的关系,重点讨论了u s b 设各 的标准设备请求。第四章内核模式驱动,介绍w d m 驱动模型,驱动程序的架构 以及u s b 驱动设备栈。第五章在前三章的基础上具体提出了u s b s p y 的工作原理 和详细的实现第六章u s b s p y 的应用,探讨了u s b s p y 软件的安装以及在u s b i c 读卡器驱动开发调试和u s bf s k 仍t m fm o d e m 驱动开发调试中的应用。第七 章结论总结整篇论文所作的工作,并对u s b s p y 以后的研究工作进行了展望。 章结论,总结整篇论文所作的工作,并对u s b s p y 以后的研究工作进行了展望。 东北大学硕士学位论文第二章u s b 总线协议 第二章u s b 总线协议 u s b ( u n i v e r s a ls e r i a lb u s ) 总线协议是以i n t e l 为主并由c o m p a q 、m i c r o s o f t 、 i b m 、d e c 、n o r t h e r n t e l e c o m 以及日本n e c 等共七家公司共同制定的串行接口标 准。1 9 9 4 年1 1 月制定了第一个草案,1 9 9 6 年2 月公布了u s b 规范版本1 0 。u s b 可把多达1 2 7 个外设同时联到系统上,所有的外设通过协议来共享u s b 的带宽。 其1 2 m b p s 的带宽对于键盘鼠标等低中速外设是完全足够的。在1 9 9 9 年2 月发布 的u s b 规范版本2 0 草案中,已建议将1 2 m b p s 的带宽提升到1 2 0 2 4 0 m b p s 2 1 。u s b 允许外设在主机和其它外设工作时进行连接配置,使用及移除,即所谓的即插即 用p l u g & p l a y 。同时u s b 总线的应用可以清除p c 上过多的i o 端口,而以一个 串行通道取代使p c 与外设之间的连接更容易【3 】。 2 1 总线拓扑结构 u s b 总线的物理连接是一种分层的菊花链结构。集线器m u b ) 是每个星形结构 的中心,p c 机就是主机和根,h u b 用户可以将外设或附加的h u b 与之相连。这些 附加的h u b 可以连接另外的外设以及下层h u b 。u s b 支持最多5 个h u b 层以及1 2 7 个外设。图2 1 描述了u s b 的物理拓扑结构。从中可以看出每一段的连接都是点 对点的。 图2 1 u s b 总线拓扑结构 f i g u r e2 1u s bt o p l 0 9 3 z t i 东北大学硕士学位论文第二章u s b 总线q j - i s t 2 2u s b 的物理层 u s b 的物理接口包括电气特性和机械特性。 u s b 通过一个四线电缆来传输信号与电源如图2 2 所示。 图2 2 u s b 电缆定义 f i g u r e2 2u s bc a b l e 其中晰口d 是一对差模的信号线,而v b u s 和g n d 则提供了5 v 的电源, 它可以给一些设备( 包括h u b ) 供电。当然要有一定的条件限制。 u s b 提供了两种数据传输率。一种是1 2 m b 的高速( f u l ls p e e d ) 模式,另一种是 1 5 m b 的低速模式,这两种模式可以同时存在于一个u s b 系统中,而引入低速模 式主要是为了降低要求不高的设备的成本,比如鼠标键盘等等。 u s b 信号线在高速模式下必须使用带有屏蔽的双绞线,而且最长不能超过 5 m 。而在低速模式时中可以使用不带屏蔽或不是双绞的线,但最长不能超过3 m 。 这主要是由于信号衰减的限制,为了提供信号电压保证以及与终端负载相匹配。 在电缆的每一端都使用了不平衡的终端负载。这种终端负载也保证了能够检测外 设与端口的连接或分离,并且可以区分高速与低速设备。 所有的设备都有上行的接口,上行和下行的接头是不能互换的。这保证了不 会有非法的连接出现。插头与插座有两个系列,分别为a 和b 。系列a 用于基本 固定的外围设备,而系列b 用于经常拔插的设备。这两个系列是不能互换的。 2 3u s b 协议层 我们着重介绍事务的概念以及4 种事务类型包格式,对于链路层协议由于跟 本文无关不做介绍。 当主机的一个设备驱动程序需要于设备通信时,它启动一个传输。规范定义 了一个传输为制造和执行一个通信请求的过程。一个传输可能很短,发送少到一 个字节的数据,或者很长,发送一个大文件的内容。 应用程序调用系统的a p i 来向设备的驱动请求传输。设备驱动又把这个请求 传递给其他系统级驱动和主机控制器。主机控制器然后在总线上启动这个传输。 东北大学硕士学位论文 第二章u s b 总线协议 每个传输包括一个或多个事务,每个事务又包括一个、两个或多个包。 包事务格式根据端口类型而变化。有4 种端口类型:批处理( b u l k ) ,控制 ( c o n t r 0 1 ) ,中断( i n t e r r u p t ) 和同步( i s o c h r o n o u s ) 。 2 3 1 批处理事务 批处理事务类型的特点是以错误检测和重试的方式保证主机和功能部件之间 的数据的无错发送的能力。如图2 3 所示,批处理事务是由标记,数据和握手包构 成的三阶段的事务。 在某些流控制和挂起条件下,数据阶段被握手信号替换,从而产生了没有数 据传输的两阶段的事务。 图2 3 批处理事务格式 f i g u r e2 3f o r m a to f b u l kt r a n s a c t i o n 当主机准备好了接收批处理数据的时候,它发出输入标记。功能部件端口通 过返回数据包,或者如果不能返回数据,则返回n a k 或s t a l l 握手作为应答。 n a k 表示功能部件暂时不能返回数据,而s t a l l 表示端口永久地被停止,需要 u s b 系统软件干涉。如果主机收到合法的的数据包,则它用a c k 握手来应答。如 果收到数据时主机检测到错误,它不返回握手包给功能部件。 当主机准备好了传送成批数据的时候,它首先发出一个后跟数据包的输出标 记包。如果数据由功能部件无错地接收到,那么它将返回三个握手中的一个: ( 1 ) a c k 表示数据包无错地接收到,通知主机可以发送下一个包。 ( 2 ) n a k 表示数据被无错地收到,但主机应该重新发送数据因为数据功能部件 东北大学项士学位论文g :- 事u s b 总线够议 处于妨碍它接受数据的暂时的条件( 例如缓冲满) 中。 ( 3 ) 如果端口被停止,则返回s t a l l 以告诉主机不要重试传输,因为功能部 件上有错误条件。 如果接收到的数据有c r c 或者位填充错,那么不返回任何握手。 图2 4 说明了时序位和数据p i d 在成批读和写中的用法。数据包同步经数据时 序切换位( s e q u e n c et o g g l eb i t ) 和d a t a 0 d a t a lp i d 的使用而达到。当端口经历 配置事件( c o n f i g u r a t i o ne v e n t ) 的时候,批处理端口的切换时序被初始化为d a t a 0 。 端口上的数据切换不是作为短包传送或i r p 撤消的直接结果而被初始化的。 批处理写囤 d a t a 0 批处理读 回回 d a t a id a t a 0 i 囤回 d a t a l d a t a 0 i 图2 4 批处理读和写 f i g u r e2 4r e a d i n ga n dw r i t i n go f b u l k t r a n s a c t i o n 主机总是通过配置事件初始化总线传送的第一个事务为d a t a 0p i d 。第二的 事务使用d a t a lp i d ,并且,剩余的后继数据传送轮流切换。数据包发送器根据 a c k 的接收情况来切换而接收器根据数据包的接收( r e c e i p t ) 和验收( a c c e p t a n c e ) 的情况切换。 2 3 2 控制传送 控制传送最少有2 个事务阶段:建立和状态。控制传送可以有选择性地包括 建立和状态阶段之间的数据阶段。在建立阶段里,建立事务用于向功能部件的控 制端口传输信息。建立事务在格式上类似于输出,但是使用的是建立而不是输出 的p i d 。图2 5 说明了建立事务的格式。建立总是在建立事务的数据阶段上使用 d a t a 0 p i d 。收到建立的功能部件必须接受建立数据并用a c k 应答,如果数据被 损坏,则丢弃数据且不返回握手。 东北大学硕士学位论文 第二章u s b 总线协议 图2 5 控制建立事务 f i g u r e2 5c o n t r o ls e t u pt r a n s a c t i o n 控制传送的数据阶段,如果有的话,由一个以上的输入或输出事务构成,遵 守和批处理传送相同的协议规则。所有的数据阶段里的事务都必须有相同的方向 ( 即全部输入或者全部输出) 。在数据阶段中要发送的数据的数量和其方向在建立 阶段里被指定。如果数据的数量超过了先前确定的数据包大小,数据在支持最大 的包大小的多个事务中被发送( 输入或者输出) 。任何剩下的数据都作为剩余在最 后的事务中被发送。 控制传送的状态阶段是序列中的最后一个操作。状态阶段是以相对前面的阶 段的数据流方向的变化来刻划的,并且总是使用d a t a lp i d 。例如,如果数据阶 段由输出事务构成的,状态是单一的输入事务。如果控制传送序列没有数据阶段, 那么它由建立阶段和其后的由输入事务构成的状态阶段构成。图2 6 说明了事务顺 序,数据时序位的值和控制读写序列的数据p i d 类型。时序位显示在括号中。 建立阶段 控制写台 建立阶段 无数据控f = 兰三 制传送l 婴坐i b i a 0d a t a 0 ,l 面口臣函口 d a t a 0d a t a 0 i 图2 6 控制读写序列 f i g u r e2 6s e q u e n c eo f c o n l r o lr e a d i n ga n dw r i t i n g - 7 - 争甲 一甲釜 东北大学硕士学位论文第二章u s b 总线协议 当控制端口在控制传送的数据和状态阶段中发送s t a l l 握手的时候,必须对 以后所有对此端口访问返回s t a l l 握手,直到收到建立p i d 为止。 端口收到建立p i d 之后,不应返回s t a l l 握手。 2 3 2 1 汇报状态结果 状态阶段向主机做汇报传送中的先前的建立和数据阶段的结果。可能返回三 种结果: ( 1 ) 命令序列成功地完成了。 ( 2 ) 命令序列没能完成。 ( 3 ) 功能部件还在忙于完成指令。 汇报状态总是从功能部件到主机的方向。表2 1 概括了每一种所需的应答类 型。控制写传送在状态阶段的事务的数据阶段返回状态信息。而对于控制读传送, 主机在状态阶段事务的数据阶段中发出零长度的数据包之后,功能部件在握手阶 段返回状态信息。 表2 1 状态阶段的响应 t a b l e2 1r e s p o n s eo f s t a t ep h a s e 状态响应 控制写传送( 在数据阶段发送)控制读传送( 在握手阶段发送) 功能部件完成零长度的数据包a c k 握手 功能部件有一个错s t a l l 握手s t a l l 握手 功能部件忙n a k 握手n a k 握手 对于控制读,主机向控制管道发送输出标记以启动状态阶段。主机在这一阶 段中只发送零长度的数据包,但是,功能部件可以把任何长度包作为合法的的状 态查询接受下来。应答这个数据包的管道握手表明了现在的状态。n a k 说明了功 能部件还在事务指令,并且主机应该继续状态阶段。a c k 说明了功能部件完成指 令,准备好了接受新指令。s t a l l 说明了功能部件现在有妨碍它完成指令的错误。 对于控制写,主机发送输入标记到控制管道用以启动状态阶段。功能部件使 用握手或零长度的数据包应答以说明其现状。n a k 说明功能部件还在事务指令, 并且主机应该继续状态阶段:返回零长度的包表明指令正常完成;而s t a l l 表示 功能部件不能完成指令。功能部件期待主机在状态阶段中对数据包以a c k 应答。 如果功能部件收不到a c k ,它仍处于指令的状态阶段中,并且只要主机再发输入 标记,它将继续返回零长度的数据包。 如果在数据阶段里指令管道被发送或者被请求返回比在建立阶段中的约定更 多的数据,它应该返回s t a l l 。如果控制管道在数据阶段里返回s t a l l ,对于那 个控制传送将没有状态阶段。 东北大学硕士学位论文第二章u s b 总线协议 2 3 2 2 可变长度数据阶段 控制管道可以放进可变长度的数据阶段,在可变长度的数据阶段中主机请求 比指定的数据结构中所能包含的更多的数据。当全部的数据结构被返回到主机的 时候,功能部件应该向管道返回一个短于包最大长度( m a x p a c k e t s i z e ) 的包以表 明数据阶段的结束。如果数据结构是数据是管道包最大长度( w m a x p a e k e t s i z e ) 整数倍,功能部件将返回零长度的包以表明数据阶段的结束。 2 3 2 3 最后数据事务的出错处理( e r r o rh a n d l i n g ) 如果输入事务的a c k 握手损坏,功能部件和主机在事务是否成功上这个问题 上将暂时不一致。如果此事务的后面跟着另一个输入事务,切换重试机制( t o g g l e r e t r ym e c h a n i s m ) 将检测失配并从错误中恢复原状。如果此a c k 是数据阶段最后 的输入事务上的,则不能使用切换重试机制而必须使用另一种机制。 成功收到最后输入数据的主机将会发送a c k ,然后主机将发出输出标记以启 动传送的状态阶段。如果功能部件收不到结束数据阶段的a c k ,功能部件将好象 主机成功地收到数据那样去解释状态阶段的开始。而控制写则没有这种模棱两可 的情况。如果输出事务上的a c k 握手损坏,主机将不进入状态阶段而是重发最后 的数据。 2 3 2 4 控制管道返回的s t a i i i 握手 控制管道具有在控制传送中根据功能部件的问题返回s t a l l 握手的独特能 力。如果设备不能完成指令,它将在控制传送的数据和( 或) 状态阶段中返回 s t a l l 。与功能s t a l l 的情况不同,协议s t a l l 并不表示设备错误。协议s t a l l 条件一直持续到接受到下一个建立事务,且功能部件将对于任何输入或输出事务 返回s t a l l 直到管道上的建立事务被收到为止。一般来说,协议s t a l l 表示请 求或者其参数不能被设备所理解,这样提供用来扩展u s b 请求的机制。 另外,控制管道也可以支持功能s t a l l ,但是不推荐使用。因为控制管道上 的功能s t a l l 表示它失去和主机通信的能力,所以这是一种退化的情况。如果控 制管道的确要支撑功能s t a l l ,它必须拥有能被主机设置或者清除的停止特征。 2 3 3 中断事务 中断事务可由输入或输出构成。一收到输入标记,功能部件便可返回数据, n a k 或s t a l l 。如果端口没有新的中断信息( 即没有等待事务的中断) 可供返回, 功能部件在数据阶段里返回n a k 握手。如果中断端口的停止特征被设置了,功能 部件将返回s t a l l 握手。如果中断是等待事务的,功能部件象数据包那样返回中 断信息。作为对数据包接收的反应,主机如果数据无错地被接受则发出a c k 握手, 或者如果数据包损坏则不返回握手。图2 7 说明了中断事务格式。 东北大学硕士学位论文第二章u s b 总线协议 图2 7 中断事务格式 f i g u r e2 7f o r m a to f i n t e r r u p tt r a n s a c t i o n 当端口为实际的中断数据使用中断传送机制的时候,必须遵循数据切换协议。 这使功能部件得知主机收到了数据,并且事件条件被清除。这种“确保的”事件 传送允许功能部件只发送中断信息直到它被主机接收,而不是在u s b 系统软件清 除中断条件之前,每次数据功能部件被选中时就必须要发送中断数据。 另外,中断端口可被用来为某些同步功能部件传达速率反馈信息。用于这种 模式时,在每个数据包被送到主机之后,都不管握手包是否存在或类型如何,数 据切换位都应该改变。只有中断输入端口支持这种能力。 2 3 4 同步事务 如图2 8 所示,同步( i s o ) 事务有标记和数据阶段,而没有握手阶段。主机 发出输入或输出标记,后跟着端口( 输入) 或主机( 输出) 传送数据的数据阶段。 i s o 事务不支持握手阶段或重试能力。 图2 8 同步事务格式 f i g u r e2 8f o r m a t o f s y n c h r o n i z a t i o n t r a n s a c t i o n - 1 0 - 东北大学硕士学位论文 第三章u s b 设备架构 第三章u s b 设备架构 u s b 设备可被划分三层: ( 1 ) 底层是传送和接收数据包的总线接口。 ( 2 ) 中间层处理总线接口与不同端点之间的数据路由。端点是数据的终结提供 处或使用处,它可被看作数据源或数据接收端( s i n k ) 。 ( 3 ) 最上层的功能由串行总线设备提供,比如鼠标,或i s d n 接口。 本章描述的是u s b 设备中间层的通用属性与操作。设备的特定功能部分用这 些属性与操作,通过总线接口最终与主机( h o 蚋通信【4 】。 3 1u s b 设备状态 u s b 设备有若干可能的状态,其中一些对于u s b 与主机s t ) 来说是外置的, 而另外一些对u s b 设备来说是内置的,这一节描述的就是这些外置状态。 3 1 1 外置的设备状态 本小节描述的是外部可见的u s b 设备状态。表3 1 汇集这些外置设备状态之 间的转化关系。 u s b 设备会响应上行端口( u p s t r e a mp o r t ) 传来一个复位( r e s e t ) 信号进行复位操 作。当r e s e t 信号完成的时候,u s b 设备业已复位。 3 1 1 1 连接状态 u s b 设备可被连接到u s b 接口上或从接口断开,u s b 设备处在断开时的设备 状态不包括在说明之中。本说明中仅讨论那些处在连接状态的设备特性与操作。 3 1 1 2 加电状态( p o w e r e d ) u s b 设备的电源可来自外部电源,也可从u s b 接口的集线器而来。电源来自 外部电源的u s b 设备被称作自给电源式的( s e l f - p o w e r e d ) 。尽管自给电源式的u s b 设备可能在连接上u s b 接口以前可能已经带电,但它们直到连线上u s b 接口后才 能被看作是加电状态( p o w e r e ds t a t e ) 。而这时候v b u s 已经对设备产生作用了。 一个设备可能有既支持自给电源的,同时也支持总线电源式的配置。有一些 支持其中的一种,而另一些设备配置可能只有在自给电源下才能被使用。设备对 电源支持的能力是通过配置描述表( c o n f i g u r a t i o nd e s c r i p t o r ) 来反映的。当前的电源 供给形式被作为设备状态的一部分被反映出来。设备可在任何时候改变它们的供 电来源,比如说:从自给式向总线式改变,如果一个配置同时支持两种模式,那 此状态的最大电源需求就是指设备在两种模式下从v b u s 上获取电能的最大值。 设备必须以此最大电源作为参照,而究竟处于何状态是不考虑的。如果有一配置 东北大学硕士学位论文 第三章u s b 设备架构 仅支持一种电源模式,那么电源模式的改变会使得设备失去当前配置与地址,返 回加电状态。如果一个设备是自给电源式,并且当前配置需要大于1 0 0 m a 电流, 那么如果此设备转到了总线电源式,它必须返回地址状态( a d d r e s ss t a t e ) 。自给电 源式集线器使用v b u s 来为集线控制器( h u bc o n t r o u c r ) 提供电源,因而可以仍然保 持配置状态( c o n f i g u r e ds t a t e ) ,尽管自给电源停止提供电源。 表3 1 外置( 可见) 的设备状态 t a b l e3 1s t a t u s e so f d e v i c e 连加 缺 编配 挂说 接 电省址置 起明 不 设备尚未连接至接口,其他特性无关 是 不 设备已连接至接口,但未加电其他特性 是 是 不 设备已连接至接口,并且己加电但尚未被 复位 设各已连接至接口,已加电,并被复位, 是是是不 但尚未分配地址,设备在缺省地址处可寻 址 设备己连接至接口,已加电,井被复位, 是是是是不 且分配了唯一地址,尚未被配置 设备已连接至接口,已加电。并被复位, 是是是 是是 不 且分配了唯一地址,并被配置,设备功能可 被使用 设备在至少3 毫秒以内探测不到总线活 动,自动进如挂起 是是是 设备功能不可用 3 1 1 3 缺省状态 设备加电以后,在它从总线接收到复位信号之前不应对总线传输发生响应。 在接收到复位信号之后,设备才在缺省地址处变得可寻址。 3 1 14 地址状态 所有的u s b 设备在加电复位以后都使用缺省地址。每一设备在连接或复位后 由主机分配一个唯一的地址。当u s b 设备处于挂起状态时,它保持这个地址不变。 u s b 设备只对缺省通道f i , i p e ) i i f 求发生响应,而不管设备是否已经被分配地址 东北大学硕士学位论文 第三章u s b 设备架构 或在使用缺省地址。 3 115c o n f i g u r e d ( 配置状态) 在u s b 设备正常工作以前,设备必须被正确配置。从设备的角度来看,配置 包括一个将非零值写入设备配置寄存器的操作。配置一个设备或改变一个可变的 设备设置会使得与这个相关接口的终端结点的所有的状态与配置值被设成缺省 值。这包括将正在使用( d a t et o g g l e ) 的结点( e n dp o i n t ) 的( d a t e _ t o g g l e ) 被设置成 d a t a o 。 3 1 16 中止状态 为节省电源,u s b 设备在探测不到总线传输时自动进入中止状态。当中止时, u s b 设备保持本身的内部状态,包括它的地址及配置。 所有的设备在一段特定的时间内探测不到总线活动时必须进入中止态。不管 设备是被分配了非缺省的地址或者是被配置了,已经连接的设备必须在任何加电 的时刻随时准备中止。总线活动的中止可能是因为主机本身进入了中止状态。另 外,u s b 设备必须在所连接的集线器端口失效时进入中止态。这就是所指的选择 性中止( s e l e c t i v es u s p e n d ) 。 u s b 设备在总线活动来到时结束中止态。u s b 设备也可以远程唤醒的电流信 号来请求主机退出中止态或选择性中止态。具体设备具有的远程唤醒的能力是可 选的,也就是说,如果一个设备有远程唤醒的能力,此设备必须能让主机控制此 能力的有效与否。当设备复位时,远程唤醒能力必须被禁止。 3 1 2b u se n u m e r a t i o n 总线列举 当u s b 设备接上或从u s b 设备移开的时候,主机启动一个被称作总线标识 ( b u se n u m e r a t i o n ) 的进程,来标识并管理设备状态的改变,当u s b 设备接上一个加 电端口时,系统当采取以下操作: ( 1 ) u s b 设备所连的集线器通过其通向主机的状态改变通道向主机汇报本 u s b 设备已连接上。此时,u s b 设备处于加电状态,它所连接的端口是无效的。 ( 2 ) 主机通过寻问集线器决定此次状态改变的确切含义。 ( 3 ) 主机一旦得知新设备已连上以后,它至少等待l o o m s 以使得插入操作的完 成以及设备电源稳定工作。然后主机发出端口使能及复位命令给那个端口。 ( 4 ) 集线器将发向端口的复位信号持续i o m s 。当复位信号撤消后,端口已经 有效了。这时u s b 设备处于缺省状态,并且可从v b u s 汲取小于l o o m a 的电能, 所有设备寄存器及状态已经被复位,设备可对缺省地址产生响应。 ( 5 ) 主机给设备分配一个唯一的地址,设备转向编址状态。( a d d r e s ss t a t e ) 。 ( 6 ) 在u s b 设备接受设备地址之前,它的缺省控制通道( d e f a u l tc o n t r o lp i p e ) 在缺省地址处自然是可寻址的,主机通过读取设备描述表,判决设备缺省通道的 东北大学硕士学位论文第三章u s b 设备架构 实际净数据负载。 ( 7 ) 主机从设备读取配置信息要从配置0 读到配置n - 1 ,其中n 为配置个数, 此操作须花费几个毫秒。 ( 8 ) 基于从设备取来的配置信息及设备如何被使用的信息,主机给设备一个配 置值,此刻,设备就处于配置状态( c o n f i g u r e ds t a t e ) 并此配置有关的所有端节点, 都按照配置各就各位,u s b 设备现在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论