包含检测usb主机操作系统类型的usb装置枚举方法

文档序号:6359297阅读:238来源:国知局
专利名称:包含检测usb主机操作系统类型的usb装置枚举方法
技术领域
本发明有关于通用串行总线(Universal Serial BUS,以下简称为USB)装置枚举(enumeration),特别是有关于USB装置首先检测USB主机上操作系统的类型(OperatingSystem, OS),接着使用特定于所检测的操作系统类型的处理来执行USB装置枚挙。
背景技术
USB装置枚举是当装置与主机相耦接吋,由USB装置和USB主机所执行的处理。当、USB装置与主机解耦再重新耦接时,或者当主机重启等情况时,重复进行装置枚举处理。装置枚举处理期间,USB主机从USB装置收集装置类型与特性信息,并且分配给USB装置ー个地址。随着越来越多的装置被设计为USB兼容装置(例如,人机接口装置(humaninterface device)、海量存储装置(mass storage devices)、音频装置、视频装置、通信装置、打印机、以及各种其他种类的USB装置),USB主机经常具有对应各种类型USB装置的各种功能。例如,远程网络驱动程序接ロ规范(Remote Network Driver InterfaceSpecification,以下简称为RNDIS)是ー种USB网络接口装置,在Windows XP及后期的Windows 操作系统上得到支持;网络分享装置(Internet Sharing Device,以下简称为ISD)是ー种RNDIS,在Windows Vista 及后期的Windows 操作系统上得到支持;通信装置等级/以太网控制模型(CDC/ECM (Ethernet Control Model),以下简称为CDC/ECM)是ー种USB网络接口装置,由MAC OS及Linux 支持。同时,因为许多计算机平台支持USB,业界希望任何给定的USB装置都能耦接并且为不同的计算机平台所使用。但是,不同的操作系统通常支持不同的USB装置类型,并且基于装置所耦接的主机类型,所需的装置枚举处理可能不同。对于给定的USB装置,使用单一枚举流程或枚举序列通常难以满足所有操作系统。

发明内容
如上所述,基于装置所耦接的USB主机类型,USB装置枚举处理可能不同。由此,本发明ー实施方式提供ー种方法,其中USB装置执行对应不同操作系统类型的枚举处理,并且当USB装置耦接于USB主机时,在开始实际的枚举处理之前,USB装置首先识别USB主机的操作系统类型。接着,USB装置依据识别出的操作系统类型执行适当的枚举步骤。进一步地,USB主机的基本输入输出系统(Basic Input Output System,以下简称为BIOS)表现可能改变USB装置执行的操作系统-类型检测流程。由此,依本发明另ー实施方式,当USB装置耦接于USB主机吋,USB装置检测主机是否处于BIOS阶段,假如是,则USB装置改变其表现以防止在BIOS阶段发生操作系统-检测流程。特别的,特定的供应商标识(ID )用于完成这ー目标。此外,依本发明另ー实施方式,装置枚举流程由系统供应商配置,因此USB装置能够适应不同应用。相应地,本发明提供ー种USB装置枚举方法,其实质上避免了因为相关领域的限制与缺点所引起的至少ー个问题。本发明的一目的在于提供USB枚举方法,允许USB装置可靠地执行针对不同主机操作系统类型的装置枚挙。本发明的另ー目的在于提供USB枚举方法,減少BIOS阶段不想要的影响。本发明的又一目的在于提供可由客户配置的USB枚举,能够灵活地处理不同的主机操作系统类型。
本发明的其他特性与优势将由具体实施方式
给出,或者可以从本发明轻易地得知,或者从依本发明的实践中得出。本发明的目的与其他优势将由实施方式、权利要求以及附图特别指出的架构实现和得到。为达到上述优势,并且依本发明的精神所涵盖和描述的,本发明提供ー种在USB装置中执行的USB装置枚举方法,包含(a)判断耦接于USB装置的USB主机的操作系统类型;以及(b)基于所判断的USB主机的操作系统类型从储存在USB装置中的多个USB装置枚举处理中选择ー个USB装置枚举处理来执行USB装置枚挙。步骤(a)包含(al)将USB装置作为USB主机普遍支持的USB装置;(a2)从自USB主机接收的消息收集主机操作系统表现因子;以及(a3)基于所收集的主机操作系统表现因子,判断USB主机操作系统类型。较佳地,普遍支持的USB装置是USB海量存储装置或者USB人机接口装置。被判断的多个主机操作系统类型包含Windows Vista、Win7、Windows XP、Linux、以及MAC OS。用于产生操作系统表现知识数据库的学习过程包含(Cl)将USB装置作为耦接于USB装置且具有已知操作系统类型的USB主机的普遍支持的USB装置;(c2)从自USB主机接收的消息收集主机操作系统表现因子;(c3)对多个具有已知操作系统类型的USB主机重复步骤(Cl)和步骤(c2);以及(c4)分析步骤(c2)中所收集的主机操作系统表现因子以掲示操作系统表现因子与操作系统类型之间的关系。判断步骤可以包含在BIOS阶段停止枚举处理,接着,在BIOS阶段后继续主机操作系统类型判断的步骤,包含(al)将USB装置作为USB主机普遍支持的USB装置;(a2)当在收到任何设置装置地址的消息之前先从USB主机接收到对设备描述符的请求吋,则将指示特定供应商装置的设备描述符返回给USB主机;(a3)当在收到设置装置地址的消息之后才从USB主机接收到对设备描述符的请求吋,则返回指示普遍支持的USB装置的设备描述符;(a4)执行步骤(a3)之后,从自USB主机接收的消息收集主机操作系统表现因子;以及(a5)基于所收集的主机操作系统表现因子,判断USB主机的操作系统类型。枚举步骤(b)中使用的处理可由客户配置,因此基于所判断的主机操作系统类型,USB装置可被配置为不同USB装置。另ー方面,本发明提供ー种USB装置,包含控制器来运行程序以执行上述方法。本领域技术人员应了解以上的发明内容以及之后的具体实施方式
仅为说明本发明,以提供对权利要求书所限定的本发明的进ー步解释,而非用以限定本发明的范围。


图I为依本发明第一实施方式的USB装置枚举处理的示意图。图2为第一实施方式中装置枚举处理期间USB消息的示意图。图3为第一实施方式中USB装置执行的范例操作系统检测流程的状态机示意图。图4为第一实施方式中产生操作系统表现知识数据库的处理示意图。图5为用于配置USB装置的USB装置中现有技术的处理示意图。图6为依本发明第二实施方式,从BIOS阶段开始的USB装置枚举处理的示意图。
·
图7为依本发明第三实施方式,可由客户配置的USB装置枚举处理的示意图。图8为依本发明第三实施方式,可由客户配置的USB装置枚举处理流程的范例示意图。图9为依本发明第三实施方式,可由客户配置的USB装置枚举处理流程的范例示意图。图10为执行本发明第一、第二、第三实施方式的USB装置枚举处理的高水平流程图。图11为USB装置检测主机上是否有装置驱动程序,并且在需要时安装驱动程序的处理示意图。
具体实施例方式本发明第一实施方式提供ー种方法,其中USB装置执行对应不同操作系统类型的不同枚举处理。当USB装置耦接于USB主机时,在开始实际枚举流程之前,USB装置首先识别USB主机的操作系统类型。接着,USB装置依据识别出的操作系统类型执行适当的枚举步骤。本发明的实施方式在USB装置中实施。USB装置包含USB接ロ电路、控制电路以及存储器。控制电路包含USB装置控制器,控制USB接ロ。控制电路还可包含其他电路或者模块。存储器储存由该控制电路执行的程序、USB描述符、以及其他信息。图I为依本发明第一实施方式的USB装置枚举处理的示意图。图I所示的步骤由USB装置执行;在装置枚举期间,由USB主机执行的枚举步骤是现有技术的主机所执行的正常步骤,在本实施方式中没有改变。USB装置中,图I所示的处理在USB装置控制器中执行,或者在与装置控制器通信的独立的主机操作系统检测模块中执行。USB装置控制器是控制与USB主机的USB主机控制器通信的元件。此处理能够以硬件电路、固件或者储存在USB装置的存储器中的软件形式实施,并且可以由USB装置控制器或者主机操作系统检测模块执行。如图I所示,一旦USB装置与USB主机相耦接(步骤SI I),则USB装置将其自身作为USB主机的USB海量存储装置(例如CD-ROM,闪存驱动等)或者作为其他普遍支持的USB装置(即广泛应用且实质上由所有计算机平台所支持的装置;范例包含人机接口装置(HumanInterface Device,HID)类型的装置例如鼠标及键盘)(步骤S12)。此步骤中,USB装置(通过返回适当的设备描述符)将其自身作为普遍支持的装置,而不考虑其实际上是什么装置。接着,USB装置通过USB主机执行伪枚举处理(pseudo-enumeration)(步骤S13)。此伪枚举处理期间,USB装置从主机接收消息(请求),主机发送消息(请求)是其枚举处理的正常步骤。USB装置适当地响应主机的请求,但是响应内容可能并未反映实际装置的真实特性。来自USB主机的消息包含多种信息,一些是主机的操作系统类型的特性。例如,来自主机的请求指示主机是否支持特定种类的USB装置;ー些消息的特定栏位的数值对应不同操作系统而不同等。USB装置从消息中收集这些信息并且利用这些信息来判断主机的操作系统类型(步骤S14)。判断步骤中,USB装置通过利用关于不同操作系统类型的预期表现的预储存知识(例如,USB装置中预储存的操作系统表现知识数据库16),使用不同的算法和逻辑,包含模糊逻辑,来判断主机的操作系统类型。例如,USB装置在伪枚举步骤中收集的信息(在本发明中亦被称为“操作系统表现因子”)来源于与微软操作系统描述符(Microsoft Operating system Descriptor,以下简称为MOD) (MOD是允许下层USB装置声明其可兼容装置类型或者改变主机设置的ー组USB供应商请求及串描述符)有关的消息、获取配置描述符的字长(wLength of GetConfiguration Descriptor)、与接 ロ关联描述符(Interface Association Descriptor,以下简称为IAD) (IAD是通知主机USB装置的接ロ关系的USB描述符)有关的消息、设置地址(消息SET Address)之后的第二请求的特性等。所收集的范例信息如下-MOD-Compat ID (表示MOD的可兼容性特性)=Y或者N (是或者否),-MOD-Ext. property (表示MOD的扩展性质)=Y或者N,(是或者否)-Support IAD (表示是否支持IAD) =Y或者N (是或者否)-wLength of the first Configuration Descriptor (表不第一配置描述符的字长),wLength=4 (字长=4),wLength=255 (字长=255),wLength=other value (字长=其他数值)。
下列表I是基于观察所得ー些范例表现因子的内容。表I
权利要求
1.一种通用串行总线装置枚举方法,用于通用串行总线装置,包含 Ca)判断耦接于该通用串行总线装置的通用串行总线主机的操作系统类型;以及(b)基于所判断的该通用串行总线主机的该操作系统类型从储存在该通用串行总线装置中的多个通用串行总线装置枚举处理中选择一个通用串行总线装置枚举处理来执行通用串行总线装置枚举。
2.如权利要求I所述的通用串行总线装置枚举方法,其特征在于,该步骤(a)包含 (al)将该通用串行总线装置作为该通用串行总线主机普遍支持的通用串行总线装置; (a2)从自该通用串行总线主机接收的多个消息收集多个主机操作系统表现因子;以及(a3)基于所收集的该多个主机操作系统表现因子,判断该通用串行总线主机的该操作系统类型。
3.如权利要求2所述的通用串行总线装置枚举方法,其特征在于,该普遍支持的通用串行总线装置为通用串行总线海量存储装置或者通用串行总线人机接口装置。
4.如权利要求2所述的通用串行总线装置枚举方法,其特征在于,该多个主机操作系统表现因子包含从由多个因子组成的群组中所选择的至少一因子,该多个因子包含获取第一配置描述符的消息、获取第二配置描述符的消息、与接口关联描述符有关的消息、以及设置地址之后的第二请求的特性。
5.如权利要求2所述的通用串行总线装置枚举方法,其特征在于,该通用串行总线装置包含预储存的操作系统表现知识数据库,储存的该操作系统表现知识数据库包含多个已知操作系统类型的多个已知表现因子的相关信息,并且该步骤(a3)通过使用预储存的该操作系统表现知识数据库来执行。
6.如权利要求5所述的通用串行总线装置枚举方法,其特征在于,该多个已知操作系统类型包含 Windows Vista、Win7、Windows XP、Linux 以及 MAC OS。
7.如权利要求5所述的通用串行总线装置枚举方法,其特征在于,该通用串行总线装置枚举方法还包含 (C)在执行该步骤(a)之前,产生该操作系统表现知识数据库,包含 (Cl)将该通用串行总线装置作为具有已知操作系统类型的通用串行总线主机普遍支持的通用串行总线装置; (c2)从自该通用串行总线主机接收的消息收集多个主机操作系统表现因子; (c3)对多个具有已知操作系统类型的通用串行总线主机重复该步骤(Cl)和该步骤(c2);以及 (c4)分析该步骤(c2)中所收集的该多个主机操作系统表现因子以揭示该多个操作系统表现因子与该操作系统类型之间的关系。
8.如权利要求I所述的通用串行总线装置枚举方法,其特征在于,该步骤(a)包含 (al)将该通用串行总线装置作为该通用串行总线主机普遍支持的通用串行总线装置; (a2)当在收到任何设置装置地址的消息之前先从该通用串行总线主机接收到对设备描述符的请求时,则将指示特定供应商装置的设备描述符返回给该通用串行总线主机;(a3)当在收到设置装置地址的消息之后才从该通用串行总线主机接收到对设备描述符的请求时,则返回指示普遍支持的通用串行总线装置的设备描述符; (a4)执行该步骤(a3)之后,从自该通用串行总线主机接收的多个消息收集多个主机操作系统表现因子;以及 (a5)基于所收集的该多个主机操作系统表现因子,判断该通用串行总线主机的该操作系统类型。
9.如权利要求I所述的通用串行总线装置枚举方法,其特征在于,在执行该步骤(a)之前,将定义枚举处理流程的配置元素储存在通用串行总线装置中,其中,该步骤(b)依据该配置元素定义的枚举处理流程执行。
10.如权利要求I所述的通用串行总线装置枚举方法,其特征在于,该步骤(a)还判断该通用串行总线主机上是否已安装针对目标通用串行总线装置的适当的驱动程序,并且其中该步骤(b)包含若未安装该驱动程序,则将该通用串行总线装置作为储存该驱动程序及自动运行程序的海量存储装置储存,以使该驱动程序安装在该通用串行总线主机上。
11.如权利要求10所述的通用串行总线装置枚举方法,其特征在于,该步骤(a)包含基于来自该通用串行总线主机的微软操作系统描述符请求中的供应商编码数值来判断通用串行总线主机上是否已安装该驱动程序。
12.一种通用串行总线装置,包含 通用串行总线接口电路; 控制电路,控制该通用串行总线接口电路;以及 存储器,储存由该控制电路执行的程序编码,该程序编码用于使该控制电路执行处理程序,该处理程序包含 (a)判断耦接于该通用串行总线装置的通用串行总线主机的操作系统类型;以及 (b)基于所判断的该通用串行总线主机的该操作系统类型从储存在该通用串行总线装置中的多个通用串行总线装置枚举处理中选择一个通用串行总线装置枚举处理来执行通用串行总线装置枚举。
13.如权利要求12所述的通用串行总线装置,其特征在于,该步骤(a)包含 (al)将该通用串行总线装置作为该通用串行总线主机普遍支持的通用串行总线装置; (a2)从自该通用串行总线主机接收的多个消息收集多个主机操作系统表现因子;以及(a3)基于所收集的该多个主机操作系统表现因子,判断该通用串行总线主机的该操作系统类型。
14.如权利要求13所述的通用串行总线装置,其特征在于,该普遍支持的通用串行总线装置为通用串行总线海量存储装置或者通用串行总线人机接口装置。
15.如权利要求13所述的通用串行总线装置,其特征在于,该多个主机操作系统表现因子包含从由多个因子组成的群组中所选择的至少一因子,该多个因子包含获取第一配置描述符的消息、获取第二配置描述符的消息、与接口关联描述符有关的消息、以及设置地址之后的第二请求的特性。
16.如权利要求13所述的通用串行总线装置,其特征在于,该存储器包含预储存的操作系统表现知识数据库,预储存的该操作系统表现知识数据库包含多个已知操作系统类型的多个已知表现因子的相关信息,并且该步骤(a3)通过使用预储存的该操作系统表现知识数据库来执行。
17.如权利要求16所述的通用串行总线装置,其特征在于,该多个已知操作系统类型包含 Windows Vista> Win7> Windows XP、Linux 以及 MAC 操作系统。
18.如权利要求16所述的通用串行总线装置,其特征在于,该处理程序还包含 (c)将该通用串行总线装置作为具有已知操作系统类型的通用串行总线主机普遍支持的通用串行总线装置; (c2)从自该通用串行总线主机接收的多个消息收集多个主机操作系统表现因子; (c3)对多个具有已知操作系统类型的通用串行总线主机重复该步骤(Cl)和该步骤(c2);以及 (c4)分析该步骤(c2)中所收集的该多个主机操作系统表现因子以揭示该多个操作系统表现因子与该操作系统类型之间的关系。
19.如权利要求12所述的通用串行总线装置,其特征在于,该步骤(a)包含 (al)将该通用串行总线装置作为该通用串行总线主机普遍支持的通用串行总线装置; (a2)当在收到任何设置装置地址的消息之前先从该通用串行总线主机接收到对设备描述符的请求时,则将指示特定供应商装置的设备描述符返回给该通用串行总线主机;(a3)当在收到设置装置地址的消息之后才从该通用串行总线主机接收到对设备描述符的请求时,则返回指示普遍支持的通用串行总线装置的设备描述符; (a4)执行该步骤(a3)之后,从自该通用串行总线主机接收的多个消息收集多个主机操作系统表现因子;以及 (a5)基于所收集的该多个主机操作系统表现因子,判断该通用串行总线主机的该操作系统类型。
20.如权利要求12所述的通用串行总线装置,其特征在于,该处理程序还包含在执行该步骤(a)之前,将定义枚举处理流程的配置元素储存在通用串行总线装置中,其中,该步骤(b)依据该配置元素定义的枚举处理流程执行。
21.如权利要求12所述的通用串行总线装置,其特征在于,该步骤(a)还判断该通用串行总线主机上是否已安装针对目标通用串行总线装置的适当的驱动程序,并且其中该步骤(b)包含若未安装该驱动程序,则将该通用串行总线装置作为储存该驱动程序及自动运行程序的海量存储装置储存,以使该驱动程序安装在该通用串行总线主机上。
22.如权利要求21所述的通用串行总线装置,其特征在于,该步骤(a)包含基于来自该通用串行总线主机的微软操作系统描述符请求中的供应商编码数值来判断通用串行总线主机上是否已安装该驱动程序。
全文摘要
本发明提供一种USB装置枚举处理程序,用于USB装置。USB装置首先检测耦接于装置的USB主机操作系统类型,且基于所检测的主机操作系统类型从多个储存的处理程序中选择一个来执行装置枚举。为检测主机操作系统类型,USB装置首先将自身作为主机的USB海量存储装置或者人机接口装置,执行装置枚举来从主机收集操作系统表现因子,及从操作系统表现因子判断操作系统类型。由此,使用针对所检测到的主机操作系统类型的特定枚举处理,USB装置通过将自身作为实际上适用的USB装置来执行实际装置枚举。多种储存的枚举处理可由用户配置。进一步地,本发明提供一种方法,当主机处于BIOS阶段时停止枚举处理。
文档编号G06F9/445GK102713843SQ201180005408
公开日2012年10月3日 申请日期2011年8月24日 优先权日2010年8月24日
发明者张朝江, 徐英哲, 陈俊儒, 黄文俊 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1