CN102339260A - 一种实现usb设备免驱动的方法 - Google Patents
一种实现usb设备免驱动的方法 Download PDFInfo
- Publication number
- CN102339260A CN102339260A CN2011100432073A CN201110043207A CN102339260A CN 102339260 A CN102339260 A CN 102339260A CN 2011100432073 A CN2011100432073 A CN 2011100432073A CN 201110043207 A CN201110043207 A CN 201110043207A CN 102339260 A CN102339260 A CN 102339260A
- Authority
- CN
- China
- Prior art keywords
- usb device
- usb
- host side
- descriptor
- operational order
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
本发明揭示了一种实现USB设备免驱动的方法,首先将USB设备定义为USB存储设备,并且将该USB设备的操作协议扩展为SCSI命令集的一部分,然后利用扩展的SCSI命令集对USB设备进行操作。采用本发明,USB设备连接计算机之后采用USB存储设备的驱动程序,不需要额外安装专用驱动程序,这样可以避免不同操作系统的驱动程序不兼容的问题。
Description
技术领域
本发明涉及USB设备领域,特别涉及一种实现USB设备免驱动的方法。
背景技术
随着USB设备技术的发展,USB设备更加广泛应用于个人计算机和外围设备之间的连接。在访问USB设备的过程中,运行于计算机的应用程序必须通过驱动程序进行数据传输。如果专用的USB设备采用专用的USB驱动程序,USB设备连接计算机之后需要安装该专用驱动程序,这种方式需要针对不同的操作系统编写不同的专用驱动程序,否则会导致驱动程序不兼容,会带来很多的麻烦。
所以迫切需要一种不需要安装专用驱动程序就能使用的USB设备,这样就可以为USB设备的使用提供更大的便利。
发明内容
本发明的目的是提供一种实现USB设备免驱动的方法,使USB设备不用安装驱动就可以使用。
本发明提供一种实现USB设备免驱动的方法,包括以下步骤:
1.1、连接USB设备与主机端,所述USB设备向所述主机端枚举并自定义为存储设备;
1.2、主机端根据USB存储设备规范向所述USB设备发送命令,所述USB设备向主机端作出零存储容量的响应;
1.3、所述主机端的应用程序获取所述USB设备名称并建立与所述USB设备对应的句柄,基于预定义的USB设备操作协议并通过预定的函数调用所述句柄向所述USB设备发送操作命令;
1.4、所述USB设备接收所述操作命令并解析,依照所述预定义的USB设备操作协议进行操作并返回结果。
所述步骤1.1进一步包括以下步骤:
2.1、连接所述USB设备与主机端;
2.2、所述主机端向USB设备发送设备描述符请求;
2.3、所述USB设备自定义为存储设备并向主机端发送设备描述符;
2.4、所述主机端读取所述设备描述符。
所述设备描述符包括配置描述符,所述配置描述符又包括接口描述符,所述接口描述符包括端点描述符的数目、USB设备种类以及传输数据所用到的相关操作协议。
所述步骤1.2中,主机端根据USB存储设备规范向所述USB设备发送SCSI命令集中的CBW命令,所述USB设备向主机端作出零存储容量的响应后,所述主机端停止向USB设备发送与存储设备相关的命令。
所述步骤1.3中,所述应用程序查找已成功枚举的USB设备并建立USB设备列表,获取该表中USB设备的接口列表,根据所述接口列表查找获取USB设备名称。
所述步骤1.3中,所述应用程序建立所述USB设备的句柄后,基于预定义的USB设备操作协议并通过API函数调用所述句柄向所述USB设备发送基于所述USB设备操作协议的操作命令。
所述步骤1.4中,所述USB设备接收并解析所述操作命令后,还对其类型进行判断:
若所述操作命令属于一般的SCSI命令集,则所述USB设备返回相关描述符;
若所述操作命令属于基于所述USB设备操作协议的操作命令,则依照所述USB设备操作协议进行操作并返回结果。
采用本发明所述的一种实现USB设备免驱动的方法,首先将USB设备定义为USB存储设备,并且将该USB设备的操作协议扩展为SCSI命令集的一部分,然后利用扩展的SCSI命令集对USB设备进行操作。采用本发明,USB设备连接计算机之后采用USB存储设备的驱动程序,不需要额外安装专用驱动程序,这样可以避免不同操作系统的驱动程序不兼容的问题。
附图说明
图1是本发明的流程图;
图2是本发明的USB设备枚举过程中设备描述符框图;
图3是本发明的USB设备和主机端的数据传输框图。
具体实施方式
下面结合附图和实施例进一步说明本发明的技术方案。
首先介绍一下相关词汇的含义:USB,Universal Serial BUS,通用串行总线;API,Application Program Interface,应用程序接口;CBI,Command Block Interface,块命令接口;SCSI,Small Computer System Interface,小型计算机系统接口。
参见图1,图1显示了本发明的流程图100,包括:
101、连接USB设备与主机端,USB设备向主机端枚举并自定义为存储设备。
102、主机端向USB设备发送命令,USB设备向主机端作出零存储容量的响应。即主机端根据USB存储设备规范向所述USB设备发送命令,所述USB设备向主机端作出零存储容量的响应。
103、主机端应用程序建立与USB设备对应的句柄,向USB设备发送操作命令。即所述主机端的应用程序获取所述USB设备名称并建立与所述USB设备对应的句柄,基于预定义的USB设备操作协议并通过预定的函数调用所述句柄向所述USB设备发送操作命令。
104、USB设备接收操作命令并解析,依照预定义的USB设备操作协议进行操作并返回结果。
下面从四个方面来介绍一下以上步骤的实现过程:
⑴、USB设备的枚举过程:参见图2,USB设备连主机端之后,主机端首先向USB设备发送设备描述符请求(Get DeviceDescriptor),USB设备上报设备描述符,该描述符包括USB设备的类别(USB1.1或者USB2.0)、USB设备的产品ID和设备ID、USB设备的描述字符串以及配置描述符的数目等等。然后,主机端向USB设备发送配置描述符请求,发送该请求的次数由设备描述当中上报的数目决定,USB设备的配置描述符主要包含了USB设备的接口描述符的数目等等。USB设备的接口描述符包含了端点描述符的数目、USB设备的种类(本发明将USB设备定义为存储器设备)以及USB传输过程中用到的协议(本发明采用的传输协议为Bulk-Only方式,批量传输)。主机端根据接口描述符提供的端点的数目,一个USB接口至少应包含2个以上的端点,一个用于输入数据(主机端到USB设备),另一个用于输出数据(USB设备到主机端)。USB设备的端点描述符规定了该端点的数据缓冲区的长度和端点的种类(本发明所述USB的端点设置为批量端点)。
⑵、USB设备被定义为存储设备的过程:USB设备在枚举的过程中将自己定义为存储设备,主机端会根据USB存储设备的规范向USB设备发送CBW(Command Block Wrapper,块命令数据包)。这些CBW命令属于SCSI命令集的一部分,具体包含以下的命令:①INQUERY,USB设备发送存储设备的字符串名称;②READ LONG;③MODE SENSE;④READ10;⑤READ CAPACITY。由于本发明介绍的方式是在SCSI协议层上定义USB设备的专用操作协议,所以USB设备不是真正的存储设备,USB设备需要在READ CAPACITY这个命令的响应中,向主机端报告自己的存储容量为0,这样主机端不会发送其他操作存储设备的SCSI命令了。USB设备经过一系列的握手之后,USB设备会在PC上显示为一个移动存储设备的盘符,但是不能用鼠标点击该盘符,因为它的存储容量为0。
⑶、运行于主机端之上的应用程序访问USB设备的过程:应用程序首先查找已被成功枚举的所有USB设备,并且建立一个表。然后,应用程序根据USB存储设备的工业标志符搜索整个USB设备表,获取所有的USB存储设备的接口列表。最后,应用程序根据接口列表查找预先定义的USB存储设备名称。该名称在主机端发送CBW命令之后,由USB设备上报个主机的。应用程序找到USB设备之后,就建立句柄,接下来所有的操作都是建立在该句柄之上。所有的操作都调用API函数DeviceIoControl(对设备执行指定操作的命令),操作的方式是IOCTL_SCSI_PASS_THROUGH_DIRECT,这样用以操作USB设备的一组协议被扩展为SCSI命令集的一部分。应用程序通过这种方式,将这组扩展命令,也就是USB设备的专项操作协议,发送到USB设备。USB设备根据接收到的命令,进行相关的操作,并且返回相关的结果。
⑷、USB设备根据预先定义的操作协议进行相关操作的过程:如上所述,与USB设备进行交互的一组专项协议被扩展为SCSI命令集的一部分。USB设备接收到SCSI的命令之后,解析该命令数据包,如果该命令属于一般的SCSI命令集,那么USB设备返回和SCSI相关的描述符;如果该命令集属于SCSI命令集扩展的专项USB设备通信协议,那么USB设备解析该通信协议,并进行相关的操作和返回结果。比如,用于测量温度的温度计通过USB总线和主机端相连,该温度计作为一个设备在主机端显示成一个USB存储设备,和该设备相关的一组操作协议被定义为SCSI的命令集的扩展部分。该设备接收到SCSI命令的扩展命令,譬如测量温度这个命令,USB设备通过传感器测量环境的温度,然后通过模数转换,得到温度的数值,并且把该数值发送给主机端,紧接着还需要发送一个CSW(Command Status Wrapper,命令状态包)命令。在以上过程中,USB设备完成相关的初始化之后,不停轮询USB中断的状态。如果USB设备接收到数据,解析块命令数据包。如果该数据包是主机端发送给USB设备的数据,USB设备处理相关的数据同时向主机端发送CSW命令状态包;如果该数据包要求USB设备向主机端发送相关的数据,USB设备组织相关的数据之后打包,然后发送到USB物理总线上,再发送CSW命令状态包。
参见图3,图3显示了USB设备和主机端的数据传输实现框图,应用程序根据操作指令,调用操作系统提供的API接口(Application Program Interface,应用程序接口)访问硬盘驱动层。由于本发明介绍的这种方法将USB设备枚举成一个USB存储设备,所以应用程序访问硬盘驱动层。硬盘驱动层再将数据打包,选择批量传输的方式,将数据包发送到USB物理总线上。USB设备从物理总线上接收数据,针对不同的数据包,USB设备需要向主机端发送不同的回应。如果该数据包是一个CBW(Command Block Wrapper,命令块数据包),USB设备需要发送一个CSW(Command Status Wrapper)。针对所述的Read Capacity这个命令块,USB设备应该上报主机端该设备的存储容量都为0,这样主机端不会向该USB设备发送存储设备的操作命令。如果该数据包是一条USB设备的专项操作命令,USB设备根据相关的命令操作外围相关的设备。
综上所述,本发明首先将一种将专用的USB设备定义成USB存储设备。在主机端,该USB设备显示作为一个USB存储设备。该USB设备的操作命令集被扩展为SCSI命令集的一部分,这样应用程序可以将USB设备的操作命令打包成一个SCSI命令发送给USB设备,USB设备可以解析该命令数据包,进行相关的操作。
本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,而并非用作为对本发明的限定,只要在本发明的实质精神范围内,对以上实施例的变化、变型都将落在本发明的权利要求书范围内。
Claims (7)
1.一种实现USB设备免驱动的方法,其特征在于,包括以下步骤:
1.1、连接USB设备与主机端,所述USB设备向所述主机端枚举并自定义为存储设备;
1.2、主机端根据USB存储设备规范向所述USB设备发送命令,所述USB设备向主机端作出零存储容量的响应;
1.3、所述主机端的应用程序获取所述USB设备名称并建立与所述USB设备对应的句柄,基于预定义的USB设备操作协议并通过预定的函数调用所述句柄向所述USB设备发送操作命令;
1.4、所述USB设备接收所述操作命令并解析,依照所述预定义的USB设备操作协议进行操作并返回结果。
2.如权利要求1所述的方法,其特征在于,所述步骤1.1进一步包括以下步骤:
2.1、连接所述USB设备与主机端;
2.2、所述主机端向USB设备发送设备描述符请求;
2.3、所述USB设备自定义为存储设备并向主机端发送设备描述符;
2.4、所述主机端读取所述设备描述符。
3.如权利要求2所述的方法,其特征在于,所述设备描述符包括配置描述符,所述配置描述符又包括接口描述符,所述接口描述符包括端点描述符的数目、USB设备种类以及传输数据所用到的相关操作协议。
4.如权利要求3所述的方法,其特征在于,所述步骤1.2中,主机端根据USB存储设备规范向所述USB设备发送SCSI命令集中的CBW命令,所述USB设备向主机端作出零存储容量的响应后,所述主机端停止向USB设备发送与存储设备相关的命令。
5.如权利要求4所述的方法,其特征在于,所述步骤1.3中,所述应用程序查找已成功枚举的USB设备并建立USB设备列表,获取该表中USB设备的接口列表,根据所述接口列表查找获取USB设备名称。
6.如权利要求4所述的方法,其特征在于,所述步骤1.3中,所述应用程序建立所述USB设备的句柄后,基于预定义的USB设备操作协议并通过API函数调用所述句柄向所述USB设备发送基于所述USB设备操作协议的操作命令。
7.如权利要求1至6任一项所述的方法,其特征在于,所述步骤1.4中,所述USB设备接收并解析所述操作命令后,还对其类型进行判断:
若所述操作命令属于一般的SCSI命令集,则所述USB设备返回相关描述符;
若所述操作命令属于基于所述USB设备操作协议的操作命令,则依照所述USB设备操作协议进行操作并返回结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100432073A CN102339260A (zh) | 2010-07-20 | 2011-02-23 | 一种实现usb设备免驱动的方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010231907.0 | 2010-07-20 | ||
CN201010231907 | 2010-07-20 | ||
CN2011100432073A CN102339260A (zh) | 2010-07-20 | 2011-02-23 | 一种实现usb设备免驱动的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102339260A true CN102339260A (zh) | 2012-02-01 |
Family
ID=45514999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100432073A Pending CN102339260A (zh) | 2010-07-20 | 2011-02-23 | 一种实现usb设备免驱动的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102339260A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942170A (zh) * | 2014-04-03 | 2014-07-23 | 西安交通大学 | 一种安卓系统usb接口免驱动数据通讯的方法 |
CN104484685A (zh) * | 2014-12-30 | 2015-04-01 | 北京大唐智能卡技术有限公司 | 一种批量发行智能卡的方法及系统 |
CN106919528A (zh) * | 2017-02-22 | 2017-07-04 | 中北大学 | 一种跨平台免驱动usb设备数据传输方法 |
CN108009102A (zh) * | 2016-10-31 | 2018-05-08 | 联芯科技有限公司 | 配置终端设备标识的方法与装置 |
CN110187915A (zh) * | 2019-05-30 | 2019-08-30 | 苏州浪潮智能科技有限公司 | 一种计算机跨平台输入子系统配置架构及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020040418A1 (en) * | 2000-09-29 | 2002-04-04 | Steven Bress | Write protection for computer long-term memory devices |
CN1808973A (zh) * | 2006-01-27 | 2006-07-26 | 北京飞天诚信科技有限公司 | 通用串行总线人机交互类的信息安全设备及其控制方法 |
CN200972508Y (zh) * | 2006-10-28 | 2007-11-07 | 武汉大学 | 基于usb的雷达主控pc机与接收机间的通信装置 |
CN101398792A (zh) * | 2007-09-28 | 2009-04-01 | 联想(北京)有限公司 | 一种实现接口功能设备应用的方法及装置 |
-
2011
- 2011-02-23 CN CN2011100432073A patent/CN102339260A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020040418A1 (en) * | 2000-09-29 | 2002-04-04 | Steven Bress | Write protection for computer long-term memory devices |
CN1808973A (zh) * | 2006-01-27 | 2006-07-26 | 北京飞天诚信科技有限公司 | 通用串行总线人机交互类的信息安全设备及其控制方法 |
CN200972508Y (zh) * | 2006-10-28 | 2007-11-07 | 武汉大学 | 基于usb的雷达主控pc机与接收机间的通信装置 |
CN101398792A (zh) * | 2007-09-28 | 2009-04-01 | 联想(北京)有限公司 | 一种实现接口功能设备应用的方法及装置 |
Non-Patent Citations (2)
Title |
---|
褚晓滨 等: "USB接口海量存储指令分析", 《机电产品开发与创新》, vol. 21, no. 3, 31 May 2008 (2008-05-31) * |
郭宏: "基于USB2.0多通道同步数据采集系统设计", 《武汉科技大学学报(自然科学版)》, vol. 29, no. 5, 31 October 2006 (2006-10-31) * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942170A (zh) * | 2014-04-03 | 2014-07-23 | 西安交通大学 | 一种安卓系统usb接口免驱动数据通讯的方法 |
CN104484685A (zh) * | 2014-12-30 | 2015-04-01 | 北京大唐智能卡技术有限公司 | 一种批量发行智能卡的方法及系统 |
CN104484685B (zh) * | 2014-12-30 | 2017-08-11 | 北京大唐智能卡技术有限公司 | 一种批量发行智能卡的方法及系统 |
CN108009102A (zh) * | 2016-10-31 | 2018-05-08 | 联芯科技有限公司 | 配置终端设备标识的方法与装置 |
CN106919528A (zh) * | 2017-02-22 | 2017-07-04 | 中北大学 | 一种跨平台免驱动usb设备数据传输方法 |
CN110187915A (zh) * | 2019-05-30 | 2019-08-30 | 苏州浪潮智能科技有限公司 | 一种计算机跨平台输入子系统配置架构及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8516161B2 (en) | Providing indirect data addressing for a control block at a channel subsystem of an I/O processing system | |
US9330042B2 (en) | Determining extended capability of a channel path | |
US7500023B2 (en) | Facilitating input/output processing by using transport control words to reduce input/output communications | |
US7984198B2 (en) | System and program products for facilitating access to status and measurement data associated with input/output processing | |
CN102339260A (zh) | 一种实现usb设备免驱动的方法 | |
CN1825294A (zh) | 计算机系统及其控制方法 | |
CN105630424A (zh) | 数据处理方法、装置及系统 | |
US20060168358A1 (en) | Storage control system | |
CN117111539B (zh) | 以太网物理层芯片的控制方法及装置 | |
US20080066088A1 (en) | Method for improving the communication of the human interface device | |
US11882038B2 (en) | Transaction analyzer for communication bus traffic | |
US20120102251A1 (en) | Serial attached small computer system interface (sas) domain access through a universal serial bus interface of a data processing device | |
US20120059969A1 (en) | Non-invasive direct-mapping usb switching device | |
CN114218138B (zh) | 一种usb设备模拟装置及测试系统 | |
US20080059670A1 (en) | Control method and system of constructing raid configuration across multiple host bus adapters | |
TWI390407B (zh) | 多電腦切換器及其轉接器 | |
CN102455986A (zh) | 指令传递机制 | |
US9122806B2 (en) | SATA data appliance for providing SATA hosts with access to a configurable number of SATA drives residing in a SAS topology | |
JP4576323B2 (ja) | データ転送装置およびデータ転送方法 | |
CN101561760A (zh) | 接口卡固件升级方法 | |
CN116132383B (zh) | 信息传输装置、系统及方法 | |
US8656059B2 (en) | Methods for exchanging administrative information through a communication interface with limited administrative information exchange features | |
CN107818064B (zh) | 支持主从变换的通用串行总线的集线器的运作方法 | |
CN104008073A (zh) | 具有虚拟机的cdata存储设备 | |
US20100030941A1 (en) | Method and system for connecting multiple ide devices to a usb apparatus using a single usb-to-ide adapter |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120201 |