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

用于USB传输的方法和电子设备与流程

2022-03-19 12:49:49 来源:中国专利 TAG:

用于usb传输的方法和电子设备
技术领域
1.本技术涉及通信领域,并且更具体地涉及通信领域中的用于usb传输的方法和电子设备。


背景技术:

2.通用串行总线(universal serial bus,usb)设备支持即插即用。usb设备可以虚拟出多个虚拟usb接口,多个虚拟usb接口的不同组合对应不同的配置,usb主机和usb设备可以基于不同的配置传输不同的业务。当然,usb主机与usb设备也可以基于一个配置传输一个或多个业务。usb主机和usb设备需要切换不同配置对应的不同的业务时,usb主机也需要切换不同的配置,在切换配置的过程中,usb主机需要与usb设备断开,具体地,usb主机需要清除usb主机侧保存的usb设备描述符、配置描述符以及配置对应的虚拟usb接口描述符。即在这个过程中相当于usb主机与usb设备在物理上先彻底断开,然后usb设备需要向usb主机上报设备描述符,配置描述符以及该配置描述符对应的虚拟usb接口描述符等,这样。需要至少三次握手才能建立新的配置对应的虚拟usb接口,这样,会导致传输时延较长。


技术实现要素:

3.本技术实施例提供了一种用于usb传输的方法和装置,能够降低传输时延。
4.第一方面,提供了一种用于usb传输的方法,包括:usb主机确定与usb设备传输第一业务;所述usb主机在m个第一端点中确定用于传输所述第一业务的n个第一端点;所述usb主机通过所述n个第一端点与所述usb设备的一个虚拟usb接口对应的m个第二端点中的n个第二端点之间的n个通道传输所述第一业务的业务数据,所述usb设备的物理接口对应所述一个虚拟的usb接口,所述m个第二端点为所述usb设备支持的端点数目,所述m个第二端点、所述m个第一端点与m个通道一一对应,所述n个第一端点、所述n个第二端点与所述m个通道中的所述n个通道一一对应,所述m个第一端点为所述usb主机的端点,所述m个第二端点为所述usb设备的端点;其中,m、n为正整数,m大于或等于n。
5.在上述方案中,usb设备和usb主机可以在传输第一业务之前,提前配置usb设备支持的m个第二端点对应的m个通道,当usb主机和usb设备确定传输第一业务需要n通道时,可以在该m个通道中选择n个通道传输第一业务。这样,不需要usb主机重新加载主机驱动生成n个通道,从而可以节省传输时延。并且一个虚拟的虚拟usb接口对应usb设备支持的总的端点,换句话说,一个虚拟的虚拟usb接口可以对应m个通道,这样,在传输任何一个业务的业务数据时,不需要通过删除虚拟usb接口或增加虚拟usb接口来切换不同的通道,只需要在该虚拟usb接口内确定传输业务的通道即可,从而可以节省传输时延。
6.usb设备支持的m个第二端点对应的m个编号与usb主机的m个第一端点对应的m个编号一一对应。
7.其中,usb主机的m个第一端点对应的m个编号可以为usb主机分配的,或者usb主机可以根据m个第二端点的编号确定m个第一端点的编号,例如,usb主机可以将m个第二端点
的编号作为m个第一端点的编号。
8.可选地,所述usb主机在m个第一端点中确定用于传输所述第一业务的n个第一端点,包括:usb主机根据第一业务的业务类型在m个第一端点中选择满足第一业务的业务类型的n个第一端点。
9.在一些可能的实现方式中,在所述usb主机确定传输第一业务之前,所述方法还包括:
10.所述usb主机接收来自所述usb设备的第一端点信息,所述第一端点信息用于指示所述usb设备支持的所述m个第二端点的端点类型以及所述m个第二端点的端点编号:所述usb主机根据所述第一端点信息确定所述m个第一端点的端点编号;所述usb主机根据所述m个第一端点的端点编号和所述m个第二端点的端点编号与所述usb设备建立所述m个通道。
11.在上述方案中,usb设备可以提前将usb设备支持的m个第二端点的端点编号和端点类型上报给usb主机,usb主机和usb设备可以提前配好m个通道,为后续传输第一业务的业务数据做好前期的准备工作。
12.在一些可能的实现方式中,所述usb主机在m个第一端点中确定用于传输所述第一业务的n个第一端点,包括:
13.所述usb主机在至少一个端点组合信息中确定用于传输所述第一业务的第一端点组合信息,所述至少一个端点组合信息中的不同端点组合信息用于指示所述usb设备支持的不同的端点组合,不同的端点组合包括不同数量的端点和/或不同类型的端点,所述第一端点组合信息用于指示第一端点组合;
14.所述usb主机根据所述第一端点组合在所述m个第一端点中确定所述n个第一端点,所述第一端点组合用于指示端点的数量为n个以及n个端点的端点类型。
15.在上述方案中,usb主机可以在至少一个端点组合信息中确定用于传输第一业务的第一端点组合信息。usb主机可以根据第一端点组合信息指示的第一端点组合在m个第一端点中确定用于传输第一业务的业务数据的n个第一端点。
16.可选地,至少一个端点组合信息可以是usb设备上报给usb主机的,也可以是预设的,本技术不予限制。
17.在一些可能的实现方式中,usb主机可以根据第一端点组合以及m个第二端点的端点编号和端点类型在m个第一端点中确定n个第一端点。即usb主机可以根据第一端点组合中端点的类型在m个第二端点中选择符合第一端点组合的端点类型的n个第二端点,然后将这些选择出来的n个第二端点对应的第一端点确定为n个第一端点。
18.在一些可能的实现方式中,所述usb主机根据所述第一端点组合在所述m个第一端点中确定所述n个第一端点,包括:所述usb主机向所述usb设备发送第一指示信息,所述第一指示信息用于指示所述第一端点组合;
19.所述usb主机接收所述usb设备根据所述第一指示信息指示的所述第一端点组合确定的所述n个第二端点的编号;
20.所述usb主机根据所述n个第二端点的编号确定所述n个第一端点。
21.在上述方案中,usb主机可以将指示第一端点组合的第一指示信息发送给usb设备,usb设备根据第一端点组合确定n个第二端点的端点编号,usb主机可以将与n个第二端点的端点编号指示的n个第二端点对应的第一端点确定为n个第一端点。
22.可选地,usb主机可以通过控制端点向usb设备发送第一指示信息。
23.在一些可能的实现方式中,在所述usb主机确定传输第一业务之前,所述方法还包括:所述usb主机为所述m个第一端点分配资源。换句话说,usb主机可以提前为m个通道分配资源。
24.在一些可能的实现方式中,在所述usb主机在m个第一端点中确定用于传输所述第一业务的n个第一端点之后,所述方法还包括:所述usb主机为所述n个第一端点分配资源。换句话说,usb主机在m个第一端点中确定用于传输第一业务的n个第一端点,然后为n个第一端点分配资源。
25.在一些可能的实现方式中,在所述usb主机确定传输第一业务之后,所述方法还包括:
26.所述usb主机确定传输第二业务;
27.所述usb主机在所述至少一个端点组合信息中确定用于传输所述第二业务的第二端点组合信息和第三端点组合信息,所述第二端点组合信息用于指示所述第二端点组合,所述第三端点组合信息用于指示第三端点组合;
28.若所述usb主机确定所述第一端点组合与所述第二端点组合相同,所述usb主机通过所述n个通道传输所述第二业务的部分数据。
29.在上述方案中,usb主机可以将用于传输第一业务的业务数据的n个通道用来传输第二业务,这样,在切换业务时,可以避免usb主机和usb设备重新为n个通道分配资源和编号,从而可以节省开销。
30.第一端点组合与第二端点组合相同可以理解为第一端点组合和第二端点组合指示的端点数量都为n个以及n个端点的端点类型也相同。
31.在一些可能的实现方式中,所述第三端点组合用于指示端点的数量为p个以及p个端点的端点类型,p小于或等于m-n,所述方法还包括:
32.若所述usb主机确定所述第一端点组合与所述第三端点组合不同,所述usb主机向所述usb设备发送第二指示信息,所述第二指示信息用于指示所述第三端点组合;
33.所述usb主机接收所述usb设备根据所述第二指示信息确定的所述p个第二端点的编号;
34.所述usb主机根据所述p个第二端点的端点编号在m-n个通道中确定p个通道;
35.所述usb主机通过所述p个通道与所述usb设备传输所述第二业务的剩余部分业务数据。
36.在上述方案中,usb主机可以将与第一业务的第一端点组合不同的第三端点组合通过第二指示信息发送给usb设备,usb设备可以根据第三端点组合在剩余的端点中确定p个第二端点的编号,usb主机可以根据p个第二端点的编号在m-n个通道中确定用于传输第二业务的剩余部分业务数据的p个通道。
37.可选地,usb主机可以通过控制端点向usb设备发送第二指示信息。
38.在一些可能的实现方式中,在所述usb主机确定传输第二业务之后,所述方法还包括:所述usb主机向所述usb设备发送切换命令,所述切换命令用于指示将当前正在传输的第一业务切换为第二业务。
39.可选地,usb主机可以通过控制端点向usb设备发送切换命令。
40.第二方面,提供了一种用于通用串行总线usb传输的方法,包括:usb设备在一个虚拟usb接口对应的m个第二端点中确定与usb主机传输第一业务的n个第二端点,所述m个第二端点为所述usb设备支持的端点数目,所述usb设备的物理usb接口对应所述一个虚拟usb接口;
41.所述usb设备通过所述n个第二端点与所述usb主机的m个第一端点中的n个第一端点之间的n个通道传输所述第一业务的业务数据;
42.其中,所述m个第二端点、所述m个第一端点与m个通道一一对应,所述n个第一端点、所述n个第二端点与所述m个通道中的所述n个通道一一对应,m、n为正整数,m大于或等于n,所述m个第一端点为所述usb主机的端点,所述m个第二端点为所述usb设备的端点。
43.在一些可能的实现方式中,在所述usb设备在一个虚拟usb接口对应的m个第二端点中确定与usb主机传输第一业务的n个第二端点之前,所述方法还包括:
44.所述usb设备向所述usb主机发送第一端点信息,所述第一端点信息用于指示所述usb设备支持的所述m个第二端点的端点类型以及所述m个第二端点的端点编号;
45.所述usb设备根据所述第一端点信息与所述usb主机建立所述m个通道。
46.在一些可能的实现方式中,所述usb设备在一个虚拟usb接口对应的m个第二端点中确定与usb主机传输第一业务的n个第二端点,包括:
47.所述usb设备接收所述usb主机发送的第一指示信息,所述第一指示信息用于指示第一端点组合所述第一端点组合用于指示端点的数量为n个以及n个端点的端点类型;
48.所述usb设备根据所述第一指示信息指示的所述第一端点组合在所述m个第二端点中确定所述n个第二端点。
49.在一些可能的实现方式中,所述方法还包括:所述usb设备向所述usb主机发送至少一个端点组合信息,所述至少一个端点组合信息的不同端点组合信息用于指示所述usb设备支持的不同的端点组合,不同的端点组合包括不同数量的端点和/或不同类型的端点,所述至少一个端点组合信息中的第一端点组合信息用于指示所述第一端点组合。
50.在一些可能的实现方式中,在所述usb设备在一个虚拟usb接口对应的m个第二端点中确定与usb主机传输第一业务的n个第二端点之前,所述方法还包括:
51.所述usb设备为所述m个第二端点分配资源。
52.在一些可能的实现方式中,在所述usb设备在一个虚拟usb接口对应的m个第二端点中确定与usb主机传输第一业务的n个第二端点之后,所述方法还包括:
53.所述usb设备为所述n个第二端点分配资源。
54.在一些可能的实现方式中,所述方法还包括:
55.所述usb设备接收所述usb主机发送的切换命令,所述切换命令用于指示所述usb设备将正在传输的所述第一业务切换为第二业务;
56.所述usb设备所述切换命令接收所述usb主机通过所述n个通道发送的所述第二业务的部分业务数据。
57.在一些可能的实现方式中,所述方法还包括:所述usb设备接收所述usb主机发送的第二指示信息,所述第二指示信息用于指示第三端点组合,所述第三端点组合用于指示端点的数量为p个以及p个端点的端点类型,p小于或等于m-n;
58.所述usb设备根据所述第二指示信息指示的所述第三端点组合在所述m个第二端
点中确定p个第二端点的编号;
59.所述usb设备向所述usb主机发送所述p个第二端点的编号;
60.所述usb主机通过所述p个第二端点对应的p个通道与所述usb设备传输所述第二业务的剩余部分业务数据。
61.第三方面,提供了一种装置,该装置包含在电子设备中,该装置具有实现上述各方面及上述各方面的可能实现方式中电子设备行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块或单元。例如,确定模块或单元、传输模块或单元等。
62.可选地,该装置可以是上述的usb主机或者usb设备。
63.第四方面,提供了一种装置,所述装置包括处理器,处理器与存储器耦合,存储器用于存储计算机程序或指令,处理器用于执行存储器存储的计算机程序或指令,使得上述各方面及上述各方面的可能实现方式中的方法被执行。
64.例如,处理器用于执行存储器存储的计算机程序或指令,使得该装置执行上述各方面及上述各方面的可能实现方式中方法。
65.可选地,该装置包括的处理器为一个或多个。
66.可选地,该装置中还可以包括与处理器耦合的存储器。
67.可选地,该装置包括的存储器可以为一个或多个。
68.可选地,该存储器可以与该处理器集成在一起,或者分离设置。
69.可选地,该装置中还可以包括收发器。
70.第五方面,本技术提供了一种电子设备,包括:一个或多个处理器;存储器;多个应用程序;以及一个或多个计算机程序。其中,一个或多个计算机程序被存储在存储器中,一个或多个计算机程序包括指令。当指令被电子设备执行时,使得电子设备执行上述任一方面任一项可能的实现中的用于usb传输的方法。
71.可选地,该电子设备还可以包括:触摸显示屏和/或摄像头,其中,触摸显示屏包括触敏表面和显示器;
72.可选地,该电子设备可以是上述的usb设备或者usb主机。
73.第六方面,本技术提供了一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述任一方面任一项可能的用于usb传输的方法。
74.第七方面,本技术提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述任一方面任一项可能的用于usb传输的方法。
附图说明
75.图1是本技术实施例提供的应用场景图。
76.图2是本技术实施例提供的虚拟usb接口与配置示意图。
77.图3是本技术实施例提供的另一虚拟usb接口与配置示意图。
78.图4是本技术实施例提供的系统架构图。
79.图5是本技术实施例提供的用于usb传输的方法示意图。
80.图6是本技术实施例提供的端点的示意图。
81.图7是本技术实施例提供的m个通道的示意图。
82.图8是本技术实施例提供的虚拟usb接口与至少一个端点组合信息示意图。
83.图9是本技术实施例提供的第一端点组合示意图。
84.图10是本技术实施例提供的切换业务的方法示意图。
85.图11是本技术实施例提供的传输第二业务的端点示意图。
86.图12是本技术实施例提供的虚拟usb接口与端点的示意图。
87.图13是本技术实施例提供的用于usb传输的方法示意图。
88.图14是本技术实施例提供的电子设备的示意图。
具体实施方式
89.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
90.下面对本技术实施例中用到的术语进行描述。
91.usb设备,usb设备用于与usb主机进行通信,可以用设备描述符描述usb设备的信息,设备描述符可以指示usb设备所包括的配置的个数。usb设备包括但不限于:键盘、鼠标、游戏杆、打印机、扫描仪、usb移动硬盘、优盘、usb光驱、麦克风、调制解调器、手机、平板、usb通讯上网卡、运动手表、运动手环、usb读卡器、usb key、usb蓝牙适配器、usb无线网卡、usb摄像头等等。
92.usb主机,用于为usb设备提供服务,usb主机可以为一个或多个usb设备提供服务。例如,usb主机包括但不限于:个人计算机((personal computer,pc)、主机(host)模式的手机、车机、销售终端(point of sale,pos)机或者电视(television,tv)等。
93.usb线,usb线是用于连接usb主机与usb设备的物理连接线。当然优盘插到电脑上也可以理解为通过usb线连接。
94.配置,一个usb设备可以包括一个或多个配置,一个配置描述符用于描述usb设备中的一个配置的特性,一个配置对应一个或多个虚拟usb接口,例如,一个配置描述符包括配置描述符的长度、配置描述符的类型、接口描述符等等。usb设备和usb主机可以通过不同的配置传输不同的业务,当然usb主机和usb设备也可以通过一个配置传输不同的业务。如usb设备可以采用两个不同的配置传输低功耗模式业务和高功耗模式业务,其中,低功耗模式业务可以包括一个或多个业务,高功耗模式业务可以包括一个或多个业务。
95.虚拟usb接口(interface),一个物理usb接口可以虚拟出一个或多个虚拟的虚拟usb接口,本技术实施例中提到的虚拟usb接口指的是虚拟usb接口,虚拟usb接口为逻辑概念。可以用一个虚拟usb接口描述符标识一个虚拟usb接口,虚拟usb接口描述符用于描述虚拟usb接口对应的一个或多个端点。usb主机和usb设备通过虚拟usb接口通信实际上是通过虚拟usb接口对应的端点进行通信。
96.端点(endpoint,ep),端点是usb设备中的实际的物理单元,usb数据传输实际是在usb主机的端点与usb设备的端点之间的传输。虚拟usb接口可以对应一个或多个端点。如图1所示,一个物理usb接口可以对应一个多个虚拟usb接口,一个虚拟usb接口对应一个或多个端点。usb主机在加载虚拟usb接口主机驱动时,usb主机可以为usb主机侧的每个虚拟usb接口对应的端点分配端点号,这样,可以根据usb设备侧的每个虚拟usb接口对应的端点的端点编号和usb主机对应的端点的端点编号建立通道(图中示出的虚线即为通道),利用usb
设备和usb主机侧的端点号唯一标识一个通道,usb主机和usb设备可以通过建立的通道传输业务对应的数据。其中,端点的传输方向是固定的,端点的传输方向以usb主机为参考,例如usb设备的虚拟usb接口对应端点1和端点2,端点1用于发送数据,此时对于usb主机来讲是输入,因此端点1为输入(in)端点;端点2用于接收数据,此时对于usb主机来讲是输出,因此端点2为输出(out)端点。
97.其中,端点可以分为控制端点、批量传输端点、中断端点和同步端点。其中,控制端点用于传输控制命令,控制端点为双向端点,即usb主机能够通过控制端点向usb设备传输控制命令,usb设备也能够通过控制端点向usb主机返回控制命令的响应。
98.如图1所示,usb设备通过usb线与usb主机传输数据,包括usb设备通过usb线向usb主机发送数据,usb主机通过usb线向usb设备发送数据。usb设备支持即插即拔,usb设备可以利用一个物理usb接口虚拟出多个虚拟usb接口,多个虚拟usb接口的不同组合对应不同的配置。当然,usb主机与usb设备也可以基于一个配置传输一个或多个业务。usb主机和usb设备需要切换不同配置对应的不同的业务时,usb主机需要与usb设备断开,具体地,usb主机需要清除usb主机侧保存的usb设备描述符、配置描述符以及配置对应的虚拟usb接口描述符。在这个过程中相当于usb主机与usb设备在物理上先彻底断开,然后usb设备需要向usb主机上报设备描述符,配置描述符以及该配置描述符对应的虚拟usb接口描述符等进行至少三次握手才能建立新的配置对应的虚拟usb接口,这样,会导致传输时延较长。此外,即使原来配置对应的虚拟usb接口中与新的配置对应的虚拟usb接口中存在共同的虚拟usb接口,则也需要先将这个共同的虚拟usb接口断开,释放这些虚拟usb接口所占的资源,清除这些虚拟usb接口的接口描述符,usb主机再加载这些虚拟usb接口的主机驱动,为这些虚拟usb接口配置资源以及为这些虚拟usb接口对应的端点分配端点编号,同样的,usb设备也需要为这些虚拟usb接口对应的端点重新分配端点编号以及资源,这样会导致浪费资源,并且成本也高。
99.需要说明的是,图1仅是示例性的示出了usb主机侧的m个端点和usb设备侧的m个端点,且编号都为1,2
……
m,在实际应用中usb主机侧与usb设备侧的端点编号可以相同或者不同,本技术的不予限制。
100.举例来说,如图2所示,usb设备的配置1对应虚拟usb接口a,usb设备需要为配置1对应的虚拟usb接口a对应的端点分配资源和编号。usb设备需要上报关于配置1的描述符,usb主机根据配置1的配置描述符初始化虚拟usb接口a对应的端点,并且加载虚拟usb接口a的主机驱动,以建立虚拟usb接口a对应的端点的通道,建立的端点的通道用于传输业务1,其中,usb主机初始化虚拟usb接口a对应的端点的过程中usb主机可以为配置1分配资源,其中usb主机为配置1分配的资源包括虚拟usb接口a所对应的端点的编号以及端点的所占的资源。当usb设备和usb主机需要切换业务1时,usb主机需要清除usb主机为配置1分配的资源、配置1的配置描述符,usb设备也需要释放为虚拟usb接口a对应的端点分配的资源。usb设备和usb主机需要将业务1切换到配置2对应的业务2,如图3中usb设备的配置2对应虚拟usb接口a、虚拟usb接口b和虚拟usb接口c,usb设备需要先向usb主机上报usb设备的描述符,再上报配置2的配置描述符,还需要上报配置2对应的三个虚拟usb接口的接口描述符。并且,usb设备也需要为配置2对应的虚拟usb接口a、虚拟usb接口b和虚拟usb接口c这些虚拟usb接口所对应的端点分配的资源和编号。usb主机根据配置2的配置描述符以及虚拟usb
接口a的接口描述符初始化虚拟usb接口a并且加载虚拟usb接口a的主机驱动,以建立虚拟usb接口a对应的端点的通道;usb主机根据配置2的配置描述符以及虚拟usb接口b的接口描述符初始化虚拟usb接口b并且加载虚拟usb接口b的主机驱动,以建立虚拟usb接口b对应的端点的通道;usb主机根据配置2的配置描述符以及虚拟usb接口c的接口描述符初始化虚拟usb接口c并且加载虚拟usb接口c的主机驱动,以建立虚拟usb接口c对应的端点的通道。其中,usb主机初始化虚拟usb接口a、虚拟usb接口b和虚拟usb接口c这些虚拟的usb接口对应的端点的过程中可以生成配置2对应的资源,配置2对应的资源包括虚拟usb接口a、虚拟usb接口b和虚拟usb接口c这三个接口所对应的端点的编号以及端点所占的资源。建立的虚拟usb接口a对应的端点的通道、建立的虚拟usb接口b对应的端点的通道和建立的虚拟usb接口c对应的端点的通道用于传输业务2。这个过程中,usb主机需要清除usb主机侧的usb设备描述符、配置1的配置描述符以及配置1对应的资源,usb主机需要重新为usb设备分配资源,具体地需要为usb设备的配置2分配资源,这个过程导致传输时延大,并且配置1和配置2包括一个共同的接口a,在切换过程中,usb主机仍然需要先清除usb主机侧的配置1中的关于虚拟usb接口a的资源和虚拟usb接口a的接口描述符,如虚拟usb接口a的资源包括虚拟usb接口a对应的端点的编号和资源。usb设备再上报虚拟usb接口a的接口描述符,usb主机再生成虚拟usb接口a对应的端点的资源,如虚拟usb接口a的资源包括虚拟usb接口a对应的端点的编号和资源,这样会导致usb主机需要不停的加载虚拟usb接口a的主机驱动,传输时延较长,并且成本也比较高。此外,usb设备在配置1中为虚拟usb接口a对应的端点分配了资源和编号,在切换过程中,usb设备需要释放为配置1中的虚拟usb接口a对应的端点分配的资源,并删除虚拟usb接口a对应的端点的编号,并重新为配置2中的虚拟usb接口a对应的端点分配资源和编号,这样,在切换业务的过程中,usb设备需要不停的释放资源和分配资源,删除编号和分配编号,会导致成本较高。
101.鉴于上述问题,在本技术实施例中,usb设备和usb主机可以将usb设备支持的总的端点编号提前配置好,不同的业务对应不同的端点组合信息,不同的端点组合信息包括不同的端点组合,这样,在传输不同的业务时,可以根据不同的端点组合传输数据,从而可以避免需要重新配置端点的编号所带来的时延。此外,若在不同的业务切换的过程中,若存在共同的端点,可以使得共同的端点保持不断开,即这些usb主机与usb设备不需要为这些共同的端点重新分配资源和编号,这样,可以简化设计,降低时延,有助于降低开销,也能节省成本。
102.为了更好的描述本技术的实施例,下面结合图4介绍本技术实施例的系统架构图。图4是本技术实施例的软硬件结合的结构框图。分层架构将软件和硬件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过接口通信。
103.在一些实施例中,将usb主机分为五层,在usb主机侧从上至下分别为应用程序层,主机服务管理模块,usb主机应用基础库,内核层以及物理层。
104.如图4所示,应用程序层可以包括一系列应用程序。例如,应用程序可以为华为手机助手(hisuite),usb虚拟串口调试工具,拨号上网,usb设备连接usb主机之后通过浏览器打开网关显示应用等。
105.主机服务管理模块,包括消息处理模块,资源管理模块和协议封装与解析模块。其中,消息处理模块用于处理应用程序层发送的控制命令,例如,控制命令包括切换业务的命
令;资源管理模块用于进行资源调度;协议封装与解析模块用于对数据进行解析和封装。
106.其中,主机服务管理模块中的部分或者全部子模块可以属于应用程序层也可以属于usb应用基础库,或者主机服务管理子模块可中的部分或者全部子模块可以独立于应用程序层和usb主机应用基础库,本技术实施例不予限制。
107.usb主机应用基础库为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。usb主机应用基础库包括一些预先定义的函数。
108.内核层可以包括usb功能驱动和usb主机控制器驱动等。usb主机控制器驱动用于驱动usb主机控制器识别usb设备,并驱动usb主机控制器为usb设备找到对应的usb功能驱动,例如usb功能驱动包括显卡对应显卡驱动、摄像头对应摄像头驱动、声卡对应音频驱动、传感器对应传感器驱动等等。此外,usb主机控制器驱动还用于为虚拟usb接口对应的端点分配资源。usb功能驱动用于驱动usb设备的功能,具体地,usb设备驱动用于驱动usb设备的功能并控制与usb设备的通信。其中,图1、图2、图3、图7中的虚拟usb接口主机驱动包括usb主机控制器驱动和usb功能驱动。
109.物理层,物理层可以为usb主机内部、或者与usb设备之间的数据通信提供传输媒体及互连通道,为数据传输提供可靠的环境。物理层可以理解为提供"信号和介质"的传输层。如图4所示,物理层包括usb主机控制器以及usb总线等等。
110.在一些实施例中,将usb设备分为五层,在usb设备侧从上至下分别为应用程序层,设备服务管理模块,usb设备应用基础库,内核层以及物理层。
111.如图4所示,usb设备的应用程序层可以包括一系列应用程序。应用程序可以包括图库、音乐、视频、电子邮件、日历、便签等。
112.设备服务管理模块,包括端点配置模块和协议封装解析模块。其中,端点配置模块用于管理端点的资源调度;协议封装与解析模块用于对数据进行解析和封装。
113.其中,设备服务管理模块中的部分或者全部模块可以属于应用程序层也可以属于usb设备应用基础库,或者设备服务管理模块可中的部分或者全部模块可以独立于应用程序层和usb设备应用基础库,本技术实施例不予限制。
114.usb设备应用基础库包括usb设备的api。api为应用层的应用提供与内核层的交互接口。例如,api包括打开(open)、关闭(close)、读(read)、写(write)、控制(control)某个应用的接口等。
115.内核层至少包含usb功能驱动,usb设备控制器驱动等。usb设备控制器驱动用于驱动usb设备控制器,并驱动usb设备控制器为usb设备找到对应的usb功能驱动。此外usb设备控制器驱动还用于为虚拟usb接口对应的端点分配资源。usb功能驱动用于驱动usb设备的功能,具体地,usb设备驱动用于驱动usb设备与usb主机进行通信。
116.物理层,物理层可以为usb设备内部、或者与usb主机之间的数据通信提供传输媒体及互连通道,为数据传输提供可靠的环境。物理层可以理解为提供"信号和介质"的传输层。如图4所示,物理层包括usb设备控制器以及usb总线等等。
117.需要说明的是,在图4所示的架构下,usb主机向usb设备传输信令或者数据的传输过程为:usb主机的高层到低层,usb主机的低层传给usb设备的低层,再由usb设备的低层传递到usb设备的高层;具体地,信令或者数据依次从图4中的usb主机的应用程序层、主机服务管理模块、usb主机应用基础库、内核层、内核层的usb总线驱动物理层向usb设备发送数
据或者信令;usb设备的物理层接收到来自usb主机的数据或者信令之后,依次从内核层、usb设备应用基础库、设备服务管理模块上报到应用程序层。usb设备向usb主机传输信令或者数据的传输过程为:usb设备的高层到低层,usb设备的低层传给usb主机的低层,再由usb主机的低层传递到usb主机的高层;具体地,信令或者数据依次从图4中的usb设备的应用程序层、设备服务管理模块、usb设备应用基础库、内核层、内核层的usb总线驱动物理层向usb主机发送数据或者信令;usb主机的物理层接收到来自usb设备的数据或者信令之后,依次从内核层、usb主机应用基础库、主机服务管理模块上报到应用程序层。下面的实施例为了避免赘述,描述的是usb设备与usb主机之间传输数据或者信令,本领域人员应该理解,usb主机与usb设备之间的数据或者信令是根据图4所示的不同层从高到低或者从低到高传输的。
118.下面结合图5描述本技术实施例提供的用于usb传输的方法。如图5所示,方法500包括:
119.s501,usb设备初始化。
120.可选地,usb设备初始化包括:usb设备确定自身支持的总的m个第二端点的端点类型以及m个第二端点的端点编号,例如,可以利用第一端点信息指示usb设备支持的总的m个第二端点的端点类型以及m个第二端点的端点编号。
121.例如,如表1所示的示出了usb设备支持15个in端点的端点类型和15个out端点的端点类型以及这些端点的端点编号,表1中m为30(15个in端点和15个out端点)。如图6所示为初始化的不同类型的端点的示意图,其中,usb主机和usb设备在初始化过程中建立控制端点的通道,图6中的黑色填充的端点表示该端点用于传输控制指令,包括输出控制指令和输入控制指令,其中,输出控制指令表示usb主机向usb设备发送控制指令,输入控制指令表示usb设备向usb主机发送控制指令。
122.需要说明的是,本技术实施例中控制端点不属于usb设备初始化过程中需要初始化的端点,控制端点可以是每次传输的业务公共的控制端点,因此本技术实施例提到的第一端点组合信息指示的端点组合不包括控制端点。
123.表1
[0124][0125]
可选地,usb设备初始化,包括:usb设备确定至少一个端点组合信息,至少一个端点组合信息中的每个端点组合信息用于指示usb设备支持的端点组合,不同端点组合信息指示不同的端点组合,其中,usb主机传输一种业务需要一个或多个端点组合信息对应的端点组合。其中,每个端点组合信息指示的端点组合为usb设备支持的m个第二端点中的端点组合,换种方式理解为,每个端点组合信息指示的端点组合为m个第二端点中的端点的功能组合,可以不包括端点的编号组合,如每个端点组合信息指示的端点组合为中断输入或输出功能、批量传输输入或输出功能、同步输入或输出功能和控制功能中至少一个功能的组合。
[0126]
例如,usb设备根据自身支持的第一业务需要批量数据的输入输出功能、中断输入功能、同步输入功能组合,则usb可以上报端点组合信息1和端点组合信息2;端点组合信息1用于指示批量数据输入端点(bulk端点in)、批量数据输出端点(bulk端点out),端点组合信息2用于指示中断输入端点和同步输入端点(同步端点in)。端点组合信息1和端点组合信息2分别指示的是哪些功能的组合,可以是usb设备自身确定的。
[0127]
举例来说,usb设备初始化确定5个端点组合信息(2个端点组合信息对应的端点组合用于传输业务1,3个端点组合信息对应的端点组合用于传输业务2)。
[0128]
可选地,usb设备可以根据usb设备支持的业务确定至少一个端点组合信息。具体地,usb设备支持的不同的业务可能需要不同的端点组合。
[0129]
可选地,usb设备也可以根据配置确定至少一个端点组合信息,举例来说,usb设备支持图3的配置2,配置2对应虚拟usb接口a、虚拟usb接口b和虚拟usb接口c,虚拟usb接口a对应表1所示的bulk 1_in端点和bulk 2_out端点,虚拟usb接口b对应表1所示的bulk 2_in端点、bulk 3_out端点和中断9_in端点,虚拟usb接口c对应表1所示的bulk 3_in端点、中断9_in端点和同步13_in;这样,端点组合信息1包括的端点组合为bulk_in端点和bulk_out端点,换句话说,端点组合信息1指示的端点组合需要具备虚拟usb接口a的批量数据的输入输出功能的组合;端点组合信息2包括的端点组合为bulk_in端点、bulk_out端点和中断_in端
点,换句话说,端点组合信息2指示的端点组合需要具备虚拟usb接口b的批量数据的输入、输出以及中断输入功能的组合;端点组合信息3包括端点组合为:bulk_in端点、中断_in端点和同步_in,换句话说,端点组合信息3指示的端点组合需要具备虚拟usb接口c的批量数据的输入、中断输入以及同步输入功能的组合。
[0130]
示例性的,如表2所示,示出了至少一个端点组合信息。上述的端点组合信息1为表2的t1,端点组合信息2为表2的t2,端点组合信息3为表2的t3。
[0131]
表2
[0132][0133]
示例性地,如图4所示,usb设备中的端点配置资源管理模块用于初始化,具体地,端点配置资源管理模块用于确定usb设备支持的总的m个第二端点的端点编号、m个第二端点的端点类型以及至少一个端点组合信息。
[0134]
s502,usb设备插到usb主机上时,usb主机发现usb设备并对usb设备进行查询,usb主机查询到usb设备之后,usb设备向usb主机上报第一端点信息,第一端点信息用于指示m个第二端点的端点类型以及m个第二端点的端点编号,m大于或等于2。
[0135]
可选地,usb设备可以通过描述符向usb主机上报第一端点信息,例如描述符可以是配置描述符或者接口描述符或者是自定义的描述符,本技术实施例不予限定。
[0136]
s503,usb主机根据第一端点信息为usb主机侧的m个第一端点分配端点编号。
[0137]
可选地,usb主机可以为usb主机侧m个第一端点分配新的端点编号,usb主机也可以复用m个第二端点的编号,将m个第二端点的编号作为m个第一端点的编号。
[0138]
可选地,usb主机根据第一端点信息指示的m个第二端点的端点类型确定m个第一端点的端点类型。例如,usb主机根据第一端点信息指示的m个第二端点的端点类型对应的功能确定在usb主机侧需要相应功能的端点,举例来说,如果usb设备上报了一个端点的端点类型是bulk端点_in,则usb主机确定usb主机侧该bulk端点_in对应的端点类型是bulk端点_out。
[0139]
可选地,usb主机可以为usb主机侧的m个第一端点分配资源,下面分两种情况讨论usb主机给m个第一端点分配资源的方式:
[0140]
方式一,usb主机加载usb主机控制器驱动和usb功能驱动为usb主机侧的m个第一端点分配编号和资源。
[0141]
方式二,usb主机加载usb主机控制器驱动和usb功能驱动为usb主机侧的m个第一端点分配编号,usb主机侧的图4所示的资源管理模块根据m个第一端点的编号为m个第一端点分配资源。
[0142]
相应的,usb设备侧的如图4所示的端点配置资源管理模块也可以为m个第二端点
分配usb设备侧的资源。
[0143]
需要说明的是,本技术实施例中提到的端点的资源为端点的硬件资源,例如硬件资源包括内存资源、flash资源和cpu资源中的至少一个。本技术实施例提到的端点的编号也可以称为软件资源。
[0144]
s504,usb主机根据usb主机侧的m个第一端点的端点编号,以及,usb设备侧的m个第二端点的端点编号与usb设备建立m个通道。
[0145]
具体地,s504中,usb主机建立usb主机侧的m个第一端点与usb设备侧的m个第二端点之间的m个连接,usb设备配合usb主机建立m个连接,m个连接也称为m个通道。
[0146]
可选的,若usb设备为usb设备侧的m个第二端点分配了资源,usb主机为usb主机侧的m个第一端点分配了资源,则此时s504中的m个通道也占用相应的资源,即此时可以确定s504中的每个通道两端的端点编号也可以确定每个通道所占的资源。
[0147]
可选的,若usb主机没有为m个第一端点分配资源,且usb设备也没有为m个第二端点分配资源,则只能确定s504中每个通道两端的编号,usb主机和usb设备可以根据传输的业务数据实时的为需要传输业务的通道分配资源。
[0148]
当然,usb设备可以为m个通道对应的m个第二端点中的部分第二端点分配资源,剩余第二端点不分配资源;同样的,usb主机也可以为m个通道对应的m个第一端点中的部分第一端点分配资源,剩余部分第一端点不分配资源,本技术实施例不予限制。
[0149]
示例性的,如图7所示,usb设备可以利用一个usb物理接口虚拟出一个虚拟usb接口,该一个虚拟usb接口对应usb设备侧的m个第二端点,同样地,在usb主机侧,一个虚拟usb接口对应的加载usb主机控制器驱动和usb功能驱动可以确定usb主机侧的m个第一端点。这样,usb主机可以根据usb设备侧的m个第二端点和usb主机侧的m个第一端点建立m个通道,图7所示的多个虚线表示m个通道。
[0150]
s505,usb设备插到usb主机上时,usb主机发现usb设备并对usb设备进行查询,usb主机查询到usb设备之后,usb设备向usb主机上报s501的初始化生成的至少一个端点组合信息。
[0151]
可选地,在s505中,usb设备根据图4所示的资源管理模块可以为不同的端点组合信息指示的端点组合分配资源。可选地,图4所示的资源管理模块用于管理申请、启用、停用、挂起或者销毁等至少一个端点组合信息指示的端点组合过程中的资源调度。
[0152]
可选地,usb设备可以通过描述符向usb主机上报至少一个端点组合信息,例如描述符可以是配置描述符或者接口描述符或者是自定义的描述符,本技术实施例不予限定。
[0153]
为了更好的理解至少一个端点组合信息,下面结合图8理解,如图8所示,usb设备的一个虚拟usb接口可以对应至少一个端点组合信息,相应的,usb主机加载usb控制器驱动和usb功能驱动之后usb主机对应至少一个端点组合信息指示的端点组合。图8中的一个虚线表示一个端点组合信息指示的端点组合所组成的通道,图8中的一个虚线可以对应图7中的一个或多个端点组成的通道,具体地,图8所示的一条虚线对应图7中的一条或一条以上的通道,换句话说,一个端点组合信息对应的一个或多个端点的组合,该一个端点或多个端点对应的一个或多个通道与一个端点组合信息对应。例如,图8中的从上到下的第一条虚线可以对应图7所示的从上到下的第一条虚线和第二条虚线。
[0154]
需要说明的是,s502和s505中,usb设备插到usb主机上时,usb主机发现usb设备并
对usb设备进行查询,usb主机查询到usb设备之后,usb设备可以向usb主机上报第一端点信息和至少一个端点组合信息,usb设备向usb主机可以同时上报第一端点信息和至少一个端点组合信息,也可以按照先后顺序上报第一端点信息和至少一个端点组合信息。
[0155]
在方法500中,usb设备与usb主机可以执行一次s501-505,执行多次s506-s511。换句话说,s501-505是预先配置的过程,s506-s511是实时传输的过程,可以基于一次配置传输多次业务。
[0156]
s506,usb主机确定与usb设备传输第一业务的业务数据。
[0157]
示例性的,如图4所示的应用程序层触发传输第一业务,应用程序层向主机服务管理模块的消息处理模块发送传输第一业务的指令。
[0158]
可选地,s506,包括:usb主机确定向usb设备发送第一业务的业务数据;或者包括:usu主机确定usb设备向usb主机发送第一业务的业务数据。
[0159]
s507,usb主机在s505中接收到的至少一个端点组合信息中,确定传输第一业务的业务数据需要的第一端点组合信息,第一端点组合信息用于指示第一端点组合,第一端点组合用于指示端点的数量为n个以及n个端点的端点类型。其中,n为小于或等于m的正整数。
[0160]
具体地,usb主机根据第一业务的业务类型在至少一个端点组合信息中确定传输第一业务所需要第一端点组合信息,usb主机根据第一端点组合信息所指示的第一端点组合确定传输第一业务的业务数据需要的端点。例如,usb设备上报了表2所示的t1、t2、t3、t4共四个端点组合信息。第一业务为复制业务,需要将usb设备的业务复制到usb主机,则可以确定传输第一业务需要t2和t3,则usb主机确定传输第一业务需要t2对应的bulk_in、bulk_out、中断_in以及t3对应的bulk_in、中断_in、同步_in,如图9所示,示出了传输第一业务需要的第一端点组合。
[0161]
s508,usb主机通过控制端点向usb设备发送第一指示信息,usb设备接收usb主机发送的第一指示信息,第一指示信息用于指示s507中确定的第一端点组合。
[0162]
s509,usb设备根据第一端点组合确定n个第二端点的编号。
[0163]
具体地,usb设备可以在s501中初始化的m个第二端点的端点编号中为第一指示信息指示的第一端点组合分配编号,例如,usb设备可以根据当前m个第二端点被占用的情况给第一指示信息指示的第一端点组合分配编号。例如,第一指示信息指示的第一端点组合为bulk_in和中断_in,则usb设备在表1的bulk_1in~bulk_8in为bulk_in分配一个编号,在表1的中断9_in~中断12_in中为中断_in分配一个编号。
[0164]
示例性的,如图4所示,usb设备侧的端点配置资源管理模块为第一指示信息指示的第一端点组合分配端点编号。
[0165]
可选地,若usb设备没有为m个第二端点分配资源,usb设备需要为第一端点组合指示的n个第二端点分配资源。示例性地,如图4所示,usb设备的端点配置资源管理模块为n个第二端点分配端点资源。
[0166]
可选地,若usb设备为m个第二端点分配资源,usb设备可以不为第一端点组合指示的n个第二端点分配资源。
[0167]
s510,usb设备通过控制端点将为传输第一业务的端点分配的n个第二端点的编号发送给usb主机。
[0168]
s511,usb主机根据s510中的n个第二端点编号在m个通道中确定用于传输第一业
务的n个通道。
[0169]
换句话说,s503中的每个通道的两端的端点编号固定,usb主机可以根据通道一端的一个端点编号确定唯一的通道,该通道的另一端的端点编号即为ubs主机侧的端点的端点编号。
[0170]
示例性地,如图4所示,usb主机侧的资源管理模块在m个通道中确定用于传输第一业务的n个通道。
[0171]
具体地,在s504中,usb主机根据usb主机侧的m个第一端点的端点编号,以及,usb设备侧的m个第二端点的端点编号与usb设备建立了m个通道。usb主机在s504中建立的m个通道确定用于传输第一业务的n个通道。例如,m=15,在usb设备侧16个第二端点的编号分别为0,1,2,3
···
,15。usb主机在s504中确定与这16个第二端点对应的usb主机侧的第一端点为16个,编号分别为0,16,17,
···
,30。其中,usb设备侧和usb主机侧的端点0为控制端点,也为双向通道,其余的端点组成15个通道,分别为usb设备侧的编号1的第二端点对应usb主机侧的编号16的第一端点组成通道1;usb设备侧的编号2的第二端点对应usb主机侧的编号17的第一端点组成通道2;usb设备侧的编号3的第二端点对应usb主机侧的编号18的第一端点组成通道3;usb设备侧的编号4的第二端点对应usb主机侧的编号19的第一端点组成通道4;usb设备侧的编号5的第二端点对应usb主机侧的编号20的第一端点组成通道5;usb设备侧的编号6的第二端点对应usb主机侧的编号21的第一端点组成通道6;usb设备侧的编号7的第二端点对应usb主机侧的编号22的第一端点组成通道7;usb设备侧的编号8的第二端点对应usb主机侧的编号23的第一端点组成通道8,依次类推,加上控制端点组成的通道共16个通道。结合图9的例子,若usb设备根据上述端点的编号为传输第一业务分配的t2对应的bulk_in的编号分别为1,bulk_out的编号为2,中断端点的编号为3;为传输第一业务分配的t3对应的bulk_in的编号为4,中断端点的编号为5,同步端点的编号为6。则usb主机确定通道1、通道2、通道3、通道4、通道5和通道6用于传输第一业务,即此时t2对应通道1、通道2和通道3,t3对应通道4、通道5和通道6。
[0172]
可选地,若s503中,usb主机为usb主机侧的m个第一端点分配了资源,则usb主机可以不为usb侧用于传输第一业务的n个通道对应n个第一端点分配资源;若s503中,usb主机没有为usb主机侧的m个第一端点分配资源,则usb主机需要为usb侧用于传输第一业务的n个通道对应n个第一端点分配资源,例如,可以通过如图4所述资源管理模块为usb侧的用于传输第一业务的n个通道对应的n个第一端点分配资源。
[0173]
可选地,在方法500中,可以不存在s507-s511,作为s507-s511可替换的方式,usb主机可以根据第一业务的业务类型在m个第一端点中确定符合第一业务的业务类型需求的n个第一端点,将这n个第一端点对应的n个通道确定为用于传输第一业务的通道。
[0174]
s512,usb主机利用s511确定的n个通道与usb设备传输第一业务。
[0175]
需要说明的是,在方法500中,描述的是usb设备与usb主机都可以提前为m个通道对应的每侧的m端点配置资源;或者usb设备与usb主机都不提前配置m个通道对应的m个第一端点和m个第二端点的资源,在实时传输过程中,根据需要为用于传输第一业务的n个通道对应的n个第一端点和n个第二端点配置资源。在实际应用过程中,本技术实施例对应配置资源不予限定,usb主机可以给usb主机侧的m个第一端点中部分或全部端点提前配置资源,或者usb主机可以给usb主机侧的m个第一端点中的部分或者全部端点不提前配置资源,
实时传输时再配置资源,对usb设备侧是否给usb设备侧的m个第二端点配置资源不予限定;相反地,usb设备可以给usb设备侧的m个第二端点中部分或全部端点提前配置资源,或者usb设备可以给usb设备侧的m个第二端点中的部分或者全部端点不提前配置资源,实时传输时再配置资源,对usb主机侧是否给usb主机侧的m个第一端点配置资源不予限定。换句话说,本技术实施例中,对用于传输第一业务的n个通道所需的资源的配置不予限制,可以在传输第一业务时配置也可以提前配置。
[0176]
在上述方案中,usb设备可以将指示自身支持的m个第二端点的第一端点信息上报给usb主机,同时usb设备也将至少一个端点组合信息上报给usb主机;usb主机可以根据第一端点信息提前配置与m个第二端点对应的m个通道,usb主机和usb设备也可以将该m个通道所占的资源提前配置好,该m个通道可以是一个虚拟usb接口对应的多个通道,这样,在传输第一业务时,根据该业务所需的端点组合信息,在m个通道中确定用于传输第一业务的通道,可以避免需要实时配置传输第一业务的通道的编号以及资源所带来的时延,能够降低传输时延。或者,usb主机可以根据第一端点信息提前配置与m个第二端点对应的m个通道,该m个通道可以是一个虚拟usb接口对应的多个通道,这样,在传输第一业务时,根据该业务所需的第一端点组合信息,在m个通道中确定用于传输第一业务的n个通道,实时为传输第一业务的n个通道配置资源,可以避免需要实时配置传输第一业务的n个通道的编号所带来的时延,能够降低传输时延。
[0177]
此外,usb主机与usb设备在切换不同的业务时,若不同的业务包括相同的端点组合信息,或者,若不同的业务对应不同的端点组合信息,但是不同的端点组合信息指示的端点存在交集,则可以保持该相同的端点组合信息对应的端点或者不同的端点组合信息存在交集的端点维持不断开,可以提高传输效率,并且也不需要重新配置该相同的端点的编号等,下面结合上述方法500以及图10描述切换业务的场景。如图10所示,方法1000,包括:
[0178]
s1001,usb主机确定将方法500传输的第一业务切换为第二业务。
[0179]
示例性的,如图4所示,usb主机侧的应用程序层确定将传输的第一业务切换为第二业务,并向主机服务管理模块的消息处理模块发送切换命令,该切换命令携带第二业务的标识。
[0180]
可选地,在s1001之后,所述方法还包括:usb主机向usb设备发送切换命令,切换命令用于指示将当前正在传输的第一业务切换为第二业务。切换命令可以包括第二业务的标识,usb设备接收到切换命令之后,可以执行s1004。
[0181]
s1002,usb主机确定传输第二业务的业务数据需要的端点组合。
[0182]
具体地,usb主机根据第二业务的业务类型在至少一个端点组合信息中确定传输第二业务端点组合信息,根据传输第二业务端点组合信息所指示的端点组合确定传输第二业务的业务数据需要的端点组合。例如,第二业务为打印业务,需要打印usb设备的数据,则可以根据该打印业务确定传输第二业务需要表2的t1和t2。
[0183]
s1003,usb主机根据传输第一业务的业务数据需要的第一端点组合与传输第二业务的业务数据需要的端点组合,确定需要重新配置的端点组合,例如usb主机确定usb设备需要给重新配置的端点组合分配编号。
[0184]
具体地,usb主机将传输第一业务的业务数据需要的端点组合与传输第二业务的业务数据需要的端点组合中相同的端点组合确定为不需要重新配置的端点组合,将传输第
二业务的业务数据需要的端点组合与传输第一业务需要的端点组合不同的确定为需要重新配置的端点组合。例如,传输第二业务需要第二端点组合信息和第三端点组合信息,第二端点组合信息指示的第二端点组合与第一端点组合相同,即第二端点组合指示的端点个数与第一端点组合指示的端点个数相同都为n个,第二端点组合指示的端点类型与第一端点组合的端点类型相同,则usb主机将第二端点组合确定为不需要重新配置的端点组合。第三端点组合信息指示的第三端点组合与第一端点组合不同,即第三端点组合信息指示的端点个数(p个)与第一端点组合指示的端点个数(n个)不同,或者,第三端点组合信息指示的端点类型与第一端点组合信息指示的端点类型不同,usb主机将第三端点组合确定为需要重新配置的端点组合。
[0185]
可选地,若usb设备为usb设备侧的m个第二端点分配了资源,则usb主机在s1003中可以确定usb设备不需要为重新配置的端点组合分配资源,usb设备只分配端点编号即可;若usb设备为usb设备侧的m个第二端点没有分配资源,则usb主机在s1003中可以确定usb设备需要为重新配置的端点组合分配编号和资源。
[0186]
具体地,usb主机与usb设备传输不同的第一业务和第二业务时,若传输第一业务所需的业务端点组合与传输第二业务的端点组合存在共同的端点组合,则可以维持这些共同的端点组合的通道不断开,即这些公共端点组合的编号不变所占的资源不变,usb设备也不需要为这些共同的端点组合重新编号,usb设备只需要为第二业务与第一业务不同的端点组合分配编号即可,或者分配编号和资源即可。
[0187]
例如,usb设备上报了表2所示的t1、t2、t3、t4共四个端点组合信息。第一业务为复制业务,方法500中传输第一业务需要t2和t3。第二业务为打印业务,需要打印usb设备的数据,则可以根据该打印业务确定传输第二业务需要t1和t2,如图11所示,为传输第二业务需要的端点。由于第一业务与第二业务存在共同的端点组合信息t2。则usb设备与usb主机维持t2不变,即图11与图9相比,在图11中保持图9中的bulk_in、bulk_out和中断_in不变。usb主机确定只需要usb设备给t1的指示的端点分配编号即可,或者usb主机确定只需要usb设备给t1的指示的端点分配编号和资源即可。当然,usb设备和usb主机还可以释放t3指示的端点组合对应的通道所占的资源,或者还可以删除t3指示的端点组合的编号等。
[0188]
可选地,usb主机将传输第一业务的业务数据需要的第一端点组合与传输第二业务的业务数据需要的端点组合中相同的端点组合确定为不需要重新配置的端点组合,将传输第一业务的业务数据需要的端点组合中与传输第二业务需要的端点组合不同的端点组合确定为待释放的端点组合。usb主机可以释放这些端点组合的资源,或者释放这些端点组合的资源以及删除这些端点组合的编号。这样,可以节省资源开销。
[0189]
s1004,usb主机通过控制端点向usb设备发送第二指示信息,usb设备接收usb主机发送的第二指示信息,第二指示信息用于指示s1003确定的需要usb设备重新分配的端点组合,例如第二指示信息指示前述的第三端点组合。
[0190]
s1005,usb设备为第二指示信息指示的端点组合分配端点编号。
[0191]
示例性的,如图4所示,usb设备侧的端点配置资源管理模块为第二指示信息指示的端点组合分配端点编号。例如usb设备根据表1为第二指示信息指示的端点组合分配端点分配的编号。
[0192]
结合s1003的例子,若第二指示信息指示了t1指示的端点组合,则usb设备根据表1
为bulk_in和bulk_out分配编号,例如为t1对应的bulk_in分配编号7,为bulk_out分配编号8。
[0193]
可选地,usb设备将传输第一业务的业务数据需要的端点组合中与传输第二业务需要的端点组合不同的端点组合确定为待释放的端点组合。usb设备可以释放这些端点组合的资源,或者释放这些端点组合的资源以及删除这些端点组合的编号。这样,可以节省资源开销。
[0194]
s1006,usb设备通过控制端点将为传输第二业务的端点分配的端点编号发送给usb主机,例如usb设备为第三端点组合指示的p个端点分配p个编号。
[0195]
s1007,usb主机根据s1006中的端点编号在剩余的通道中确定用于传输第二业务的通道。
[0196]
如前述第二端点组合和第三端点组合的例子中,若s1006中的端点编号为p个,usb主机根据p个端点编号在剩余的m-n个通道中确定p个通道,p为小于或等于m-n的正整数。
[0197]
示例性地,如图4所示,usb主机侧的资源管理模块在剩余的通道中确定用于传输第二业务的通道。
[0198]
结合s511中的例子和s1005的例子,usb设备与usb主机共建立了16个通道,usb设备与usb主机维持通道1、通道2和通道3不变,usb主机只需要为t1对应的端点分配端点编号,如为bulk_in分配编号7,为bulk_out分配编号8,这样,s1007中usb主机确定传输第二业务的通道为通道7和通道8。这样,usb主机和usb设备可以利用通道1、通道2、通道3、通道7和通道8传输第二业务的业务数据。此外,usb主机和usb设备可以释放通道4、通道5和通道6所占的资源。
[0199]
可选地,若在s503中,usb主机为usb主机侧的m个第一端点分配了资源,则usb主机可以确定usb主机不需要为待配置的端点组合分配资源;若usb设备为usb设备侧的m个第二端点没有分配资源,则usb主机在s1003中可以确定usb主机也需要为重新配置的端点组合分配资源。结合上述的例子,usb主机需要给usb主机侧的通道7和通道8的端点分配资源。
[0200]
s1008,usb主机利用s1007确定的通道以及与第一业务存在共同的通道与usb设备传输第二业务。
[0201]
示例性地,s1007可以确定p个通道,与第一业务存在共同的n个通道,则usb主机可以通过p n个通道与usb设备传输第二业务。
[0202]
在上述方案中,usb主机和usb设备在切换不同的传输业务时,不同业务存在共同的端点组合信息对应的端点组合维持不变,即这些端点组合的编号不变所占的资源不变,只需要为不同的端点组合信息指示的端点组合分配编号,或者分配编号和资源,这样,可以节省开销。此外,由于一个虚拟usb接口包括m个第二端点,在usb设备与usb主机切换不同的业务时,只需要动态切换该虚拟usb接口中的端点组合即可,不需要断开虚拟usb接口,也不需要删除虚拟usb接口描述符和设备描述符,避免切换业务时需要重新上报设备描述符以及接口描述符所带来的时延。
[0203]
上述方法500的s502中,usb设备向usb主机上报usb设备支持的总的m个第二端点的端点信息,如图7所示,m个第二端点为一个虚拟usb接口对应的端点。usb设备向usb主机上报至少一个端点组合信息所指示的端点组合为这m个第二端点的端点功能组合。但本技术实施例不予限制,例如,m个第二端点中的l个第二端点为一个虚拟usb接口对应的端点,l
为小于或等于m的正整数,剩余的m-l个第二端点为另一个虚拟usb接口对应的端点,l为小于m的正整数。这样,usb设备上报的至少一个端点组合信息中的部分端点组合信息为l个端点的端点功能组合,剩余部分端点组合信息为m-l个端点的端点功能组合。这样,usb设备与usb主机在传输不同的业务时,可以在l个端点的端点功能组合切换端点功能组合;或者也可以在m-l个端点的端点功能组合中切换端点功能。具体的,在不同虚拟usb接口对应的端点组合中确定传输不同业务的端点组合的方式参见方法500和方法1000,为了避免赘述,本技术不详细描述。
[0204]
举例来说,如图12所示,usb设备向usb主机可以上报虚拟usb接口e对应m-l个第二端点,虚拟usb接口f对应l个端点。此外,usb设备可以向usb主机上报虚拟usb接口e对应的m-l个端点的端点组合信息以及虚拟usb接口f对应的l个端点的端点组合信息。如,usb主机与usb设备通过m-l个端点中的至少部分端点传输业务1,当usb主机需要将业务1切换为业务2时,usb主机根据业务2的需求在m-l个端点中确定用于传输业务2的端点组合,若业务1与业务2存在共同的端点组合,可以保持共同的端点组合不断开,即这些端点组合的编号不变或者编号和资源都不变,usb设备为与业务1不同的端点组合配置端点编号,或者配置端点编号和资源,从而实现在m-l个端点中传输不同的业务。又例如,usb主机与usb设备通过l个端点中的至少部分端点传输业务3,当usb主机需要将业务3切换为业务4时,usb主机根据业务4的需求在l个端点中确定用于传输业务4的端点组合,若业务3与业务4存在共同的端点组合,可以保持共同的端点组合不断开,即这些端点组合的编号不变或者编号和资源都不变,usb设备为与业务3不同的端点组合配置端点编号,或者配置端点编号和资源,从而实现在l个端点中传输不同的业务。
[0205]
需要说明的是,一个虚拟usb接口所对应的端点被释放之后,另外一个虚拟usb接口可以申请被释放的端点。结合上述例子,假设usb主机与usb设备释放了虚拟usb接口f的对应的l个端点中的端点1,则usb主机可以重新为虚拟usb接口e申请该端点1。
[0206]
下面结合图13描述本技术实施例用于usb传输的方法1300。
[0207]
s1301,usb设备的设备服务管理模块中的端点配置资源管理进行初始化,初始化包括根据usb设备的能力,分别创建端点能力集与协议通路能力集,并完成资源初始化。
[0208]
示例性的,端点能力集对应前述的m个第二端点的端点类型和m个第二端点的端点编号。
[0209]
示例性的,协议通路能力集对应前述的至少一个端点组合信息。一个协议通路对应一个端点组合信息。
[0210]
s1302,usb设备连接usb主机,usb设备默认配置单一接口(前述的一个usb虚拟接口),usb主机查询usb设备能力,获取usb设备端点能力集,完成接口初始化和配置。
[0211]
示例性的,usb主机获取usb设备端点能力集完成接口初始化和配置,具体可以包括:usb主机根据usb设备的端点能力集确定usb主机侧的端点的类型和编号,usb主机侧端点可以为前述的m个第一端点。
[0212]
s1303,usb主机的主机服务管理模块中的资源管理模块查询usb设备支持的协议通路能力集,完成usb主机侧的协议通路集所需资源的初始化。
[0213]
示例性的,主机服务管理模块中的资源管理模块可以查询usb设备支持的协议通道能力集,并对usb主机侧的协议通路集对应的端点组合分配资源。
[0214]
s1304,usb主机的应用程序层通过主机服务管理模块获取usb设备所支持的功能集,根据第一业务或第二业务所需向主机服务管理模块发送切换命令,由消息处理模块处理执行切换动作,并通知资源管理模块。
[0215]
s1305,主机服务管理模块中,资源管理模块申请协议通路n(tn),在usb主机管理资源的同时,也需通知usb设备同步进行资源的管理,usb设备的设备服务管理模块的端点配置资源管理模块,申请对应的协议通路。在不同业务场景下,该步骤可动态申请、启用、停用、挂起、销毁资源。
[0216]
s1306,主机服务管理模块中,协议封装与解析模块处理协议通路n上通信数据的协议封装与解析,在usb设备侧也需同步处理。当存在多种协议通路时,该协议封装与解析模块处理每个协议通路。
[0217]
s1307,usb主机的应用程序层中的应用程序可以通过协议通路n与usb设备交互,在usb设备侧,也存在usb设备应用程序层,应用程序层中的应用程序可以通过协议通路n与usb主机交互。
[0218]
本实施例可以根据上述方法示例对usb主机和usb设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中,如图4所示。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对图4的模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0219]
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0220]
本实施例提供的usb主机和usb设备,用于执行上述用于usb传输的方法,因此可以达到与上述实现方法相同的效果。在采用集成的单元的情况下,usb主机和usb设备分别可以包括处理模块、存储模块和通信模块。其中,处理模块可以用于对usb主机和usb设备的动作进行控制管理。存储模块可以用于支持usb主机和usb设备执行存储程序代码和数据等。通信模块,可以用于支持客户端和服务端与其他设备的通信。
[0221]
其中,处理模块可以是处理器或控制器。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,dsp)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、wi-fi芯片等与其他电子设备交互的设备。
[0222]
在一个实施例中,当处理模块为处理器,存储模块为存储器时,本实施例所涉及的电子设备可以为具有图14所示结构的设备。
[0223]
示例性的,图14是本技术实施例提供的一例电子设备1400的结构示意图。电子设备1400可以是usb主机或usb设备,电子设备1400可以是包括处理器1410、存储器1420和通信模块1430等。
[0224]
其中,处理器1410可以包括一个或多个处理单元,存储器1420用于存储程序代码和数据。在本技术实施例中,处理器1410可执行存储器1420存储的计算机执行指令,用于对电子设备1400的动作进行控制管理。例如,若电子设备1400为usb设备,处理器1410可以包括图4所示的usb设备控制器。又例如,电子设备1400为usb主机,处理器1410可以包括图4所
示的usb主机控制器。
[0225]
通信模块1430可以用于电子设备1400的各个内部模块之间的通信、或者电子设备1400和其他外部电子设备之间的通信等。示例性的,如果电子设备1400通过有线连接的方式和其他电子设备通信,通信模块1430可以包括物理usb接口和如图4所示的usb总线等,例如一个物理usb接口可以虚拟出本技术实施例中的上述一个或多个虚拟usb接口,物理usb接口可以是符合usb标准规范的接口,具体可以是mini物理usb接口,micro物理usb接口,usb type c接口等。物理usb接口可以用于连接充电器为电子设备1400充电,也可以用于电子设备1400与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如ar设备等。
[0226]
或者,通信模块1430可以包括音频器件、射频电路、蓝牙芯片、无线保真(wireless fidelity,wi-fi)芯片、近距离无线通讯技术(near-field communication,nfc)模块等,可以通过多种不同的方式实现电子设备1400与其他电子设备之间的交互。
[0227]
可选地,电子设备1400还可以包括显示屏1440,显示屏1440可以显示人机交互界面中的图像或视频等。
[0228]
可选地,电子设备1400还可以包括外设设备1450,例如鼠标、键盘、扬声器、麦克风等。
[0229]
应理解,除了图14中列举的各种部件或者模块之外,本技术实施例对电子设备1400的结构不做具体限定。在本技术另一些实施例中,电子设备1400还可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0230]
本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的用于usb传输的方法。
[0231]
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的用于usb传输的方法。
[0232]
另外,本技术的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的安全访问数据的方法。
[0233]
其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
[0234]
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0235]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以
结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0236]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0237]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0238]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0239]
以上内容,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
再多了解一些

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

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

相关文献