一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

USB组合设备和枚举方法与流程

2022-03-26 02:25:16 来源:中国专利 TAG:

usb组合设备和枚举方法
技术领域
1.本发明涉及通信技术领域,尤其涉及一种usb组合设备和枚举方法。


背景技术:

2.通用串行总线(universal serial bus,简称usb),是一个外部总线标准,用于规范主机如个人电脑(personal computer,简称pc)与外部设备的连接和通讯,应用在pc的接口技术领域,支持热插拔。pc识别、调试usb设备需要经过枚举通信过程,具体的,pc分配给usb设备地址后,会依次请求读取usb设备的设备描述符、配置描述符和接口描述符。usb设备的设备描述符描述usb设备的一般信息,包括厂商标志(vendor id,简称vid,由usb开发者论坛(usb implementers forum,简称usb-if)赋值)、产品标志(product id,简称pid,由厂商赋值)和配置(configuration)数量等。usb设备的pid/vid需要向微软进行认证,使得usb设备能够和pc上安装的美国微软公司研发的microsoft windows操作系统(简称windows系统)建立通信连接,且一个设备描述符只能储存一组pid/vid。usb设备的配置描述符描述有关特定设备配置的信息,包括此配置所提供的接口(interface)个数。usb设备的接口描述符的接口号是当前配置支持的接口数组索引,为从0开始的阿拉伯数字。usb设备的接口需要windows系统挂载相应的驱动程序。
3.安装原生安卓系统的usb组合设备在枚举过程中会存在隐藏usb功能的场景和usb端点资源不足的场景,这些场景的存在导致该usb组合设备存在多个配置,且不同配置一般提供不同的接口,即不同配置描述符下的接口号相同(例如接口号0)的接口描述符对应的是不同的接口。由于windows系统是根据usb组合设备的描述符为接口挂载相应的驱动程序,如果包含一组pid/vid的设备描述符提供多个不同的配置,那么该设备描述符下的固定接口号(例如接口号0)对应若干不同的接口,会使得windows系统无法确定此接口号对应哪一个接口,也无法为该接口挂载相应的驱动程序,因此windows系统不支持包含一组pid/vid的设备描述符下的固定接口号对应两个不同的接口。所以现有的安装原生安卓系统的usb组合设备中,一个包含一组pid/vid的设备描述符下不能同时存在两个不同配置的配置描述符。该类usb组合设备需要认证多组pid/vid才能与windows系统建立通信连接,导致该类usb组合设备在向微软进行usb设备认证的过程中会耗费更多的时间和费用。


技术实现要素:

4.本发明要解决的技术问题是为了克服现有技术中安装原生安卓系统的usb组合设备为了支持应用中多种场景存在的多个配置,需要多组pid/vid,这会导致在向微软进行usb设备认证的过程中耗费更多的时间和费用的缺陷,提供一种能够节省向微软进行usb设备认证的时间和费用的usb组合设备和枚举方法。
5.本发明是通过下述技术方案来解决上述技术问题:
6.一种usb组合设备,包括若干配置,每个所述配置提供若干接口,所述usb组合设备包括的所有的所述接口的接口号为预设的互不相同的接口号。
7.较佳地,所述usb组合设备安装有安卓系统。
8.较佳地,所述预设的互不相同的接口号储存在接口描述符中。
9.较佳地,所述usb组合设备的usb功能包括调试口、串口、虚拟网卡口、海量存储设备、安卓调试桥口、文件传输协议口、图片传输协议口。
10.较佳地,所述调试口的预设的接口号为0和1,
11.和/或,
12.所述串口的预设接口号为2、3和4,
13.和/或,
14.所述虚拟网卡口的预设接口号为5、6和7,
15.和/或,
16.所述海量存储设备的预设接口号为8和9,
17.和/或,
18.所述安卓调试桥口的预设接口号为10和11,
19.和/或,
20.所述文件传输协议口的预设接口号为12和13,
21.和/或,
22.所述图片传输协议口的预设接口号为14和15。
23.较佳地,每个所述配置至少对应一种usb功能。
24.较佳地,所述usb组合设备为智能手机、智能穿戴设备、平板电脑、智能终端中的一种。
25.一种usb组合设备的枚举方法,包括以下步骤:
26.主机获取上述各项任意组合的所述的usb组合设备的配置描述符;
27.所述主机获取所述usb组合设备的接口描述符;
28.所述主机根据所述接口描述符中的所述接口号为所述usb组合设备的接口挂载驱动。
29.较佳地,所述主机获取所述usb组合设备的配置描述符的步骤之前,所述usb组合设备的枚举方法还包括:
30.所述主机复位所述usb组合设备;
31.所述主机为所述usb组合设备分配设备地址。
32.较佳地,所述驱动选择一个所述配置作为所述usb组合设备的工作配置。
33.本发明的积极进步效果在于:本发明通过为包括多个配置的usb组合设备所包括的全部接口分配预设的互不相同的接口号,使得该类usb组合设备只需要向微软认证一组pid/vid,就可以提供多个不同的配置,实现和主机端的连接和通讯,从而节省了usb组合设备向微软进行usb设备认证的时间和费用。
附图说明
34.图1为本发明实施例1的usb组合设备的架构图。
35.图2为本发明实施例2的usb组合设备的枚举方法的流程图。
具体实施方式
36.下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
37.实施例1
38.本实施例提供了一种usb组合设备,具体可以为智能手机、智能穿戴设备、平板电脑、智能终端中的一种,可以包括调试口、串口、虚拟网卡口、海量存储设备、安卓调试桥口、文件传输协议口、图片传输协议口等usb功能。这些usb功能占用2-3个接口,每个接口都定义了不同的功能集,并和其他的接口相独立。本实施例中usb组合设备为安卓系统的智能手机。
39.在usb组合设备的架构中,设备描述符描述有关usb设备的一般信息,如设备的pid/vid、配置数量。包含一组pid/vid的设备描述符下存在若干不同的配置描述符,用于描述特定配置的信息,如配置提供的接口数量。配置描述符下存在若干接口描述符,用于描述配置中的特定接口的信息,如接口号是一个配置中接口的索引。安装原生安卓系统的usb组合设备中,每个配置提供的接口的接口号都是从0开始的阿拉伯数字。如果包含一组pid/vid的设备描述符提供多个不同的配置,那么该设备描述符下的固定接口号对应若干不同的接口,会使得windows系统无法确定此接口号对应哪一个接口,也无法为该接口挂载相应的驱动程序。例如,
40.配置1提供调试口占用的接口,且接口号为0,1;
41.配置2提供串口占用的接口,且接口号为0,1和2;
42.如果这两个不相同的配置都位于包含一组pid/vid的设备描述符下,此时该设备描述符下的固定接口号(0或1)对应两个不同的接口,该usb设备在接入主机时,主机的windows系统无法支持这种usb组合设备。这种情况下,安装原生安卓系统的usb组合设备需要向微软公司认证两组不同pid/vid。在一些需要将若干usb功能组合成一个配置的情况下,则会需要向微软公司认证更多的pid/vid。
43.本实施例提供一种usb组合设备,usb设备架构如图1所示,为该usb组合设备的全部usb功能的接口分配预设的互不相同的接口号,并将这些接口号储存在对应的接口描述符中。例如,
44.调试口的预设的接口号为0和1,
45.串口的预设接口号为2、3和4,
46.虚拟网卡口的预设接口号为5、6和7,
47.海量存储设备的预设接口号为8和9,
48.安卓调试桥口的预设接口号为10和11,
49.文件传输协议口的预设接口号为12和13,
50.图片传输协议口的预设接口号为14和15。
51.该usb组合设备中,usb功能可以根据需要任意组合成一个配置,如调试口和串口组成一个配置,调试口、串口和虚拟网卡口组成一个配置,海量存储设备、安卓调试桥口、文件传输协议口、图片传输协议口组成一个配置。由于为该usb组合设备包括的所有的接口分配了预设的互不相同的接口号,每个配置所提供的接口都有了固定的互不相同的接口号,该usb组合设备在接入主机时,虽然只有一组pid/vid,但是主机的windows系统可以根据这
些接口号识别出对应的不同接口。因此这些配置的配置描述符可以共同存在于包含一组pid/vid的设备描述符下,该usb组合设备只需要向微软公司认证一组pid/vid。
52.安装原生安卓系统的智能设备若要隐藏或者组合usb功能,需要向微软认证多组pid/vid,才能使usb组合设备提供多个不同的配置。本实施例提供一种usb组合设备,该usb组合设备包括的所有的接口的接口号为预设的互不相同的接口号,使得包含一组pid/vid的设备描述符下的接口号不会对应不同的接口,避免windows系统在根据接口号识别接口的过程中出现接口号和接口对应上的冲突,节省了usb组合设备向微软进行usb设备认证的时间和费用,同时也使usb组合设备设置配置的过程更为方便。
53.实施例2
54.如图2所示,本实施例提供了一种usb组合设备的枚举方法,该usb组合设备为实施例1中的usb组合设备,包括以下步骤:
55.s1、主机复位usb组合设备。
56.具体地,主机发送get_port_status(usb协议相关的标准函数,用于读取端口状态)请求,以获取更多的设备信息,集线器检测usb组合设备是低速运行还是高速运行,并将此信息送给主机。主机通过set_port_feature(usb协议相关的标准函数,用于设置端口状态)请求,要求集线器复位usb组合设备。
57.s2、主机为usb组合设备分配设备地址。
58.具体地,主机通过set_address(usb协议相关的标准函数,用于设置设备地址)请求向设备分配一个唯一的设备地址。usb组合设备读取这个请求,返回一个确定接受的信号,并保存新的地址。
59.s3、主机获取usb组合设备的配置描述符。
60.s4、主机获取usb组合设备的接口描述符。
61.具体地,步骤s3-s4包括:
62.主机发送get_descriptor(usb协议相关的标准函数,用于获取描述符)请求到新地址读取设备描述符,并解析设备描述符的内容。
63.主机发送get_descriptor请求,依次读取配置描述符、接口描述符,逐一了解设备更详细的信息。
64.s5、主机根据接口描述符中的接口号为usb组合设备的接口挂载驱动。
65.具体地,主机跟据接口描述符中的接口号为该usb组合设备选择合适的驱动,并将设备添加到usb总线的设备列表里。usb总线检查驱动与接口是否匹配,若匹配usb总线调用device_bind_driver(usb协议相关的标准函数,用于绑定设备和驱动)函数,将usb组合设备的控制权交给设备驱动。
66.该驱动选择一个配置作为usb组合设备的工作配置。
67.具体地,设备驱动发送set_configuration(usb协议相关的标准函数,用于设置配置)请求来选择一个配置作为usb组合设备的工作配置。
68.本实施例提供了一种usb组合设备的枚举方法,对实施例1中的usb组合设备的功能及功能的组合进行枚举,该usb组合设备包括的所有的接口的接口号为预设的互不相同的接口号,使得包含一组pid/vid的设备描述符下的接口号不会对应不同的接口,避免windows系统在根据接口号识别接口的过程中出现接口号和接口对应上的冲突,节省了usb
组合设备向微软进行usb设备认证的时间和费用,同时也使usb组合设备设置配置的过程更为方便。本实施例中主机根据枚举的信息为usb组合设备挂载合适的驱动程序,使得主机与usb组合设备建立通信连接。
69.虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献