一种usb设备生产装置的工作方法

文档序号:6545558阅读:141来源:国知局
一种usb设备生产装置的工作方法
【专利摘要】本发明公开了一种USB设备生产装置的工作方法,涉及计算机领域。本发明根据存储功能类型USB设备和非存储功能类型USB设备的结构特点,开发了一套生产流程,可以实现通过维护一套生产工具,批量化生产存储功能类型和非存储功能类型的USB设备,不仅提高了生产工具的兼容性,还方便了开发及后期生产维护管理。
【专利说明】—种USB设备生产装置的工作方法
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种USB设备生产装置的工作方法。
【背景技术】
[0002] 申请人:作为一家USB设备生产厂商,发现行业内用于批量生产USB设备的生产工具有以下局限性:一套生产工具只能用于生产不带存储功能的USB设备或带存储功能的USB设备,即生产工具的兼容性差。因为在批量生产时,应用场景是多个或多级HUB与生产工具直接连接扩展出多个USB端口,待生产设备连接在HUB的USB端口上,在进行生产时生产工具首先需要定位并识别出待生产设备,带存储功能的USB设备的内部结构与不带存储功能的USB设备的差别在于带存储功能的USB设备本身存在一级内置的HUB,因此两种类型的待生产设备被生产工具定位并识别的流程是不同的,所以对于生产厂商而言,需要维护两套生产工具来生产这两种类型的USB设备。
[0003]因此,发明一种兼容性好且生产效率高的USB设备的生产工具成为目前急需解决的问题。

【发明内容】

[0004]为解决现有技术中存在的技术问题,本发明提出了一种USB设备生产装置的工作方法。
[0005]本发明采用的技术方案包括:一种USB设备生产装置的工作方法,包括,
[0006]步骤1:装置枚举与其连接的HUB设备,判断是否枚举到,是则执行步骤2,否则继续执行步骤I ;
[0007]步骤2:装置根据枚举到的HUB设备创建进程,在创建的进程中执行步骤3至步骤9 ;
[0008]步骤3:装置打开与进程对应的一个HUB设备,根据预设数组给当前打开的HUB设备的各个端口设置HUB端口号,并选取该HUB设备的一个端口作为当前端口;
[0009]步骤4:装置给当前端口上电;
[0010]步骤5:装置枚举与其连接的待生产设备,判断是否枚举到,是则遍历枚举到的待生产设备,执行步骤6,否则继续执行步骤5 ;
[0011]步骤6:装置根据枚举到的待生产设备的总线编号和设备编号,在系统文件中获取所述待生产设备的父设备编号,判断所述待生产设备的总线编号和父设备编号与当前打开的HUB设备的总线编号和设备编号是否对应一致,是则将枚举到的所述待生产设备的设备类型标识为非存储功能类型,然后执行步骤8,否则执行7 ;
[0012]步骤7:装置根据枚举到的待生产设备的总线编号和获取的所述父设备编号,在系统文件中获取所述父设备编号的上一级设备编号,判断所述待生产设备的总线编号和获取的所述上一级设备编号与当前打开的HUB设备的总线编号和设备编号是否对应一致,是则将枚举到的所述待生产设备的设备类型标识为存储功能类型,然后执行步骤8,否则返回执行步骤5 ;
[0013]步骤8:装置判断枚举到的所述待生产设备的设备类型是否与预设待生产设备类型一致,是则执行步骤9,否则返回执行步骤5 ;
[0014]步骤9:装置对所述待生产设备执行预设生产操作,并判断操作是否成功完成,是则装置给当前端口下电,并根据当前端口对应的HUB端口号重新选定所述HUB设备的一个端口作为当前端口,然后返回执行步骤4,否则返回执行步骤5。
[0015]上述步骤5、步骤7和步骤8的判断为否时返回执行步骤5还可以替换为:判断为否时装置给当前端口下电,并根据当前端口对应的HUB端口号重新选定所述HUB设备的一个端口作为当前端口,然后返回执行步骤4。
[0016]或者是,所述方法包括,
[0017]步骤1:装置监测是否有USB设备连接到装置,是则对监测到的USB设备执行步骤2,否则继续执行步骤I ;
[0018]步骤2:装置根据预设待生产设备标识信息判断监测到的USB设备是否为待生产设备,是则执行步骤3,否则返回步骤I ;
[0019]步骤3:装置根据监测到的待生产设备的总线编号和设备编号,在系统文件中获取其父设备编号,然后在系统文件中查找是否有且只有一个与所述总线编号和父设备编号相同且产品类型属性为预设属性值的USB设备,是则执行步骤4,否则执行步骤5 ;
[0020]步骤4:装置标识监测到的待生产设备的设备类型为存储功能类型,然后执行步骤6;
[0021]步骤5:装置标识监测到的待生产设备的设备类型为非存储功能类型,然后执行步骤6 ;
[0022]步骤6:装置判断当前标识的待生产设备的设备类型是否与预设待生产设备类型一致,是则执行步骤7,否则返回步骤I ;
[0023]步骤7:装置对监测到的所述待生产设备执行预设生产操作,待操作完成后返回步骤I。
[0024]本发明达到的有益效果是,本发明提供的USB设备生产装置的工作方法,可以实现通过维护一套生产工具,实现对存储功能类型和非存储功能类型的USB设备的批量生产,提高了生产工具的兼容性,方便了开发及后期生产维护管理。
【专利附图】

【附图说明】
[0025]图1为本发明实施例1提出的一种USB设备生产装置的工作方法;
[0026]图2为本发明实施例2提出的一种USB设备生产装置的工作方法;
[0027]图3为本发明实施例3提出的一种USB设备生产装置的工作方法;
[0028]图4为本发明实施例4提出的一种USB设备生产装置的工作方法。
【具体实施方式】
[0029]下面结合附图和具体实施例对本发明的技术方案作进一步解释。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。本发明实施例的应用场景是,为了实现批量生产,需要使用一个或多个HUB与本发明的发明物的载体即USB设备生产装置(以下简称装置)物理连接,待生产设备接在上述HUB的USB端口上。
[0030]实施例1
[0031]本实施例提供的一种USB设备生产装置的工作方法中采用的HUB设备为一种可控设备,本身结构内部带有CPU芯片,即该HUB设备连接在装置上,可以接收并处理装置下发的指令,本实施例提供的生产方法中装置给HUB设备的端口上电是通过装置向HUB设备下发上电指令实现的,装置控制HUB的一个端口上电后对该端口上的待生产设备执行完成预设生产操作后再切换下一个端口。
[0032]如图1所示,本实施例提供的一种USB设备生产装置的工作方法,包括:
[0033]步骤S1:装置获取预设待生产设备类型;
[0034]具体的,所述预设待生产设备类型可以是预先在装置中设定好的,也可以是将该信息存储于一张卡片中,在执行步骤Si之前需将该卡片插入到装置上,装置从该卡片中获取预设待生产设备类型。
[0035]步骤S2:装置枚举与其连接的HUB设备,判断是否枚举到,是则执行步骤S3,否则继续执行步骤S2 ;
[0036]具体的,装置枚举与其连接的USB设备并判断枚举到的USB设备的设备标识信息是否与预设的HUB设备标识信息一致,若一致则枚举到的USB设备为HUB设备,否则枚举到的USB设备不是HUB设备。
[0037]进一步的,本步骤还包括装置为枚举到的HUB设备设置编号。例如,枚举到3个HUB设备,则设置这3个HUB设备的编号依次为1、2、3。
[0038]步骤S3:装置根据枚举到的HUB设备创建进程,在创建的进程中执行步骤S4至步骤 S15 ;
[0039]优选的,本实施例采用了多进程的工作方式提高生产效率。例如,枚举到3个HUB设备,则创建3个进程,每个进程对应一个HUB设备,通过执行多进程最大化提高生产效率。
[0040]步骤S4:装置打开与进程对应的一个HUB设备,根据预设数组为当前打开的HUB设备的各个端口设置HUB端口号,并选取该HUB设备的一个端口作为当前端口;
[0041]具体的,所述预设数组包含的数值大于等于HUB设备的端口数,例如,HUB设备的端口数为8,预设数组包含的数值为O至7,本步骤具体为,将当前打开的HUB设备的端口对应的端口号依次设置为O至7,并选取端口号为O对应的端口作为当前端口。本实施例中还可以是选取HUB设备的任意一个端口号对应的端口为当前端口。
[0042]步骤S5:装置给当前端口上电;
[0043]步骤S6:装置枚举与其连接的待生产设备,判断是否枚举到,是则执行步骤S7,否则继续执行步骤S6 ;
[0044]具体的,装置枚举与其连接的USB设备并判断枚举到的USB设备的设备标识信息是否与预设的待生产设备标识信息一致,若一致则枚举到的USB设备为待生产设备,否则枚举到的USB设备不是待生产设备。本步骤判断为否时还可以是:装置给当前端口下电,并根据当前端口对应的HUB端口号重新选定所述HUB设备的一个端口作为当前端口,然后返回执行步骤S5。
[0045]进一步的本步骤所述否则继续执行步骤S6还可以是:装置等待待生产设备的插入,当检测到有待生产设备插入时继续执行步骤S6。具体的,工人在装置上插入待生产设备后,通过按键触发装置继续执行步骤S6的枚举过程。
[0046]步骤S7:装置根据枚举到的待生产设备的总线编号和设备编号,在系统文件中获取该待生产设备的父设备编号;
[0047]步骤S8:装置判断该待生产设备的总线编号和父设备编号与当前打开的HUB设备的总线编号和设备编号是否对应一致,是则执行步骤S12,否则执行步骤S9 ;
[0048]步骤S9:装置根据枚举到的待生产设备的总线编号和获取的所述父设备编号,在系统文件中获取该USB设备的父设备编号的上一级设备编号;
[0049]步骤SlO:装置判断该待生产设备的总线编号和获取的所述上一级设备编号与当前打开的HUB设备的总线编号和设备编号是否对应一致,是则执行步骤S11,否则返回执行步骤S6 ;
[0050]步骤Sll:将枚举到的待生产设备的设备类型标识为存储功能类型,然后执行步骤 S13 ;
[0051]步骤S12:将枚举到的待生产设备的设备类型标识为非存储功能类型,执行步骤S13 ;
[0052]步骤S13:装置判断枚举到的待生产设备的设备类型是否与预设待生产设备类型一致,是则执行步骤S14,否则返回执行步骤S6 ;
[0053]本步骤判断为否时还可以是:装置给当前端口下电,并根据当前端口对应的HUB端口号重新选定所述HUB设备的一个端口作为当前端口,然后返回执行步骤S5。
[0054]步骤S14:装置对枚举到的待生产设备执行预设生产操作,并判断操作是否成功完成,是则执行步骤S15 ;否则返回执行步骤S6 ;
[0055]本实施例中,所述预设生产操作包括写入芯片操作系统、初始化和检测操作。本步骤具体为,装置将预设的芯片操作系统文件写入到待生产设备,并对待生产设备执行初始化操作,然后对待生产设备执行检测操作,若上述三步操作均成功完成,则执行步骤S15,否则返回执行步骤S6。所述预设生产操作还可以包括清除芯片操作系统的操作。本步骤判断为否时还可以是:装置给当前端口下电,并根据当前端口对应的HUB端口号重新选定所述HUB设备的一个端口作为当前端口,然后返回执行步骤S5。
[0056]所述初始化的操作包括向待生产设备写入硬件序列号,具体为,在初始化过程中,装置根据主机编号、HUB ID号、HUB端口号和当前时间,按照预设算法进行计算得到一个计算结果,将该计算结果作为硬件序列号写入待生产设备。所述主机编号是装置中预置的装置的出厂编号,所述当前时间是装置根据内部时钟获得的。
[0057]步骤S15:装置给当前端口下电,并根据当前端口对应的HUB端口号重新选定所述HUB设备的一个端口作为当前端口,然后返回执行步骤S5。
[0058]优选的,上述步骤SI的操作在步骤S13之前执行即可。上述步骤S4还包括装置向打开的HUB设备发送指令获取HUB设备的HUB ID号的步骤,相应的,在上述步骤S13中判断为否时还包括:装置界面提示设备类型错误信息以及当前打开的HUB设备的HUB ID号和当前上电的端口对应的HUB端口号,在上述步骤S14中判断为是时还包括:装置界面提示生产成功信息以及当前打开的HUB设备的HUB ID号和当前上电的端口对应的HUB端口号,在步骤S14中判断为否时还包括:装置界面提示生产失败信息以及当前打开的HUB设备的HUB ID号和当前上电的端口对应的HUB端口号。[0059]实施例2
[0060]本实施例结合实验数据,对实施例1公开的一种USB设备生产装置的工作方法的具体实现方式进行了详细介绍,本实施例采用的HUB设备与实施例1相同,为一种可控设备,如图2所示,本实施例提供的方法包括:
[0061]步骤101:装置监控到卡片插入,通过读卡模块从卡片读取卡片生产信息,根据读取到的卡片生产信息获得预设待生产设备类型;
[0062]具体的,装置根据所述卡片生产信息中包含的设备类型标识获得预设待生产设备类型,例如,当设备类型标识取值为第一预设值时,得到的预设待生产设备类型为存储功能类型,当设备类型标识取值为第二预设值时,得到的预设待生产设备类型为非存储功能类型。
[0063]例如,本步骤中所述卡片生产信息中包含的设备类型标识信息为IsStoreDevice,IsStoreDevice = O或I,优选的第一预设值为1,第二预设值为O。
[0064]步骤102:装置通过调用通用USB驱动接口(Iibusb)枚举USB设备,并获取该接口返回的USB总线链表;
[0065]本步骤具体为,装置调用Iibusb接口的USB_init函数,初始化相关数据;调用Iibusb接口的USB_find_busses函数,寻找系统上的USB总线;调用Iibusb接口的USB_fincLdevices函数,寻找USB总线上的USB设备,根据调用上述各个函数得到的返回值组合得到调用Iibusb接口返回的USB总线链表,并通过总线链表得到USB总线上的设备节点。
[0066]所述总线链表的指针指向的设备节点,用于存储寻找到的USB总线上的USB设备的USB设备信息,所述USB设备信息包括USB设备标识信息,例如,所述USB设备标识信息具体为USB设备的供应商标识(PID)和产品标识(VID)。
[0067]例如,返回的USB总线链表如下:
[0068]structusb_bus{
[0069]structusb_bus氺next, *prev ;
[0070]chardirname[PATH_MAX+1];
[0071]structusb_device氺devices ;
[0072]u_int32_t location ;
[0073]structusb_device*root_dev ;
[0074]};
[0075]USB总线链表上的设备节点bus_>devices定义如下:
[0076]structusb_device {
[0077]structusb—device氺next, *prev ;
[0078]char filename[PATH_MAX+I];
[0079]structusb_bus*bus ;
[0080]structusb_device_descriptor descriptor ;
[0081]structusb_config_descriptor氺config ;
[0082]void*dev ;/*Darwin support*/
[0083]u_int8_tdevnum ;
[0084]unsigned char num_children ;[0085]structusb—device氺氺children ;
[0086]};
[0087]步骤103:装置判断所述总线链表的指针指向的设备节点是否为空,是则执行步骤108,否则执行步骤104 ;
[0088]步骤104:装置将与所述总线链表的指针指向的设备节点对应的USB设备作为当前USB设备;
[0089]具体的,装置从所述总线链表的指针指向的设备节点获取USB设备信息,根据获取的USB设备信息中包含的USB设备标识信息找到与之对应的USB设备,将找到的该USB设备作为当前USB设备。
[0090]步骤105:装置根据预设HUB设备标识信息,判断当前USB设备是否为HUB设备,是则执行步骤106,否则执行步骤107 ;
[0091]具体的,装置将当前USB设备的设备标识信息与预设HUB设备标识信息进行比对,若相同则当前USB设备为HUB设备,否则不是。
[0092]例如,预设HUB设备标识信息为(Oxffff,0x096e),其中的Oxffff为产品标识,0x096e为供应商标识。
[0093]步骤106:装置为当前USB设备设置HUB编号,通过调用Iibusb接口返回的总线链表获取当前USB设备的设备节点、设备编号和总线编号,并保存到与所述HUB编号对应的HUB信息数组中,然后执行步骤107 ;
[0094]具体的,通过调用Iibusb接口返回USB总线链表,得到设备节点、设备编号和总线编号。例如,得到的设备节点为bus-Mevices,设备编号为3,总线编号为04。
[0095]步骤107:装置设置所述总线链表的指针指向下一个设备节点,然后返回步骤103 ;
[0096]步骤108:装置判断是否枚举到HUB设备,是则执行步骤110,否则执行步骤109 ;
[0097]具体的,根据所述总线链表中包含的USB_find_devices函数的返回值判断枚举到的HUB个数是否大于O来判断是否枚举到HUB设备,若大于O则枚举到了 HUB设备,否则没有枚举到HUB设备。
[0098]步骤109:装置界面提示接入HUB设备,然后返回步骤102 ;
[0099]步骤110:装置根据枚举到的HUB设备的HUB编号创建进程,在创建的进程中执行步骤111至步骤132 ;
[0100]步骤111:装置根据HUB编号,获取与之对应的HUB信息数组,根据所述HUB信息数组中的设备节点,打开与之对应的HUB设备,并通过发送指令获取当前打开的HUB设备的HUB ID 号;
[0101]例如,获取的HUB信息数组为:设备节点为bus->devices,设备编号为3,总线编号为04。通过调用usb_open函数打开bus_>devices对应的HUB设备。
[0102]步骤112:装置根据预设数组初始化当前打开的HUB设备的HUB端口号,并选取初始化为预设值的HUB端口号对应的端口为当前端口;
[0103]具体的,以HUB设备端口数为8即8 口 HUB设备为例,优选的预设数组为包含数值O至7的一个数组,本步骤具体为装置将当前打开的HUB设备的8个端口对应的HUB端口号依次初始化为0、1、2、3、4、5、6、7,并选取初始化为O的HUB端口号对应的端口为当前端口。[0104]步骤113:装置给当前端口上电;
[0105]优选的,通过循环执行步骤113至132,装置对该进程中的HUB设备的所有端口依次循环上电。
[0106]步骤114:装置通过调用Iibusb接口枚举USB设备,并获取该接口返回的总线链表;
[0107]步骤115:装置判断所述总线链表的指针指向的设备节点是否为空,是则返回执行步骤114,否则执行步骤116;
[0108]步骤116:装置将与所述总线链表的指针指向的设备节点对应的USB设备作为当前USB设备;
[0109]步骤117:装置根据预设待生产设备标识信息,判断当前USB设备是否为待生产设备,是则执行步骤119,否则执行步骤118 ;
[0110]具体的,装置将当前USB设备的设备标识信息与预设待生产设备标识信息进行比对,若相同则当前USB设备为待生产设备,否则不是。
[0111]例如,预设待生产设备标识信息为(0x2008,0x7639),其中的0x2008为产品标识,0x7639为供应商标识。
[0112]步骤118:装置设置所述总线链表的指针指向下一个设备节点,然后返回执行步骤 115 ;
[0113]步骤119:装置通过调用Iibusb接口获取当前USB设备的总线编号和设备编号,再根据该总线编号和设备编号,在系统文件中获取当前USB设备的父设备编号;
[0114]本实施例中具体的,所述系统文件为devices文件。
[0115]步骤120:装置判断当前USB设备的总线编号和父设备编号是否与当前打开的HUB设备的总线编号和设备编号对应一致,是则执行步骤124,否则执行步骤121 ;
[0116]例如:当前打开的HUB设备的设备编号为3,总线编号为04,当前USB设备的父设备编号为3,总线编号为04,则说明当前USB设备就是直连在当前HUB设备上。
[0117]步骤121:装置根据当前USB设备的总线编号和获取的所述父设备编号,在系统文件中获取当前USB设备的父设备编号的上一级设备编号;
[0118]步骤122:装置判断当前USB设备的总线编号和获取的所述上一级设备编号是否与当前打开的HUB的总线编号和设备编号对应一致,是则执行步骤123,否则返回执行步骤118 ;
[0119]步骤123:装置将当前USB设备的设备类型标识为存储功能类型,然后执行步骤125 ;
[0120]步骤124:装置将当前USB设备的设备类型标识为非存储功能类型,然后执行步骤125 ;
[0121]步骤125:装置判断当前USB设备的设备类型是否与预设待生产设备类型一致,是则执行步骤127,否则执行步骤126 ;
[0122]步骤126:装置界面提示设备类型错误信息以及当前打开的HUB设备的HUBID号和HUB端口号,然后返回步骤114 ;
[0123]步骤127:装置界面提示开始生产以及当前打开的HUB设备的HUB ID号和HUB端
口号;[0124]步骤128:装置给当前USB设备写入芯片操作系统并初始化;
[0125]步骤129:装置判断生产结果是否成功,是则执行步骤131,否则执行步骤130 ;
[0126]步骤130:装置界面提示生产失败信息以及当前打开的HUB设备的HUB ID号和HUB端口号,然后返回步骤114 ;
[0127]例如,界面提示:
[0128]“Hub:1 端口:0 失败”。
[0129]步骤131:装置界面提示生产成功信息以及当前打开的HUB设备的HUB ID号和HUB端口号,并给当前端口下电;
[0130]步骤132:装置用HUB端口数作为模数对当前端口对应的HUB端口号加I的结果做取模运算,并根据该取模运算结果重新确定当前端口,然后返回步骤113。
[0131]实施例3
[0132]本实施例提供的一种USB设备生产装置的工作方法,该方法中采用的HUB设备为一种通用设备,即日常中熟知的集线器,其主要特点是用于扩展出多个USB端口。本实施例提供的HUB设备的USB端口的每一次上电,装置对该USB端口上的待生产设备执行一道生产工序,在生产过程中,需要人工多次插拔HUB设备USB端口上的待生产设备进行上电控制,来完成整个生产工序。
[0133]如图3所示,本实施例提出的一种USB设备生产装置的工作方法,包括:
[0134]步骤S1:装置获取预设待生产设备标识信息和预设待生产设备类型;
[0135]具体的,所述预设待生产设备标识信息和预设待生产设备类型可以是预先在装置中设定好的,也可以是将该信息存储于一张卡片中,在执行步骤Si之前需将该卡片插入到装置上,装置从该卡片中获取。
[0136]步骤s2:装置监测是否有USB设备连接到装置,是则对监测到的USB设备执行步骤s3,否则继续执行步骤s2;
[0137]步骤s3:装置根据预设待生产设备标识信息判断监测到的USB设备是否为待生产设备,是则执行步骤s4,否则返回步骤s2 ;
[0138]具体地,装置可以监听系统内核抛出的内核事件,在监听到系统内核抛出预设的内核事件时,确定有USB设备连接到装置上,然后根据预设待生产设备标识信息,判断监测到的所述USB设备是否为待生产设备。
[0139]步骤s4:装置根据监测到的待生产设备的总线编号和设备编号,在系统文件中获取其父设备编号,然后在系统文件中查找是否有且只有一个与所述总线编号和父设备编号相同且产品类型属性为预设属性值的USB设备,是则执行步骤s5,否则执行步骤s6 ;
[0140]本实施例中具体的,装置通过函数Udev_device_get_property_value (Device, "DEVNUM")获取待生产设备的设备编号,通过函数
[0141]udev_device_get_property_value (Device, 〃BUSNUM〃)获取待生产设备的总线编号,根据获取到的设备编号和总线编号在系统文件即devices文件中获取父设备编号,再根据总线编号和父设备编号在devices文件中查找具有相同总线编号和父设备号的USB设备,即与待生产设备在同一父设备下的同级USB设备,判断查找到的USB设备是否有且只有一个且查找到的USB设备的产品类型属性即Product属性为“USB Flash Disk”,是则待生产设备的设备类型为存储功能类型,否则为非存储功能类型。[0142]步骤S5:装置标识监测到的待生产设备的设备类型为存储功能类型,并获取与其直连的HUB的上一级HUB的设备路径信息,将所述上一级HUB作为当前HUB,然后执行步骤s7 ;
[0143]步骤S6:装置标识监测到的待生产设备的设备类型为非存储功能类型,并获取与其直连的HUB的设备路径信息,将所述直连的HUB作为当前HUB ;
[0144]步骤s7:装置读取所述监测到的待生产设备的设备路径信息的最后一位上的数据,将读取到的数据保存到端口信息中;
[0145]步骤s8:装置判断当前HUB是否为第一级HUB,是则执行步骤sll,否则执行步骤s9 ;
[0146]步骤s9:装置根据当前HUB的设备路径信息获取与其直连的HUB的设备路径信息,将该直连的HUB作为当前HUB ;
[0147]步骤SlO:装置读取当前HUB的设备路径信息中的最后一位上的数据,将读取到的数据添加到端口信息中,然后返回执行步骤s8 ;
[0148]步骤sll:装置读取当前HUB的设备路径信息中的最后一位上的数据,将读取到的数据作为待生产设备对应的HUB ID号,根据保存的端口信息获取待生产设备对应的HUB端□号;
[0149]步骤sl2:装置判断监测到的待生产设备的设备类型是否与预设待生产设备类型一致,是则执行步骤sl3,否则装置界面提示设备类型不正确以及监测到的待生产设备对应的HUB ID号和HUB端口号,然后返回步骤s2 ;
[0150]步骤sl3:装置对监测到的待生产设备执行预设生产操作,并判断操作是否成功完成,是则装置界面提示生产成功信息以及监测到的待生产设备对应的HUB ID号和HUB端口号,然后返回步骤s2,否则装置界面提示生产失败信息以及监测到的待生产设备对应的HUB ID号和HUB端口号,然后返回步骤s2。
[0151]本实施例中,所述预设生产操作包括写入芯片操作系统、清除芯片操作系统、初始化、检测。例如,本步骤具体为,装置将预设的芯片操作系统文件写入到待生产设备,并判断操作是否成功完成,是则界面提示成功后返回步骤s2,否则界面提示失败后返回步骤S2。或者,本步骤具体为,装置对所述待生产设备进行初始化操作,并判断初始化是否成功完成,是则界面提示成功后返回步骤s2,否则界面提示失败后返回步骤s2,所述初始化的操作包括向待生产设备写入硬件序列号,具体为,在初始化过程中,装置根据主机编号、HUBID号、HUB端口号和当前时间,按照预设算法进行计算得到一个计算结果,将该计算结果作为硬件序列号写入待生产设备。所述主机编号是装置中预置的装置的出厂编号,所述当前时间是装置根据内部时钟获得的。
[0152]实施例4
[0153]本实施例结合实验数据,对实施例3公开的一种USB设备生产装置的工作方法的具体实现方式进行了详细介绍,本实施例采用的HUB设备与实施例3相同,为一种通用设备,如图4所示,本实施例提供的方法包括:
[0154]步骤201:装置通过读卡模块从卡片读取卡片生产信息,根据卡片生产信息得到预设待生产设备类型;
[0155]步骤202:装置监测是否有USB设备连接到装置,是则执行步骤203,否则继续执行步骤202 ;
[0156]具体地,装置可以监听系统内核抛出的内核事件,在监听到系统内核抛出预设的内核事件时,确定有USB设备连接到装置上。
[0157]步骤203:装置从监听到的内核事件中获取USB设备的设备路径信息;
[0158]例如,装置调用recvmsg(sockfd, &smsg,0)函数获取内核事件,从该内核事件中获取到的USB设备的设备路径信息为“/devices/pciOOOO:00/0000:00:1d.0/USB2/2-1/2-1.4/2-1.4.2”。
[0159]步骤204:装置根据获取的USB设备的设备路径信息,读取USB设备的属性文件,并从属性文件中获取该USB设备的标识信息;
[0160]其中,USB设备的标识信息包含在USB设备的属性文件中,可以包括产品标识和供应商标识。
[0161]例如,USB设备的设备路径信息为 “/devices/pciOOOO:00/0000:00:1cL 0/USB2/2-1/2-1.4/2-1.4.2” 时,装置通过分别调用 udev_device_get_sysattr_value (Device, 〃idVendor〃)函数和 udev_device_get_sysattr_value (Device, "idProduct")函数,根据上述设备路径信息打开目录名为“2_1.4.2”下的属性文件idVendor和idProduct,从相应的属性文件中获取USB设备的产品标识和供应商标识分别为“0x2008”和“0x7639”,该USB设备的标识信息为(0x2008,0x7639)。
[0162]步骤205:装置根据预设待生产设备标识信息,判断监测到的所述USB设备是否为待生产设备,是则执行步骤206,否则返回执行步骤202 ;
[0163]步骤206:装置根据监测到的待生产设备的总线编号和设备编号,在系统文件中获取其父设备编号,然后在系统文件中查找是否有且只有一个与所述总线编号和父设备编号相同且产品类型属性为预设属性值的USB设备,是则执行步骤207,否则执行步骤208 ;
[0164]步骤207:将监测到的待生产设备的设备类型标识为存储功能类型,并获取与其直连的HUB的上一级HUB的设备路径信息,将所述上一级HUB作为当前HUB,然后执行步骤209 ;
[0165]步骤208:将监测到的待生产设备的设备类型标识为非存储功能类型,并获取与其直连的HUB的设备路径信息,将所述直连的HUB作为当前HUB ;
[0166]步骤209:装置读取待生产设备的设备路径信息的最后一位上的数据,将读取到的数据保存到端口信息中;
[0167]例如:待生产设备的设备路径信息“/devices/pciOOOO:00/0000:00:1d.0/USB2/2-1/2-1.4”,将“4”作为一级端口号添加到端口信息中。
[0168]步骤210:装置判断当前HUB是否为第一级HUB,是则执行步骤213,否则执行步骤211 ;
[0169]步骤211:装置根据当前HUB的设备路径信息获取与其直连的HUB的设备路径信息,将该直连的HUB作为当前HUB ;
[0170]步骤212:装置读取当前HUB的设备路径信息中的最后一位上的数据,将读取到的数据添加到端口信息中,然后返回步骤210 ;
[0171]例如:待生产设备的设备路径信息为“/devices/pci0000:00/0000:00:ld.0/USB2/2-1/2-1.4/2-1.4.2”,则将“2”作为二级端口号添加到端口信息中。[0172]步骤213:装置读取当前HUB的设备路径信息中的最后一位上的数据,将读取到的数据作为待生产设备的HUB ID号,根据保存的端口信息获取待生产设备对应的HUB端口号;
[0173]例如:当前HUB 的设备路径信息为 “/devices/pciOOOO:00/0000:00:1d.0/usb2/2-l/2-l.4”时,将“4”作为HUB ID号。假如当前保存的端口信息中包含一级端口号“ 4 ”、二级端口号“ 2 ”和三级端口号“ 3 ”,则当前HUB ID号为“ 4 ”,根据端口信息计算得到的待生产设备对应的HUB端口号=3+(2-1) *4 = 7。
[0174]步骤214:装置判断监测到的所述待生产设备的设备类型是否与从卡片生产信息得到的预设待生产设备类型一致,是则装置界面提示开始生产以及监测到的待生产设备对应的HUB ID号和HUB端口号,然后执行步骤215,否则装置界面提示设备类型不正确以及监测到的待生产设备对应的HUB ID号和HUB端口号,然后返回步骤202 ;
[0175]步骤215:装置对待生产设备执行预设生产操作;
[0176]本实施例中,所述预设生产操作包括写入芯片操作系统、清除芯片操作系统、初始化、检测。例如,本步骤具体为,装置将预设的芯片操作系统文件写入到待生产设备;或者,本步骤具体为,装置对所述待生产设备进行初始化操作;所述初始化操作包括向待生产设备写入硬件序列号,具体为,在初始化过程中,装置根据主机编号、HUB ID号、HUB端口号和当前时间,按照预设算法进行计算得到一个计算结果,将该计算结果作为硬件序列号写入待生产设备。所述主机编号是装置中预置的装置的出厂编号,所述当前时间是装置根据内部时钟获得的。
[0177]步骤216:判断操作是否成功完成,是则装置界面提示生产成功信息以及监测到的待生产设备对应的HUB ID号和HUB端口号,然后返回步骤202 ;否则装置界面提示生产失败以及监测到的待生产设备对应的HUB ID和HUB端口号,然后返回步骤202。
[0178]例如,界面提示:
[0179]“Hub:4 端口: 7 成功”。
[0180]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
【权利要求】
1.一种USB设备生产装置的工作方法,其特征在于: 步骤1:装置枚举与其连接的HUB设备,判断是否枚举到,是则执行步骤2,否则继续执行步骤I ; 步骤2:装置根据枚举到的HUB设备创建进程,在创建的进程中执行步骤3至步骤9 ; 步骤3:装置打开与进程对应的HUB设备,根据预设数组给当前打开的HUB设备的各个端口设置HUB端口号,并选取该HUB设备的一个端口作为当前端口; 步骤4:装置给当前端口上电; 步骤5:装置枚举与其连接的待生产设备,判断是否枚举到,是则遍历枚举到的待生产设备,执行步骤6,否则继续执行步骤5,或者装置给当前端口下电,并根据当前端口对应的HUB端口号重新选定所述HUB设备的一个端口作为当前端口,然后返回执行步骤4 ; 步骤6:装置根据枚举到的待生产设备的总线编号和设备编号,在系统文件中获取所述待生产设备的父设备编号,判断所述待生产设备的总线编号和父设备编号与所述当前打开的HUB设备的总线编号和设备编号是否对应一致,是则将枚举到的所述待生产设备的设备类型标识为非存储功能类型,然后执行步骤8,否则执行7 ; 步骤7:装置根据枚举到的待生产设备的总线编号和获取的所述父设备编号,在系统文件中获取所述父设备编号的上一级设备编号,判断所述待生产设备的总线编号和获取的所述上一级设备编号与当前打开的HUB设备的总线编号和设备编号是否对应一致,是则将枚举到的所述待生产设备的设备类型标识为存储功能类型,然后执行步骤8,否则返回执行步骤5,或者装置给当前端口下电,并根据当前端口对应的HUB端口号重新选定所述HUB设备的一个端口作为当前端口,然后返回执行步骤4; 步骤8:装置判断枚举到的所述待生产设备的设备类型是否与预设待生产设备类型一致,是则执行步骤9,否则返回执行步骤5,或者装置给当前端口下电,并根据当前端口对应的HUB端口号重新选定所述HUB设备的一个端口作为当前端口,然后返回执行步骤4 ; 步骤9:装置对所述待生产设备执行预设生产操作,并判断操作是否成功完成,是则装置给当前端口下电,并根据当前端口对应的HUB端口号重新选定所述HUB设备的一个端口作为当前端口,然后返回执行步骤4,否则返回执行步骤5。
2.如权利要求1所述的方法,其特征在于,所述步骤I具体为: 步骤Al:装置通过调用通用USB驱动接口枚举USB设备,并获取该接口返回的总线链表; 步骤A2:装置判断所述总线链表的指针指向的设备节点是否为空,是则执行步骤A7,否则执行步骤A3; 步骤A3:装置将与所述总线链表的指针指向的设备节点对应的USB设备作为当前USB设备; 步骤A4:装置根据预设HUB设备标识信息,判断当前USB设备是否为HUB设备,是则执行步骤A5,否则执行步骤A6; 步骤A5:装置为当前USB设备设置HUB编号,调用通用USB驱动接口,根据返回的总线链表获取当前USB设备的设备节点、设备编号和总线编号,并保存到与所述HUB编号对应的HUB信息数组中,然后执行步骤A6 ; 步骤A6:装置设置所述总线链表的指针指向下一个设备节点,然后返回步骤A2 ;步骤A7:装置判断是否枚举到HUB设备,是则执行所述步骤2,否则返回步骤Al。
3.如权利要求2所述的方法,其特征在于,所述根据预设HUB设备标识信息,判断当前USB设备是否为HUB设备具体为:装置将当前USB设备的设备标识信息与预设HUB设备标识信息进行比对,若相同则当前USB设备为HUB设备,否则不是。
4.如权利要求2所述的方法,其特征在于,步骤3所述装置打开与进程对应的一个HUB设备具体为:装置根据枚举到的HUB设备的HUB编号,获取与所述HUB编号对应的HUB信息数组,根据所述HUB信息数组中的设备节点,打开与所述设备节点对应的HUB设备。
5.如权利要求1所述的方法,其特征在于,所述步骤5具体为: 步骤B1:装置通过调用通用USB驱动接口枚举USB设备,并获取该接口返回的总线链表; 步骤B2:装置判断所述总线链表的指针指向的设备节点是否为空,是则返回执行步骤BI,否则执行步骤B3; 步骤B3:装置将与所述总线链表的指针指向的设备节点对应的USB设备作为当前USB设备; 步骤B4:装置根据预设待生产设备标识信息,判断当前USB设备是否为待生产设备,是则执行所述步骤6,否则设置所述总线链表的指针指向下一个设备节点并执行步骤B2。
6.如权利要求5所述的方法,其特征在于,所述根据预设待生产设备标识信息,判断当前USB设备是否为待生产设备具体为:将当前USB设备的设备标识信息与预设待生产设备标识信息进行比对,若相同则当前USB设备为待生产设备,否则不是。
7.如权利要求1所述的方法,其特征在于,步骤9所述根据当前端口对应的HUB端口号重新选定所述HUB设备的一个端口作为当前端口具体为:装置用所述HUB设备的端口数作为模数对当前端口对应的HUB端口号加I的结果做取模运算,根据与所述取模运算结果对应的HUB端口号重新确定当前端口。
8.如权利要求1所述的方法,其特征在于,步骤9所述预设生产操作包括写入芯片操作系统/清除芯片操作系统、初始化和检测操作。
9.如权利要求1所述的方法,其特征在于,所述方法还包括装置获取预设待生产设备类型的步骤,所述预设待生产设备类型是预先在装置中设定好的。
10.如权利要求1所述的方法,其特征在于,所述步骤3还包括装置向打开的HUB设备发送指令获取HUB设备的HUB ID号的步骤。
11.如权利要求10所述的方法,其特征在于,所述步骤8中判断为否则时还包括:装置界面提示设备类型错误信息以及当前打开的HUB设备的HUB ID号和当前上电的端口对应的HUB端口号,所述步骤9中判断为是时还包括:装置界面提示生产成功信息以及当前打开的HUB设备的HUB ID号和当前上电的端口对应的HUB端口号,所述步骤9中判断为否时还包括:装置界面提示生产失败信息以及当前打开的HUB设备的HUB ID号和当前上电的端口对应的HUB端口号。
12.如权利要求1所述的方法,其特征在于,所述步骤I中判断为否时还包括装置界面提示接入HUB设备。
13.—种USB设备生产装置的工作方法,其特征在于: 步骤1:装置监测是否有USB设备连接到装置,是则对监测到的USB设备执行步骤2,否则继续执行步骤1; 步骤2: 装置根据预设待生产设备标识信息判断监测到的USB设备是否为待生产设备,是则执行步骤3,否则返回步骤I ; 步骤3:装置根据监测到的待生产设备的总线编号和设备编号,在系统文件中获取其父设备编号,然后在系统文件中查找是否有且只有一个与所述总线编号和父设备编号相同且产品类型属性为预设属性值的USB设备,是则执行步骤4,否则执行步骤5 ; 步骤4:装置标识监测到的待生产设备的设备类型为存储功能类型,然后执行步骤6 ; 步骤5:装置标识监测到的待生产设备的设备类型为非存储功能类型,然后执行步骤6 ; 步骤6:装置判断当前标识的待生产设备的设备类型是否与预设待生产设备类型一致,是则执行步骤7,否则返回步骤I ; 步骤7:装置对监测到的所述待生产设备执行预设生产操作,待操作完成后返回步骤1
14.如权利要求13所述的方法,其特征在于,步骤I所述装置监测是否有USB设备连接到装置具体为:装置监听系统内核抛出的内核事件,在监听到系统内核抛出预设的内核事件时,确定有USB设备连接到装置。
15.如权利要求14所述的方法,其特征在于,所述步骤2之前还包括:装置从监听到的内核事件中获取USB设备的设备路径信息;根据获取的所述USB设备的设备路径信息,读取所述USB设备的属性文件,并从所述属性文件中获取该USB设备的标识信息。
16.如权利要求15所述的方法,其特征在于,步骤2所述装置根据预设待生产设备标识信息判断监测到的USB设备是否为待生产设备具体为:装置判断获取到的所述监测到的USB设备的标识信息是否与预设待生产设备标识信息一致,是则监测到的USB设备为待生产设备,否则不是。
17.如权利要求15所述的方法,其特征在于,所述步骤4还包括获取与其直连的HUB的上一级HUB的设备路径信息,将所述上一级HUB作为当前HUB ;所述步骤5还包括获取与其直连的HUB的设备路径信息,将所述直连的HUB作为当前HUB ; 所述步骤6之前还包括: al、装置读取监测到的待生产设备的设备路径信息的最后一位上的数据,将读取到的数据保存到端口信息中; a2、装置判断当前HUB是否为第一级HUB,是则执行a4,否则执行a3 ;a3、装置根据当前HUB的设备路径信息获取与其直连的HUB的设备路径信息,将该HUB作为当前HUB ;读取当前HUB的设备路径信息中的最后一位上的数据,将读取到的数据添加到端口信息中,然后返回执行a2 ; a4、装置读取当前HUB的设备路径信息中的最后一位上的数据,将读取到的数据作为待生产设备的HUB ID号,根据保存的端口信息获取待生产设备对应的HUB端口号,然后执行步骤6。
18.如权利要求17所述的方法,其特征在于,所述步骤6判断为否时还包括装置界面提示设备类型不正确以及监测到的待生产设备对应的HUB ID号和HUB端口号。
19.如权利要求17所述的方法,其特征在于,所述步骤7还包括:装置判断操作是否成功完成,是则装置界面提示生产成功信息以及监测到的待生产设备对应的HUB ID号和HUB端口号,然后返回步骤1,否则装置界面提示生产失败信息以及监测到的待生产设备的HUBID号和HUB端口号,然后返回步骤I。
20.如权利要求13所述的方法,其特征在于,步骤7所述预设生产操作为写入芯片操作系统或初始化或检测操作或清除芯片操作系统。
21.如权利要求13所述的方法,其特征在于,所述方法还包括装置获取预设待生产设备标识信息和预设待生产设备类型的步骤,所述预设待生产设备标识信息和预设待生产设备类型是预先在装置中设定好的。
【文档编号】G06F13/40GK103955442SQ201410185120
【公开日】2014年7月30日 申请日期:2014年5月4日 优先权日:2014年5月4日
【发明者】陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1