网站大量收购独家精品文档,联系QQ:2885784924

USB系列之二读取USB设备的描述符.PDF

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
USB系列之二读取USB设备的描述符

USB USB USB USB UUSSBB系列之二:读取UUSSBB设备的描述符 作者:华松青 作者:华松青 作作者者::华华松松青青 在前面的文章中,我们已经给出了USB协议的链接地址,从这篇文章起,我们会涉及到许多 USB 1.1的内容,我们的指导思想是先从熟悉USB 1.1协议入手,先使用现成的HCD和USBD,直 接面对客户端驱动编程,尽快看到成果,使读者对USB的开发充满信心,进而去研究USBD和HCD 的编程方法。请读者自行阅读协议,文章中有关协议的详细情况,由于会涉及非常多的文字,恕 不能过多解释。 1、USB系统主机端的软件结构 一般来说,教科书或者协议上都会把USB主机端的软件说成有三层,第一层叫主机控制器驱 动程序HCD(Host Controller Driver),第二层叫USB驱动程序USBD(USB Driver),第三层叫客 户端驱动程序(Client Driver);实际上,我们实际看到的东西,往往HCD和USBD是由一个程序 完成的,比如windows就提供了HCD和USBD,如果你自己开发了一个USB设备,只需要在HCD 和USBD上面开发一个客户端驱动程序即可;linux也是同样,linux内核已经提供了HCD和USBD; 所以在windows和linux下我们基本上没有开发HCD和USBD的必要,而且linux还提供源代码; 但DOS就不一样了,DOS本身对USB没有任何支持,所以要想在DOS下彻底玩转USB,需要研究HCD、 USBD和客户端驱动程序。 2、DOSUSB介绍 很显然,HCD和USBD更加底层一些,需要理解的东西也更多一些;如果我们能够绕过 HCD 和USBD,直接从客户端驱动程序入手,将会容易许多。幸运的是我们可以找到一个免费的 DOS 下的USB驱动程序,叫DOSUSB,该驱动程序实现了大部分的HCD和USBD的功能,使我们进行USB 编程的好帮手。 DOSUSB目前还没有实现EHIC的驱动,也就是说还不支持USB2.0,这也是我们从USB 1.1开 始的原因之一,另一方面,由于USB2.0是兼容USB1.1的,所以,即便你在USB2.0的设备下,仍 然可以使用USB1.1的驱动程序,只不过不能实现480MB/秒的传送速度而已。 下面我们介绍一下DOSUSB。DOSUSB的官方网站如下: 可以从其官方网站上下载DOGUSB的最新版本,当前版本是1.1.1。或者在下面在下面网址下 载这个版本的DOSUSB。 /software/dosusb/dosusb.zip DOSUSB可以在非商业领域免费使用,如果肯花费费用,可以购买到源代码,从其官方网站 的论坛上看到,在2006年9月作者开出的源代码的价格是1000欧元。 DOSUSB的安装十分简便,只需要解压缩到某一个目录下即可,比如放在c:\dosusb目录下, 请自行阅读DOSUSB自带的文档,使用也非常简单,在DOS提示符下键入dosusb执行即可。 c:\dosusbdosusb 缺省情况下,DOSUSB使用int 65h作为其驱动的调用软中断,如果和你的系统有冲突,在 运行dosusb时可以加参数/I,请自行阅读DOSUSB的文档。 DOSUSB通过一个叫做URB(USB Request Block)的数据结构与客户端驱动程序进行通讯,这 一点和linux非常相似,估计作者参考了linux下的源代码,在DOSUSB文档里给出了这个结构 的定义,如下: struct { BYTE transaction_type; // 设置事务(控制传输)(2Dh),输入事务(69h)输 出事务(E1h) BYTE chain_end_flag; // 备用 BYTE dev_add; // 设备地址 BYTE end_point; // 端点号 BYTE error_code; // 错误吗 BYTE status;

文档评论(0)

l215322 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档