一种控制usb设备的方法及装置的制作方法

文档序号:6381994阅读:169来源:国知局

专利名称::一种控制usb设备的方法及装置的制作方法
技术领域
:本发明涉及控制领域,尤其涉及一种控制USB设备的方法及装置。
背景技术
:在日常生活和工作中,USB(UniversalSerialBus,通用串行总线架构)设备是指通过USB接口与其他设备相连接的设备,其以其方便以及多功能的特性,被广泛应用于各个领域。例如,在物联网应用领域中,应用到大量带有USB接口的无线传感器设备,常用的zigbee,RFID,以及摄像头等设备均为常用的带有USB接口的设备。上述USB设备的应用场景有变电所、化学工厂、政府或企业中无人区执行监控等任务。参阅图1所示为现有技术中,USB设备的应用场景示意图。其中,zigbee,RFID,以及摄像头等设备均为通过USB接口与家庭智能网关进行连接,统称为USB设备。在LTE系统中,由于测试设备连接多个终端并通过USB接口为被测设备供电,当被测终端需要长时间运行测试程序,且LTE系统较大的带宽使上下行速度较大,容易导致与USB接口连接的被测终端坏死。参阅图2所示,现有技术中测试设备运行流程为步骤200:初始化测试设备。步骤210:运行测试脚本I。测试脚本I对应被测终端1,运行测试脚本I即对被测终端I进行测试。步骤220:判断被测终端I是否正常,若不正常,则执行步骤230;否则,执行步骤240。步骤230:测试程序发生异常,结束测试。步骤240:运行测试脚本2。测试脚本2对应被测终端2,运行测试脚本2即对被测终端2进行测试。步骤250:判断被测终端2是否正常,若不正常,则执行步骤260;否则,执行步骤270。步骤260:测试程序发生异常,结束测试。步骤270:运行测试脚本η。测试脚本η对应被测终端η,运行测试脚本η即对被测终端η进行测试。由此可见,在USB运行过程中,当USB设备出现异常发生坏死时,将导致测试程序无法继续运行,大大降低了测试系统的效率。为了使测试系统能够正常工作,需要对USB设备执行断电重启操作。现有技术中,对于USB设备的重启方法为,采用人工插拔USB设备的方法,强制其重启。当USB设备所处位置为高危环境时,或者有多个所处位置距离较远的USB设备同时发生坏死时,采用人工插拔实现USB设备的重启大大降低了可操作性和工作效率
发明内容本发明实施例提供一种控制USB设备的方法及装置,用以解决现有技术中当出现意外情况需要重启某个或多个USB设备时,需要重新插拔发生异常的USB设备,导致操作性差的问题。本发明实施例提供的具体技术方案如下一种控制USB设备的方法,包括在Linux系统初始化阶段,获取USB设备的设备描述符;在系统启动后,根据要打开或关闭的USB设备的设备描述符查找对应的USB设备;获取所述查找到的USB设备的底层驱动程序;采用所述底层驱动程序,指示打开或关闭所述查找到的USB设备。一种控制USB设备的装置,包括第一获取单元,用于在Linux系统初始化阶段,获取USB设备的设备描述符;查找单元,用于在系统启动后,根据要打开或关闭的USB设备的设备描述符查找对应的USB设备;第二获取单元,用于获取所述查找到的USB设备的底层驱动程序;指示单元,用于采用所述底层驱动程序,指示打开或关闭所述查找到的USB设备。本发明实施例中,在Linux系统中,获取区分不同USB设备的设备描述符,根据上述USB设备的设备描述符,以及预设的系统调用函数,获取USB设备的底层驱动程序,根据该USB设备的底层驱动程序,即可指示该USB设备打开或者关闭。采用本发明技术方案,在Linux系统中输入一段程序指令,即可指示USB设备执行打开或关闭操作,实现过程方便快捷,可操作性强,有效提高了应用USB设备的系统的工作效率。图1为现有技术中测试系统中应用USB设备的示意图;图2为本发明实施例中控制USB设备的装置结构图;图3为本发明实施例中控制USB设备的详细流程图;图4为现有技术中Linux系统启动流程图;图5为本发明实施例中硬件结构图;图6为本发明实施例中USB设备内部控制结构示意图;图7为本发明实施例中在Linux系统中控制USB设备详细流程图。具体实施例方式为了解决现有技术中存在的USB测试设备中连接多个USB设备,当出现意外情况需要重启某个或多个USB设备时需要重新插拔发生异常的USB设备,导致操作性差的问题。本发明实施例中,在Linux系统中,获取区分不同USB设备的设备描述符,根据上述USB设备的设备描述符,以及预设的系统调用函数,获取USB设备的底层驱动程序,根据该USB设备的底层驱动程序,即可指示该USB设备打开或者关闭。采用本发明技术方案,在Linux系统中输入一段程序指令,即可指示USB设备执行打开或关闭操作,实现过程方便快捷,可操作性强,有效提高了应用USB设备的系统的工作效率。下面结合附图对本发明优选的实施方式进行详细说明。参阅图3所示,本发明实施例中,控制USB设备的装置包括第一获取单元30,查找单元31,第二获取单元32和指示单元33,其中,第一获取单元30,用于在Linux系统初始化阶段,获取USB设备的设备描述符;查找单元31,用于在系统启动后,根据要打开或关闭的USB设备的设备描述符查找对应的USB设备;第二获取单元32,用于获取上述查找到的USB设备的底层驱动程序;指示单元33,用于采用所述底层驱动程序,指示打开或关闭查找到的USB设备。基于上述技术方案,参阅图4所示,本发明实施例中,USB设备可以为不能再插接其他USB设备的设备,如普通摄像头;也可以为还可以插接其他USB设备的设备,如hub。本发明实施例中,以hub设备为例进行说明,则控制USB设备的详细流程如下步骤400:在Linux系统初始化阶段,获取USB设备的设备描述符。具体为在Linux系统初始化阶段,Linux系统程序经过引导后,启动init程序来初始化相关设备。上述初始化的相关设备包括USB_hub,USB-host,Root-hub,hub等。在初始化hub的过程中,可以根据USB设备的接口个数或者设备标识(PID),设备版本号(VID)等与其他USB设备进行区分。本发明实施例中,可以将上述USB设备的接口个数,PID,VID均作为USB设备的设备描述符,其中,PID和VID可以标识唯一的USB设备,因此仅使用PID或者VID即可实现区分不同的USB设备。步骤410:在系统启动后,根据打开或关闭的USB设备的设备描述符查找对应的USB设备。本发明实施例中,由于USB设备的设备描述符可以区分不同的USB设备,因此,当Linux系统启动后,即可根据需要控制的USB设备的USB设备描述符,查找对应的USB设备。例如,当USB设备a发生异常时,则根据设备a的USB设备描述符获取设备a。步骤420:获取上述查找到的USB设备的底层驱动程序。在Linux系统中,应用程序无法直接访问底层驱动程序。因此,本发明实施例中,在Linux系统中,编译相应的系统调用函数,获取USB设备的底层驱动程序。本发明实施例中,预设系统调用函数即为对Linux系统程序进行修改,对Linux系统程序进行重新编译,通过重新移至的Linux系统程序来访问USB设备底层驱动程序。参阅图5所示,编译系统调用函数的具体过程为步骤al:定义USB设备初始化函数。在Linux系统中,文件driver/usb/core/hub.c包含的函数用于实现与hub相关的操作。此外,系统调用逻辑函数实现系统调用函数功能的过程也在上述文件中实现。添加USB设备的初始化函数即为在driver/usb/core/hub.c文件中添加USB设备的参数定义等。例如,USB设备初始化函数格式为voidUSB_P0WERRESET(intport)其中,port表示接口号。步骤a2:定义函数调用声明函数。在Linux系统中,函数在调用之前,必须先进行声明。文件include/linux/syscall.h用于保存系统调用声明函数。在文件include/linux/syscall.h中添加该系统调用的声明格式为asmlinkagesys_my_syscall(intport)步骤a3:定义系统调用函数编号。在Linux系统中,文件arch/x86/include/asm/unistd_32_h用于存储系统调用函数的编号。在arch/x86/include/asm/unistd_32_h中定义该系统调用函数标号的格式如#define_NR_my_syscalI337其中,337为系统调用函数编号,表示上述系统调用函数为文件arch/x86/include/asm/unistd_32_h中第337个系统调用函数。在Linux系统中,当系统调用函数增加一个,则上述编号增加一个。又如系统调用函数增加一个,即将NR_syscalls的调用号加I,格式为#defineNR_syscalls338步骤a4:定义上述系统调用函数名称。在Linux系统中,文件arch/x86/kernel/syscall_table_32.s用于定义系统调用函数名称。定义系统调用函数名称的方法为,在arch/x86/kernel/syscall_table_32.s文件尾添加以下程序.longsys_my_syscall步骤a5:定义系统调用函数的获取函数。在Linux系统中,文件kernel/sys.c用于调用系统调用函数。定义系统调用函数的获取函数的方法为,在kernel/sys.c文件尾定义系统定义如下程序权利要求1.一种控制通用串行总线架构USB设备的方法,其特征在于,包括在Linux系统初始化阶段,获取USB设备的设备描述符;在系统启动后,根据要打开或关闭的USB设备的设备描述符查找对应的USB设备;获取所述查找到的USB设备的底层驱动程序;采用所述底层驱动程序,指示打开或关闭所述查找到的USB设备。2.如权利要求1所述的方法,其特征在于,获取USB设备的设备描述符,包括获取USB设备的设备身份识别符;或/和,获取USB设备的设备版本号。3.如权利要求1所述的方法,其特征在于,获取所述查找到的USB设备的底层驱动程序,具体包括在Linux系统中,输入系统调用函数名称,以及需要打开或者关闭的USB设备对应的接□号;根据所述系统调用函数名称调用预设的系统调用函数,以及根据调用的系统调用函数和输入的接口号,获取查找到的所述USB设备的底层驱动程序。4.如权利要求3所述的方法,其特征在于,所述系统调用函数包括USB设备初始化参数,函数调用声明函数,系统调用函数编号,系统调用函数名称,系统调用函数的获取函数。5.如权利要求1所述的方法,其特征在于,指示打开或关闭所述查找到的USB设备,具体包括判断所述查找到的USB设备对应的外接接口数目;当所述接口数目为一个时,则指示打开或关闭所述接口;当所述接口数目为多个时,则指示打开或关闭一个或多个接口。6.一种控制通用串行总线架构USB设备的装置,其特征在于,包括第一获取单元,用于在Linux系统初始化阶段,获取USB设备的设备描述符;查找单元,用于在系统启动后,根据要打开或关闭的USB设备的设备描述符查找对应的USB设备;第二获取单元,用于获取所述查找到的USB设备的底层驱动程序;指示单元,用于采用所述底层驱动程序,指示打开或关闭所述查找到的USB设备。7.如权利要求6所述的装置,其特征在于,所述第一获取单元,具体用于获取USB设备的设备身份识别符;或/和,获取USB设备的设备版本号。8.如权利要求6所述的装置,其特征在于,所述第二获取单元,具体用于在Linux系统中,输入系统调用函数名称,以及需要打开或者关闭的USB设备对应的接□号;根据所述系统调用函数名称调用预设的系统调用函数,以及根据调用的系统调用函数和输入的接口号,获取查找到的所述USB设备的底层驱动程序。9.如权利要求8所述的装置,所述第二获取单元,还用于预设系统调用函数,所述系统调用函数包括USB设备初始化参数,函数调用声明函数,系统调用函数编号,系统调用函数名称,系统调用函数的获取函数。10.如权利要求6所述的装置,其特征在于,指示单元,具体用于判断所述查找到的USB设备对应的外接接口数目;当所述接口数目为一个时,则指示打开或关闭所述接口;当所述接口数目为多个时,则指示打开或关闭一个或多个接口。全文摘要本发明公开了一种控制USB设备的方法及装置,用以解决现有技术中存在的USB测试设备中连接多个USB设备,当出现意外情况需要重启某个或多个USB设备时需要重新插拔发生异常的USB设备,导致操作性差的问题。方法为在Linux系统中,获取区分不同USB设备的设备描述符,根据上述USB设备的设备描述符,以及预设的系统调用函数,获取USB设备的底层驱动程序,根据该USB设备的底层驱动程序,即可指示该USB设备打开或者关闭。采用本发明技术方案,在Linux系统中输入一段程序指令,即可指示USB设备执行打开或关闭操作,实现过程方便快捷,可操作性强,有效提高了应用USB设备的系统的工作效率。文档编号G06F13/10GK103049402SQ201210477630公开日2013年4月17日申请日期2012年11月21日优先权日2012年11月21日发明者黄志欢,邓召基,侯磊,刘须华申请人:大唐移动通信设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1