实现usb设备快速访问的方法和系统的制作方法

文档序号:9727277阅读:347来源:国知局
实现usb设备快速访问的方法和系统的制作方法
【技术领域】
[0001 ]本发明涉及USB技术领域,特别是涉及实现USB设备快速访问的方法和系统。
【背景技术】
[0002]USB系统由USB主机(简称Host)、USB集线器(简称HUB)和USB设备(简称设备)三部分组成,HUB的上行Port面向Host、下行Port面向设备或者其它HUB。在下行Port上,HUB提供了设备连接检测和设备拔出检测功能,并给各下行Port供电。USB系统采用主从结构,所有的数据通讯都由主端(Host)发起,而从端(USB设备)一直扮演受控的角色,按照主端的要求接收或发送数据。
[0003]USB设备连接到Host时,Host必须通过默认的控制管道对其进行枚举,完成获得其设备描述、进行地址分配、获得其配置描述、加载对应的驱动程序、进行设备配置等操作之后,应用程序方可正常访问所述USB设备。现有技术中,当USB设备连接到Host之后,按照以下流程进行枚举:
[0004]1、连接了USB设备的HUB在Host查询其状态改变端点时,所述HUB返回对应的消息告知Host某个Port(端点)状态发生了改变;当主机知道了该事件之后,给所述集线器发送一个Get_Status请求,HUB返回消息告诉主机设备的连接详细信息。
[0005]2、Host等待(至少100mS)所述USB设备上电稳定,然后向所述HUB发送请求,建立起一条连接Host和所述USB设备的通信通道,复位并使能所述Port; HUB执行Port复位操作,复位完成后所述Port就使能了 ;所述USB设备进入到默认状态状态,至此,USB设备已经准备好通过Endpoint 0的默认流程响应控制传输,S卩USB设备现在使用缺省地址0x0与主机通信。
[0006]3、Host通过缺省地址0x0向所述USB设备发送Get_Device_Descriptor命令,以取得缺省控制管道所支持的最大数据包长度。主机一次只能枚举一个USB设备,所以同一时刻只能有一个USB设备使用缺省地址0。
[0007]4、主机通过发送一个Set_Address请求来分配一个唯一的地址给USB设备。USB设备返回一个确认并保存新的地址。此后,所述USB设备将一直使用该地址,直到被拔出HUB。
[0008]5、主机通过新地址重新发送Get_Device_Descriptor命令读取设备描述符的全部字段,以了解该设备的总体信息,如厂商标识符(VID)、产品标识符(PID)。
[0009]6、主机根据读取到的USB设备的设备描述符,选择并安装所述USB设备对应的驱动程序;不同的USB设备类有不同的驱动程序,比如对于键盘鼠标有USB HID驱动,USB存储设备有USB Storage驱动。
[0010]7、在获得驱动程序支持的条件下,Host通过分配的新地址向所述USB设备发送661:_06¥;[06_(]011;1^811瓜1:;[011命令读取设备配置信息,等待1]313设备回答,直到读取所述1]513设备的全部配置信息;根据所述USB设备的配置信息,主机通过新地址发送Set_Conf igurat1n命令请求,对所述USB设备进行配置。如果配置成功,USB设备进入“配置”状态,至此,所述USB设备可以和应用程序进行数据传输。
[0011]在Host枚举USB设备的过程中,为接入的USB设备分配新地址之前,所述USB设备只会对0地址做出响应,为了给所述USB设备指派可用的新地址,必须在Host和USB设备之间建立起一条专用的通信连接。在建立通信连接之后,完成设备配置之前,Host与USB设备之间还需要进行20余次交互,在此期间Host将无法通过总线与所述USB设备之外的其他USB设备通信。
[0012]可见,如果Host在同一时刻连接了很多USB设备,并对这些设备执行批量操作,此时所述Host枚举USB设备将消耗较长时间,应用软件必须等待较长时间,直到连接所述Host的全部USB设备都配置好之后,才能够访问这些USB设备。

【发明内容】

[0013]基于此,本发明提供一种实现USB设备快速访问的方法和系统,能够缩短因USB设备枚举导致的访问等待时间。
[0014]本发明一方面提供一种实现USB设备快速访问的方法,包括:
[0015]检测到虚拟USB设备接入主机系统,发起对所述虚拟USB设备的枚举,安装与所述虚拟USB设备相应的驱动程序;
[0016]检测到物理USB设备接入所述主机系统,建立所述物理USB设备与已完成枚举的虚拟USB设备的映射关系;
[0017]主机应用程序通过所述驱动程序、所述映射关系对所述物理USB设备进行访问。
[0018]本发明另一方面提供一种实现USB设备快速访问的系统,包括:
[0019]虚拟设备枚举单元,用于检测到虚拟USB设备接入主机系统,发起对所述虚拟USB设备的枚举,安装与所述虚拟USB设备相应的驱动程序;
[0020]映射管理单元,用于检测到物理USB设备接入所述主机系统,建立所述物理USB设备与已完成枚举的虚拟USB设备的映射关系;
[0021]访问控制单元,用于主机应用程序通过所述驱动程序、所述映射关系对所述物理USB设备进行访问。
[0022]上述技术方案的实现USB设备快速访问,通过创建多个虚拟USB设备,发起对所述虚拟USB设备的枚举,安装与所述虚拟USB设备相应的驱动程序;并将它们映射到接入系统的物理USB设备,有效缩短了Host在同一时刻插入大量物理USB设备时,系统枚举设备及加载驱动程序过程所消耗的时间,使得应用程序可以快速访问接入系统的物理USB设备。
【附图说明】
[0023]图1为实施例一的实现USB设备快速访问的方法的示意性流程图;
[0024]图2为实现USB设备快速访问的USB系统框架一的示意图;
[0025]图3为实现USB设备快速访问的USB系统框架二的示意图;
[0026]图4为实施例二的实现USB设备快速访问的系统的示意性结构图。
【具体实施方式】
[0027]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0028]本发明提供的实施例包括实现USB设备快速访问的方法实施例,还包括相应的实现USB设备快速访问的系统实施例。以下分别进行详细说明。
[0029]图1为实施例一的实现USB设备快速访问的方法的示意性流程图;如图1所示,本实施例的实现USB设备快速访问的方法包括如下过程S1至S3,各过程详述如下:
[0030]S1,检测到虚拟USB设备接入主机系统,发起对所述虚拟USB设备的枚举,安装与所述虚拟USB设备相应的驱动程序;
[0031]本步骤之前,预先生成若干虚拟USB设备,设置各虚拟USB设备的设备描述、配置描述、接口描述和端点描述等设备参数,然后向主机系统发送设备接入指示。
[0032]进一步的,对所述虚拟USB设备的枚举过程中,可通过预设的设备枚举器中存储的USB设备的默认设备参数模拟USB设备,收到读取设备描述或者配置信息的请求消息之后,所述设备枚举器可根据所述设备参数返回对应的信息,以进行虚拟USB设备的枚举。
[0033]优选的,本实施例中可预先设置一个虚拟主机控制器驱动,通过该虚拟主机控制器驱动用于生成并管理虚拟USB设备。所述虚拟主机控制器驱动的作用和USB主机控制器驱动(H⑶)一样,处于USB驱动的最底层,负责与USB设备直接通信。比如虚拟USB设备枚举过程中,由所述虚拟主机控制器驱动向所述设备枚举器发出Get_Device_Descriptor、Get_Devi ce_Conf igurat1n、Set_Address 以及Set_Conf igurat1n 等请求命令。
[0034]需要说明的是,本实施例中,假设生成的虚拟USB设备与接入主机系统的物理USB设备为相同类型的设备,即设备类型、VID/PID均一致。
[0035]S2,检
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1