USB 口驱动程序开发.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
USB 口驱动程序开发

USB 接口驱动程序开发 [日期:2011-04-19] 来源:大白菜? 作者: [字体:大 中 小] ???? 1 引言   随着微机技术水平的日益提高,传统的计算机 接口 已经不能满足当前计算机高速发展的需求,计算机业迫切需要一种新的通用型、高速 总线 接口,通用外设接口标准USB 就应运而生。   USB,全称是Universal Serial Bus(通用串行总线),是一种新型的、基于令牌的、高速的串行总线标准,由Compaq、MICroSOFt、 Intel 、 IBM 等七家公司共同开发的, 旨在解决日益增加的PC 外设与有限的 主板 插槽和端口之间的矛盾而制定的一种串行通信标准[3],自 1995 年在Comdex 上亮相以来已广泛地为各PC 厂家支持。   现在市场上几乎所有的P C 机器都配备了US B 接口,USB 接口之所以能够得到广泛支持和快速普及,是因为它具备以下优点:   正由于上述优点, 开发USB 接口的设备已成为一种发展趋势。然而随着USB 技术的迅猛发展, 传统的 USB1 . 1 接口已经不能适应用户的需求, 于是在1 9 9 9年在I nt e l 的开发者论坛大会上又提出了USB2 . 0 技术, 使得US B 不仅支持1 . 5Mb / s 的“低速”, 传输和12Mb/s 的“全速”传输,而且支持480Mb/s 的“高速”   传输,比USB1.1 标准快40 倍左右,速度的提高对于用户的最大好处就是意味着用户可以使用到更高效的外部设备, 而且具有多种速度的周边设备都可以被连接到USB 2.0 的线路上,而且无需担心数据传输时发生瓶颈效应。   2 USB 驱动程序设计   一个完整的USB 系统包括主机系统包括主机系统和USB 设备。   所有的传输事务都是由主机发起的。一个主机系统又可以分为以下几个层次结构, 如图1 所示。   USB 总线接口包括USB 主控制器和根 集线器 ,其中USB 主控制器负责处理主机与设备之间电气和协议层的互连,根集线器提供USB 设备连接点。USB 系统使用USB 主控制器来管理主机和USB 设备之间的数据传输,另外它也负责管理USB 资源,如带宽等。应用软件不能直接访问US B 设备硬件, 而通过US B 系统和USB 总线接口与USB 设备进行交互。 图1 USB 通信模型层次关系。   USB 设备包含一些向主机软件提供一系列USB设备的特征和能力的信息的设备描述符, 用来配置设备和定位USB 设备驱动程序。这些信息确保了主机以正确的方式访问设备。通常, 一个设备有一个或多个配置( C o n f i g u r a t i o n ) 来控制其行为。配置是接口( Int er fa ce )的集合,接口指出软件应该如何访问硬件。   接口又是端点(endpoint)的集合,每一个与USB 交换数据的硬件就为端点, 它是作为通信管道的一个终点。   图1 显示了一个多层次结构的通信模型, 它表明了端点和管道所扮演的角色。   2.1 USB 驱动程序结构   1) USB 驱动程序体系结构   运行在核心态的USB 驱动程序是基于WIN32 驱动程序模型WDM(Windows Driver Model )的,它采用分层驱动程序模型,由USB 总线驱动程序和USB 功能驱动程序两部分组成, 总线驱动程序由操作系统提供, 用户只需要编写相应的功能驱动程序即可。   2) 处理流程   因为I /O 管理器把每一个设备对用户程序都抽象成文件,所以用户程序通过调用文件操作API 函数就可以实现与驱动程序中某个设备的通信。   用户程序发送的请求由I /O 管理器转换为具有不同主功能代码的 IR P ( I /O 请求包) 发送给功能驱动程序。功能驱动程序接收该IRP,在回调程序中根据IRP中包含的具体操作代码, 构造相应的US B 请求, 把它放到一个新的IRP 中,并把这个新的IRP 传递给USB总线驱动程序。USB 总线驱动程序根据IRP 中所包含的USB 请求块执行相应操作, 再将操作结果通过IRP返还给功能驱动程序, 功能驱动程序接收此IRP , 将操作结果通过IRP 返还I/O 管理器。最后,I/O 管理器将此IRP 中的操作结果返回给应用程序。至此, 应用程序对USB 设备的一次I /O 操作完成, 其处理流程如图2 所示。 图2 W D M 型的U S B 驱动程序体系结构。   3 USB 设备驱动程序中关键代码实现   下面是以开发的A R M 读写驱动程序为例, 介绍USB 驱动程序中几个关键例程的实现。本驱动程序的主要功能是控制USB 设备上的 ARM 并对ARM 板进行读写操作。   1) 初始化函数 DriverEnt

文档评论(0)

vshoulrengb3 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档