Usb设备的数据传输速率测量系统及其方法

文档序号:6651455阅读:155来源:国知局
专利名称:Usb设备的数据传输速率测量系统及其方法
技术领域
本发明涉及一种信息传输测试方法,特别涉及一种USB设备的数据传输速率测量系统及其方法。
背景技术
随着大量支持通用串行总线(Universal Serial Bus,USB)接口技术的计算机装置的普及,以及Windows操作系统平台的广泛应用,关于USB接口的使用越来越普及。目前,使用USB接口的计算机外设设备包括打印机、数字相机、扫描机、及随身听等。USB接口具有主机与设备之间数据传输速率高、可靠性好、可热插拔且接口连接灵活的优点。
在操作系统平台支持方面,包括Windows98/Windows2000/WindowsXP/Linux等多种操作系统都提供了对USB接口的支持随着USB接口的计算机外设设备的增多,要求计算机对USB接口的支持能力也越高。现在市场上推出的计算机一般支持多个USB接口,因此用户可以在一种操作系统平台下同时满足使用多种类型USB接口设备的需求。生产线上主机板设备中所包含USB设备控制芯片的种类有很多,测量USB设备控制芯片的速度是一个比较重要的操作,但是由于USB设备控制芯片生产厂商众多,产品质量参差不齐,且产品规格变化较大,导致精确测量USB设备控制芯片的速率较为困难。
一般而言,现有测量方法是依据芯片的型号以及测量的反馈进行手动调整。但此方法存在以下缺点1、目前生产线上所使用的测量方法比较繁琐,需要依据各厂商提供的芯片数据设计出一测量范围,而各厂商大多采用不同的芯片,而且同一厂商也可能依据产品的特定选用不同的芯片。这样,在设置测量范围时,则需要大量反复测量才能达到预期的效果,且当芯片发生改变以后就需要重新测试。因此,操作程序繁琐且需要较多的人力和工作时间;2、测试数据传输时间不确定。现有测量方法多由程序从用户模式(Usermode)向操作系统发送命令,然后交由操作系统来控制整个USB数据传输过程。整个传输过程全部被操作系统封装起来,因此对应用程序而言,传输过程相当于一黑盒子,只能知道其始末时间,而对其中具体的时间消耗就无法确定了。由于传输过程对操作系统产生了依赖性,因此会出现同一芯片也会因为测量的操作系统不同,导致出现不同的传输速率;3、测试数据传输量不确定。USB设备在进行数据传输时,将需求提交给操作系统,由操作系统决定采用何种传输协议。但由于一台计算机上可以配置的USB设备众多,而且各设备采用的传输协议又各不相同,因此实际传输的数据量就大不相同。这样,同时从应用程序传输相同量的数据到USB设备也会产生不同的速率,造成速率测量的不稳定。而且在测量时,除了被待测USB设备传输的数据包以外,还存在系统所传输的占一定容量大小其它数据包,因此会对被测试的传输数据造成一定的干扰,进而影响USB设备传输速率的精确测量。

发明内容
本发明的主要目的在于提供一种USB设备的数据传输速率测量系统及其方法,可以排除操作系统对USB数据传输的束缚,实现自动、精确地测量USB数据传输速率,并避免人工操作带来的繁琐和失误,以解决现有技术存在的缺点或不足。
为了实现上述目的,本发明所揭露的USB设备的数据传输速率测量系统包含有一搜索模块,一过滤模块以及一测试模块。于此,搜索模块自动搜索USB设备信息列表,以选择一待测USB设备;过滤模块位于系统核心模式(Kernelmode),用以直接接收并拦截用户模式(User mode)的应用程序所发出的数据包,进而判断是否存在待测USB设备的测试激活信息;测试模块则用以从应用程序所发出的数据包中挑选出待测USB设备的测试数据,并确定测试数据的容量与测试数据在用户模式(User mode)与系统核心模式(Kernel mode)的通信时间,进而计算待测USB设备的数据传输速率。其中过滤模块为USB过滤驱动程序。
本发明以USB过滤驱动程序为核心,用户模式(User mode)的应用程序可直接发送各种指令给USB过滤驱动程序,以激活或中止对USB数据传输速率的测试,且实现了USB数据交换的核心化。由于USB过滤驱动程序与操作系统属于同一系统核心模式(Kernel mode),其地位相同,因此可去除操作系统对USB数据传输速率测试的影响,增加了测试的可控性及准确性。此外,采用USB过滤驱动程序作为测试核心,可排除连接至USB串行总线(bus)的其它USB设备的数据传输对测试的干扰,进而准确地区分测试设备,得到确切的数据流量。
依据本发明的USB设备的数据传输速率测量系统,其中测试激活信息包含在一USB请求区块(URB)包中。通过截获URB获取应用程序发向USB设备的数据,进而可避免由于USB设备众多而导致USB数据传输协议的繁杂,统一了USB设备的数据传输速率的测试方法,简化了其操作的复杂程度。
依据本发明的USB设备的数据传输速率测量系统,还更包含有一缓冲区调整模块,可在进行USB设备测试时,依据USB总线的当前数据流量前提动模式调整用户模式(User mode)的数据缓冲区的大小。因此,不仅节省了依据不同USB芯片调整缓冲区大小的步骤,还从根本上解决了数据缓冲区溢出对整个系统带来的危险。此外,由于数据缓冲区是依据USB总线(bus)的当前数据流量提前进行动模式调整的,从而保证USB数据传输的流畅和清晰,并且不耗费其它系统资源。
此外,依据本发明的USB设备的数据传输速率测量系统,还包含一约定模块,其由USB设备信息列表约定USB设备与过滤模块,进而可直接访问依据约定所建立的数据传输通路。
本发明还揭露了一种USB设备的数据传输速率测量方法,包含有以下步骤自动搜索USB设备信息列表,以选择一待测USB设备;于系统核心模式(Kernel mode)直接接收并拦截用户模式(User mode)的应用程序所发出的数据包,以判断是否存在待测USB设备的一测试激活信息;当存在测试激活信息时,驱动系统核心模式(Kernel mode)的USB设备测试程序,由待测USB设备的测试数据及其测试时间,计算待测USB设备的数据传输速率;以及返回待测USB设备的数据传输速率结果至应用程序。
依据本发明的USB设备的数据传输速率测量方法,还包含有依据返回到USB总线(bus)的当前数据流量提前动模式调整数据缓冲区大小的步骤。
本发明排除了操作系统的影响,抽象了USB数据传输协议,避免由于USB设备传输协议的不同而导致的实际传输数据量的不同,统一了USB设备数据传输速率的测试流程,不仅降低了测试的难度,还可以大量节省数据在系统核心模式(Kernel mode)和用户模式(User mode)交换的时间,进而精确控制USB数据传输的过程。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。


图1为Linux操作系统的结构示意图;图2为本发明USB设备的数据传输速率测量方法的方法部分步骤流程图;图3为本发明USB设备的数据传输速率测量方法的方法部分步骤流程图。其中,

10 用户模式12 应用程序14 用户模式驱动16 程序接口18 数据缓冲区20 系统核心模式22 输出驱动支持程序24 操作系统核心26 硬件抽象层28 待测USB设备30 USB设备的数据传输速率测量系统32 过滤模块34 搜索模块36 测试模块38 约定模块40 缓冲区调整模块步骤101自动搜索USB设备的数据列表,选择一待测USB设备
步骤102于系统核心模式直接接收并拦截用户模式的应用程序所发出的数据包步骤103检查数据包的IOCTL代码及URB步骤104判断数据包中是否存在待测USB发送的URB包?步骤105对URB包进行解析,确定其中是否包含约定的测试程序信息步骤106驱动系统核心模式的USB设备测试程序,以执行待测USB设备的数据传输速率测量步骤107从USB设备测试程序所发出数据包中挑选用以待测USB设备的测试数据步骤108确定测试数据的容量大小步骤109记录测试数据的测试时间步骤110由测试数据的容量及测试时间计算待测USB设备的数据传输速率步骤111依据返回到USB总线(bus)的当前数据流量提前动模式调整数据缓冲区的大小具体实施方式
有关本发明的特征与作用,配合附图及最佳实施例详细说明如下。
图1为Linux操作系统的结构示意图,从图1可知,Linux操作系统包含有用户模式10和系统核心模式20两个层面,本发明所揭露的USB设备的数据传输速率测量系统30则位于此Linux操作系统的系统核心模式20中。如图所示,用户模式10中包含应用程序12,用户模式驱动14以及程序接口16,此外还有用以储存系统核心模式20与用户模式10之间进行数据交换的数据缓冲区18。系统核心模式20包含输出驱动支持程序22,操作系统核心24以及硬件抽象层26。用户模式10的进程有其独有的地址空间,这些进程在最低的权限级别下运行,它们不允许执行CPU的特权指令,对系统所属的数据、地址空间以及硬件等的访问也是被严格限制的。但是,需要指出的是,本发明并不局限于这种操作系统,其它具有上述用户模式10及系统核心模式20的核心操作系统(例如Windows NT等)均属于本发明所限定的范围内。
通常,事件对象运行在系统核心模式20中,应用程序12向操作系统核心24发送各种请求指令,以允许操作系统核心24执行各种应用操作。系统核心模式20下线程利用等待函数来等待所需要的事件、信号,这个等待过程由操作系统核心24来完成,而线程处于睡眠状模式,当接收到信号后,操作系统核心24恢复线程的运行。因此,相应在进行USB数据传输速率测试时,是由操作系统核心24控制整个USB数据传输过程。整个传输过程全部被操作系统核心24封装起来,对于应用程序12而言,相当于一个黑盒子,其只能知道传输过程的始末时间,其中也包含操作系统核心24的等待时间,因此无法得到数据传输的确切时间,进而造成传输速率的不确定性。
据此,本发明提供了一种USB设备的数据传输速率测量系统30,其包含有过滤模块32、约定模块38、测试模块36以及缓冲区调制模块40。其中过滤模块32位于系统核心模式20中,以直接接收并拦截用户模式10的应用程序12所发出的指令,进而判断是否存在USB设备的测试激活信息。过滤模块32拦截对具体设备、类设备、总线的请求,做相应的处理,以改变设备的行为或添加新的功能。但过滤模块32只处理那些它所关心的I/O请求,对于其它的请求可以交给其的驱动程序来处理,这样可以非常灵活改变设备的行为,这里过滤模块32为USB过滤驱动程序。通过USB过滤驱动程序,应用程序12可直接发送各种指令给USB过滤驱动程序,以激活或中止对USB数据传输速率的测试,且实现了USB数据交换的核心化。由于USB过滤驱动程序与操作系统核心24属于同一核心模式,其地位相同,因此可去除操作系统核心24对USB数据传输速率测试的影响,增加了测试的可控性及准确性。此外,采用USB过滤驱动程序作为测试核心,可排除连接至USB串行总线(bus)的其它USB设备的数据传输对测试的干扰,进而准确地区分测试设备,得到确切的数据流量。
应用程序12依照用户的命令发送对USB的操作指令,而且发送的指令为其相应驱动程序封装好的数据包。由于USB设备驱动程序从不直接与USB设备硬件通信,它是由创建URB(USB请求区块),并提交URB至总线(bus)驱动程序上,进而完成对硬件的操作。因此,本发明把USB数据传输抽象为对URB的操作,进而从根本上解决了由于USB设备种类众多而导致的USB数据传输协议的繁杂,而从复杂且众多的USB传输协议转化到对单一而简单的URB包的跟踪和研究上来,因此统一了USB设备的数据传输速率的测试方法。通过解析方法。通过解析USB数据包的信息,以准确区分具体的待测USB设备,这样就可以排除其它设备的干扰,得到确切的数据流量。
此外,约定模块38、测试模块36以及缓冲区调制模块40为过滤模块32调用的三个子模块。
约定模块38用以由USB设备信息列表约定待测USB设备28与USB过滤驱动程序,以建立一USB数据传输通道。所有USB设备是通过设备信息列表来管理的,首先通过自动查找USB设备数据列表得到设备对应的键值,进而唯一确定需要选取的USB设备,然后约定模块38通过读取数据库的方式来约定USB过滤驱动程序和待测USB设备28。
过滤模块32,例如USB过滤驱动程序在拦截到判断应用程序12发出的数据包后,检查数据包的输入/输出控制(IOCTL)代码及URB,如果确定数据包中有需要拦截的URB包,即需要对USB进行操作时,过滤模块32依照约定模块38的约定条件,判断是否存在需要测试的USB设备。如果URB包中包含有约定的测试激活信息时,按照规定的流程激活系统核心模式20中的测试模块36。
测试模块36在收到测试激活指令后,驱动系统核心模式(Kernel mode)的USB设备测试程序,依照搜索模块34选择的待测USB设备28,挑选用以待测USB设备28测试的测试数据,并确定测试数据的容量大小及测试数据时间,进而由测试数据的容量和测试时间计算出待测USB设备28的数据传输速率。测试结束后,测试模块36通过USB过滤驱动程序将测试结果送至缓冲区调制模块40中。缓冲区调制模块40则依据测试结果的大小调制用户模式10中的数据缓冲区18的大小设定。
缓冲区调整模块40在进行USB设备测试时,依据返回到USB总线(bus)的当前数据流量提前动模式调整用户模式10中的数据缓冲区18的大小。在进行测试时,需要在系统核心模式20与用户10之间进行数据交换,从系统核心模式20得到的数据首先需要存放在用户模式10指定的缓冲区18中,以等待处理,因此就涉及到缓冲区溢出的问题。因此,由USB过滤驱动程序返回到当前USB总线(bus)的数据流量,以及经验公式估算近期USB总线(bus)可能达到的流量,进而提前分级动模式调整数据缓冲区18的大小,以满足USB数据传输所需的数据缓冲区。由于USB数据传输很快,在USB2.0便达到了480Mbps,因此在调整数据缓冲区18的大小时,不仅需要考虑当前所需的区域大小,也需要对未来一段时间进行估测。因此估测流量时,需要添加一个等级来满足对未来的估测。依据本发明的缓冲区调整模块40,不仅省略了依据不同USB芯片调整缓冲区大小的步骤,而且从根本上解决了数据缓冲区溢出对整个系统带来危险的问题。缓冲区调整模块40可依据严格的理论推导出参数范围,此外需要调节的参数量很少,进而简化了参数的调整难度。
如果过滤模块32中接收的USB操作是不需要测试的,则不作处理,直接发送操作命令至硬件抽象层26。从图中可以看出,硬件抽象层26将待测USB设备28与过滤模块32联系起来,硬件抽象层26具有与硬件具有密切相关性,与操作系统无关性。硬件抽象层26完全把系统软件和硬件部分隔离开来,这样就使得系统的USB设备驱动程序与USB设备无关,从而大大提高了系统的便携性。
下面请参考图2与图3,其描述了本发明的USB设备的数据传输速率测量方法的流程步骤。图2为本发明一种USB设备的数据传输速率测量方法的部分步骤流程图。如图所示,依据本发明的USB设备的数据传输速率测量方法,首先自动搜索USB设备的数据列表,选择需要测试的USB设备(步骤101)。系统核心模式(Kernel mode)直接接收并拦截用户模式(User mode)的应用程序所发出的数据包,以判断是否存在USB设备的操作信息(步骤102),然后对数据包的输入/输出控制(IOCTL)代码及USB请求区块(URB)进行检查(步骤103),判断数据包中是否包含待测USB发出的URB包(步骤104),如果在数据包中的(IOCTL)代码内容中发现存在有(IOCTL_INTERNAL_USB_UBMIT_URB),则其为待测USB发送的URB包。
然后,进一步解析URB包,确定其中是否包含约定的激活测试程序信息(步骤105),如果URB包中不存在事先约定的信息,则结束;否则表示上层程序发出测试信息,则之后激活系统核心模式(Kernel mode)的USB设备测试程序,以执行USB数据传输速率测量(步骤106)。图中以符号A表示本发明的USB设备的数据传输速率测量方法的后续步骤。
参考图3,此图为本发明的USB设备的数据传输速率测量方法中的部分步骤流程图。图中符号A表示本发明的USB设备的数据传输速率测量方法的前述步骤。如图所示,执行测量操作时,从USB设备测试程序发出的数据包中挑选出用以待测USB设备的测试数据(步骤107),并确定测试数据的容量大小(步骤108),接着记录测试数据的测试时间(步骤109),并由所得到的测试数据的容量及测试时间计算待测USB设备的数据传输速率(步骤110)。在得到待测USB设备的测试结果后,依据返回到USB总线(bus)的当前数据流量提前动模式调整用户模式(User mode)的数据缓冲区大小的步骤(步骤111),以解决数据缓冲区溢出对整个系统带来危险的问题。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种USB设备的数据传输速率测量方法,其特征在于,包括有下列步骤自动搜索一USB设备信息列表,以选择一待测USB设备;于一系统核心模式直接接收并拦截一用户模式的应用程序所发出的数据包,以判断是否存在所述待测USB设备的一测试激活信息;当所述数据包中存在所述测试激活信息时,驱动所述系统核心模式的一USB设备测试程序,由所述待测USB设备的测试数据及其测试时间,计算所述待测USB设备的数据传输速率;以及返回所述待测USB设备的数据传输速率结果至所述应用程序。
2.根据权利要求1所述的USB设备的数据传输速率测量方法,其特征在于,所述测试激活信息包含在一USB请求区块包中。
3.根据权利要求1所述的USB设备的数据传输速率测量方法,其特征在于,在进行所述待测USB设备测试时,还包括依据返回到一USB总线的一当前数据流量提前动模式调整一数据缓冲区大小的步骤。
4.一种USB设备的数据传输速率测量系统,其特征在于,所述系统包括有一搜索模块,用以自动搜索一USB设备信息列表,以选择一待测USB设备;一过滤模块,位于一系统核心模式中,用以直接接收并拦截一用户模式的应用程序所发出的数据包,以判断是否存在所述待测USB设备的一测试激活信息;以及一测试模块,用以由所述待测USB设备的测试数据及其测试时间,计算所述待测USB设备的数据传输速率。
5.根据权利要求4所述的USB设备的数据传输速率测量系统,其特征在于,所述系统还包括一约定模块,由所述待测USB设备信息列表约定所述待测USB设备与所述过滤模块,以建立一数据传输信道。
6.根据权利要求4所述的USB设备的数据传输速率测量系统,其中所述测试激活信息包含在一USB请求区块包中。
7.根据权利要求4所述的USB设备的数据传输速率测量系统,其特征在于,还包括一缓冲区调整模块,用以在进行所述待测USB设备测试时,依据返回到一USB总线的一当前数据流量提前动模式调整一数据缓冲区的大小。
8.根据权利要求4所述的USB设备的数据传输速率测量系统,其特征在于,所述过滤模块为一USB过滤驱动程序。
全文摘要
一种USB设备的数据传输速率测量系统及其方法,首先自动搜索USB设备信息列表,以选择一待测USB设备,然后通过在系统核心模式直接接收并拦截用户模式的应用程序所发出的数据包,以判断是否存在待测USB设备的测试激活信息,当存在测试激活信息时,驱动系统核心模式的USB设备测试程序,由待测USB设备的测试数据及其测试时间计算其数据传输速率。本发明可以排除操作系统对USB数据传输的束缚,节省传输数据在系统核心模式和用户模式的不必要的交换时间,统一了数据传输速率测试的方法,实现自动、精确地测量USB数据传输速率。
文档编号G06F11/26GK1987806SQ20051013205
公开日2007年6月27日 申请日期2005年12月21日 优先权日2005年12月21日
发明者王志, 陈玄同, 刘文涵 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1