USB接口请求调度方法、装置及设备与流程

文档序号:17049176发布日期:2019-03-05 19:51阅读:481来源:国知局
USB接口请求调度方法、装置及设备与流程
本发明涉及通信领域,具体而言,涉及一种usb(universalserialbus,通用串行总线)接口请求调度方法、装置及usb多接口复合设备。
背景技术
:随着无线通讯技术的发展,数据传输的速度越来越快。目前lte(longtermevolution,长期演进)cat(category)6的理论下行速率可以达到300m,ltecat11下行速率达到了600m,未来lte的下行速率可能更快。目前大多数无线数据模块/数据卡类设备均使用usb接口与主机相连,因此,usb接口的效率对实现整机速率最优至关重要。以usb2.0结合ltecat6模块为例,由于usb2.0的理论带宽是480m,考虑减去usb协议等损耗,结合实际测量,这个值应该在320~350m之间。而lte模块的端口形态除了用于网络数据传输的ndis(networkdriverinterfacespecification,网络驱动接口规范)等网卡接口外,还有用于发送at(attention,一种通讯指令)的at接口,用于传输诊断信息的diag(diagnostics)口,以及用于调试的adb(androiddebugbridge,安卓调试桥)接口等,即,现有的支持ltecat6的多接口usb设备是一个典型的usb复合设备。由于usb接口实质上采用的是一种轮询机制,每个接口在工作时都要不停的往usb控制器上下发读(read)的urb(usbrequestblock)请求,这就意味着即使这个接口上没有数据传输也会占用不少的usb总线资源。由此可见,现有的支持ltecat6的多接口usb复合设备,由于at/adb/diag等端口的总线操作会影响网络端口的数据传输效率,使得下载速率低于无线网络理论值300m,从而影响设备整体性能。技术实现要素:本发明提供了一种usb接口请求调度方法、装置及usb多接口复合设备,以至少解决相关技术中usb接口效率的问题。根据本发明的一个方面,提供一种usb接口请求调度方法,包括:接收所述usb接口的数据传输请求,并判断所述usb接口的类型;根据所述usb接口的类型,采用对应的调度频率对所述数据传输请求进行调度。根据本发明的另一方面,还提供一种usb接口请求调度装置,包括:接收模块,用于接收所述usb接口的数据传输请求,并判断所述usb接口的类型;调度模块,用于根据所述usb接口的类型,采用对应的调度频率对所述数据传输请求进行调度。根据本发明的又一方面,还提供一种usb多接口复合设备,包括:中央处理器cpu和usb控制器,usb控制器通过外设部件互连标准pci总线与所述cpu相连,其中,所述usb控制器包括usb请求块调度器和usb物理层接口,其中,所述usb请求块调度器,用于接收usb多接口复合设备的用户驱动下发的urb请求,并根据所述usburb请求中携带的接口类型,采用对应的调度频率将所述urb请求发送至所述usb物理层接口。根据本发明的又一方面,还提供一种usb接口请求调度方法,包括:在所述usb接口的调度时刻到来时,判断usb总线上是否有需要读取的数据;根据判断结果动态地调整所述usb接口的下一次调度间隔时长。在本发明上述实施例中,根据usb接口的不同类型,采用不同的频率对该接口的请求进行灵活调度,提高了usb接口的效率。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是根据相关技术的usb设备硬件总线示意图;图2是根据相关技术的usb设备驱动软件结构示意图;图3是根据本发明实施例的usb系统结构示意图;图4是根据本发明实施例的usb接口请求调度方法流程图;图5是根据本发明实施例一的usb接口的urb调度流程图;图6是根据本发明实施例三的usb接口的urb调度流程图;图7是根据本发明实施例五的usb接口的urb调度流程图;图8是根据本发明实施例六的usb系统结构示意图;图9是根据本发明实施例的usb接口请求调度装置结构示意图;图10是根据本发明实施例的usb多接口复合设备结构示意图。具体实施方式下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。目前在通讯设备领域,尤其是lte数据卡类/模块类设备大都采用usb接口技术与主机(host)相连,由于通讯设备的复杂性,lte无线模块往往是一种usb复合设备,即它不仅提供用于网络数据传输的ndis接口,也提供其它的用于控制或者调试的usb接口,例如,用于发送at命令的at接口,用于调试的adb接口以及用于诊断日志(log)传输的diag接口等。usb协议规范定义了4中传输模式:控制传输、批量(bulk)传输、同步传输和中断传输。如上所述、无线模块中diag/at/ndis/adb接口在数据传输中均基于bulk传输模式,每个接口提供1个bulkin端点和1个bulkout端点。这就意味着从usb层面4个接口并没差异,数据传输的调度机制以及usb资源分配并无差别。然而,usb接口技术的读操作本质上是一种轮询机制,主机侧的端口驱动并不知道设备何时会发送数据,所以就需要不停的向usb总线发送读令牌包(intoken)。如果设备是一个多接口的usb复合设备,每个接口均会频繁地产生intoken,占用了大量usb总线资源。在无线通讯领域,当lte无线模块的下行速率非常接近usb物理接口最大速率时,此时以上所述的usb轮询机制对网络接口的数据传输影响就非常明显,在主机侧多个接口同时使用时往往造成下行速率低于lte理论速率,对设备性能造成了很大影响。图1为usb设备硬件总线示意图,如图1所示,中央处理器(cpu)与内存储器相连,包括usb控制器在内的外围控制器通过外设部件互连标准(peripheralcomponentinterconnect,pci)总线与cpu相连,usb设备通过usb控制器接入系统之中,运行中的系统软件存储在内存储器中,cpu读取内存储器中的软件指令执行相应的命令,包括控制usb设备、存取usb设备等等。目前主流的usb控制器不仅支持usb2.0设备,也支持usb1.1和usb3.0/3.1等设备,所以usb控制器内部包含多种主机控制器接口(hostcontrollerinterface)类型。例如,包括usb2.0设备使用的增强型主机控制器接口(enhancedhostcontrollerinterface,ehci)、usb1.1设备使用的开放式主机控制器接口/通用主机控制器接口(openhostcontrollerinterface/universalhostcontrollerinterface,ohci/uhci)和usb3.0/3.1设备使用的可扩展的主机控制器接口(extensiblehostcontrollerinterface,xhci),在下面的描述中,将这些接口统一称之为usb物理层(usbphysicallayer,usbphy)。图2为usb设备驱动软件架构图,如图2所示,根据usb设备的类型不同,系统软件层面分别加载uhci/ohci和ehci的驱动软件,usbd软件负责向用户驱动(clientdriver)提供统一的usb总线操作方法。其中,clientdriver是设备功能驱动的统称,在usb系统架构中,如果当前的usb设备是一个单接口的功能设备,那么clientdriver就只有一个;如果当前的usb设备是一个包含了多个接口的复合设备,那么每个功能接口都会对应一个clientdriver。在主机usb驱动软件设计中,所有的usb操作都会以usb请求块(usbrequestblock,urb)的形式下发给usb总线,usb总线驱动(usbd)再转换为usbphy可以识别的硬件操作指令。影响无线数据传输下行速率主要是各个端口的in方向的urb,频繁的urb操作会严重影响usbphy的性能,从而影响设备最终性能。本专利将对各接口下发的urb按照权重系统规则,重新调配urb的工作方式,以减少usbphy的负载,将对网络传输接口的影响降到最低。图3为根据本发明实施例的usb系统框图,如图3所示,在本发明实施例中,在clientdriver与usb总线驱动(usbd)之间增加一个调度器,称之为usburb调度器(usburbscheduler)。usb设备工作时,所有的urb请求都会首先交由usburbscheduler来进行统一地调度,根据一定的算法规则决定调度发往usbphy。所以usburbscheduler包括执行体和算法体两个部分,usburbschedule和clientdriver的配合机制以及usburbschedule中的算法机制将在下面的实施例中具体描述。在本实施例中提供了一种usb接口的数据传输请求调度方法,图4是根据本发明实施例的usb接口的数据传输请求调度流程图,如图4所示,该流程包括如下步骤:步骤s402,接收所述usb接口驱动下发的数据传输请求,并判断所述usb接口的类型;步骤s404,根据所述usb接口的类型,采用对应的调度频率对所述数据传输请求进行调度。在上述实施例中,通过根据usb接口的不同类型,采用不同的频率对该接口的请求进行灵活调度,提高了usb接口的效率。实施例一在本实施例中,usb多接口复合设备在与主机通讯过程中,usburbscheduler判断每个urb对应的功能接口类型,对其进行不同的处理,流程如下:步骤s501:usb多接口复合设备的每个接口所使用的功能驱动在产生urb的同时为其做出标记;步骤s502:usburbscheduler在接收到urb的时候根据其标记判断出所对应的接口以及功能;步骤s503:usburbscheduler根据每个接口功能对通讯效率的不同要求采用不同的调度频率。如果该urb对应接口的功能对通讯效率要求不高,例如,对实时性和时延不敏感,则可延迟一段时间再将该urb发送到usb总线,即,可通过增加该接口urb调度的调度间隔时长减小其调度频率。如果该urb对应接口的功能对通讯效率有很高的要求,例如,对实时性和时延敏感,则缩小该接口的调度间隔时长,以便立即将该urb发送到usb总线。通过本实施例,可以显著提升usb多接口复合设备中某一特定接口的通讯效率,提升用户体验。实施例二本实施例主要从时间调度算法的角度进行详细的说明。在数据通信中,数据传输往往具有以下两个特性:突发性和集中性。突发性意味着数据的产生不可预估,所以urb的时间间隔不宜过长,以免造成数据的延误和丢失;集中性意味着数据传输往往是集中的,所以设置固定的urb时间间隔也会造成空闲时的浪费。下面是本专利实施例中urb调度时间计算公式以及各个参数详细的解释和说明:f(x)=nt(2)x(x<=5)(公式1)参数x为空闲时段重新调度的次数;参数n为权重系数;参数t为基准调度时间;时间参数t意味着调度最小时延,它的取值需要根据实际的应用场景确定,如果usb接口对应的业务需要更高的及时性,则可以将t设置的更小;如果usb接口对应业务对时效性不敏感,则可以取较大的值。本专利并不对公式中的各参数取值做具体限制,应用中可根据实际需要做调整。为讲述方便,本例假设t为1ms,那么调度时间分布如下表1所示,调度时间初始值为1ms,倘若usb接口一直无数据,其随着调度算法递增并在第5次时达到最大值16ms,之后保持在16ms不再增加。该实施例可以同时满足数据突发性和集中性的要求。表1调度次数12345调度时间1ms2ms4ms8ms16ms在本发明的另一实施例中涉及的是单一接口的usb设备,同样可将本发明实施例中的调urb度算法应用于此单一接口的usb设备,以实现动态地调整该usb设备接口的数据调度间隔时长,具体调度步骤可参见上述的实施例,在此不再累述。实施例三本实施例主要描述了urb调度中策略的具体流程和方案,在本实施例中,可根据接口功能对通讯效率的要求不同,将urb的调度进行分类,如果urb对应接口对实时性和时延有很高的要求,对于这类urb不应用调度算法,直接发送到usbphy,对于其他类的urb则需要参与调度,具体的调度方式如图6所示,包括以下流程:步骤s601:设备插入主机后,用户态应用app可以通过设备节点打开usb各接口对应的虚拟设备步骤s602:内核驱动产生urb请求;步骤s603:内核驱动根据usb接口类型,判断是否需要进行urb调度;步骤s604:如果该接口对应的urb不需要调度,那么直接发送到usbphy;步骤s605:如果该接口对应的urb需要参与调度,那么就设定调度标记,用于告知usb总线驱动;步骤s606:usb总线驱动首先按照调度算法的初始时间调度urb;步骤s607:判断当前urb对应的usb接口上是否读到了数据,如果是,下次urb调度时间继续保持初始时间;步骤s608:如果该接口上没有数据传输,那么urb调度时间按照既定算法递增;步骤s609:继续判断当前usb总线上是否有数据传输,任意时间读到数据,都需要将调度时间恢复到初始时间;步骤s610:如果一直没有,则调度时间继续按照既定算法增加,直至到最大值。实施例四本实施例详细描述了多接口usb设备中urb的调度方法和策略,实施例中的多接口usb复合设备有4个接口需要参与调度。在前文的公式1中,仍然设定t为1ms,但每个接口对应的权重系统不同,如下表2是各个接口的调度时间策略。表2由上表可知,接口1的权重系数为1,理论上数据读取时最多有16ms的时延;接口2和3的权重系数为2,理论上数据读取时最多有32ms的时延;接口4的权重系统为3,理论上数据读取时最多有48ms的时延。通过本实施例,调整每个接口的权重系数,可以影响每个接口的读取效率,在实际使用时可以根据每个接口的功能特征,最大程度的优化usb通讯效率。实施例五在本实施例中,无线通讯领域的cpe(customerpremiseequipment,客户终端设备)类设备由一个主机大板和一个无线通讯设备模块组成,两者之间通过usb接口连接。其中,无线通讯设备模块通过usb枚举多个接口,如用于发送at命令的at接口,用于调试的adb接口、用于诊断log的diag接口和网络数据传输的ndis端口。为了降低at/adb/diag端口工作时对网络ndis端口的影响,提升ndis端口的通讯效率,达到满足ltecat6300m的理论下行速率要求,结合本专利实施策略如下:ndis端口保持高效传输,不参与调度;at/adb/diag端口对应的usburb参与调度,设置权重系统均为1,其调度时间仍如表1所示。本实施例的流程如下图7所示,包括以下步骤:步骤s701,主机内核功能驱动产生urb请求;步骤s702,判断urb对应的接口;步骤s703,如果为ndis端口,则不参与调度,将urb请求直接发送到usbphy;步骤s704,如果是其它端口,例如,at/adb/diag端口,则设置urb调度标志;步骤s705,按照公式1的调度算法进行调度以及进行数据传输。通过本实施例,可以大幅降低在数据高速下载时,at/diag/adb等端口占用usb总线资源而导致网络下载速率受限,无法满足300m下行速率的状况。实施例六本发明的技术方案并不局限应用与usb主机侧,同样可应用在usb模块/设备侧,达到提升usb复合设备接口通讯效率的效果。如图8所示是linux系统usb主机/设备的系统架构图,如图8所示,在本实施例中,在主机侧增加usburbscheduler,同样也可应用在设备侧,本例中在gadgetclientdriversoftware(小工具用户驱动软件)和udc(usbdevicecontroller)driver(usb设备控制器驱动)之间增加usbiorequestscheduler(usb输入输出请求调度器)层,对每个clientdriver产生的usbiorequest进行重新调度,调度策略和算法和主机实施例相同,这里不再赘述。通过本实施例,可以在设备侧对每个clientdriver产生的usbiorequest进行重新调度,达到提升usb复合设备某一接口通讯效率的方法。例如,将本实施例的技术方案应用在usb接口连接的cpe类设备中,主机主板可以对无线通讯模块各端口的传输效率进行动态调节,以提升主要业务的通讯指标。本实施例也可以应用在芯片互联技术hsic(high-speedinter-chip)系统中,hisc系统中的主机上可以采用本实施例的技术方案,对hisc系统中从设备的各业务端口进行调度,提升芯片间的通讯效率。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。在本实施例中还提供了一种usb接口的数据传输请求调度装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图9是根据本发明实施例的usb接口请求调度装置的结构框图,如图9所示,该装置100包括接收模块10和调度模块20。其中,接收模块10用于接收所述usb接口驱动下发的数据传输请求,并判断所述usb接口的类型。调度模块20用于根据所述usb接口的类型,采用对应的调度频率对所述数据传输请求进行调度。图10是根据本发明实施例的usb多接口复合设备结构框图,如图10所示,该usb多接口复合设备200除包括图9所示的usb接口请求调度装置100外,还包括多个不同类似usb接口。这些接口包括,例如用于发送at命令的at接口,用于调试的adb接口、用于诊断log的diag接口和网络数据传输的ndis接口。该复合设备的这些usb接口与数据传输请求调度装置100之间的数据交互同前文中的实施例,再此不再累述。需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。本发明的实施例还提供了一种存储介质。该存储介质中存储有计算机程序,这些计算机程序被运行可以执行前文中实施例中的步骤。在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。通过本发明的上述实施例,与现有技术相比,具有如下技术效果:通过公式1可以具体设置每个接口的调度参数和调度时间;结合实际的应用场景,为不同的接口设定不同的权重系统,达到降低其对usb总线影响的目的;针对cpe项目中遇到的由于at/diag/adb端口影响而导致ndis网络下行无法到达ltecat6300m下行速率的问题,本专利可以有效解决该问题并且不会对其它功能模块产生较大波及。本发明的实施可以大幅度的提升接口通讯效率,在一定情况下避免因为速率问题更换usb控制器硬件的情况,产生较大的经济效益;本发明实施提供的技术方案同样可以应用到usb1.1、usb3.0等其它设备上,提升用户体验;本发明提供的技术方案也可以应用到usb设备侧,同样可以提升usb复合设备中某一接口的通讯效率。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1