背景技术
本部分的陈述仅提供与本公开有关的背景信息并且可能不构成现有技术。
对于能够与目标设备(例如目标计算机)的操作系统通信的USB设备,目标计算机需要知道使用哪个驱动器来支持该设备。例如,如果目标计算机运行Microsoft操作系统,并且USB设备直接由操作系统支持,则例如通过使用如“HID”(人机接口设备)或“大容量存储”等的驱动器将USB设备自动映射至存在于操作系统中的驱动器。这通常在任何类型的所支持的USB设备被首次插入到运行操作系统的计算机的USB端口时发生。操作系统基本上查看与其通信的支持的USB设备的类,并且将所支持的USB设备自动“枚举”至包括在操作系统中的适当的设备驱动器。所说的“枚举”是指:操作系统自动地将所需的设备驱动器映射至USB设备。
当使用不受支持的USB来试图与运行操作系统的计算机通信时,会出现挑战,这是因为操作系统不知道将什么驱动器映射至该设备。此外,运行操作系统的计算机可能不具有支持该USB设备的所需驱动器。这使得用户必须向操作系统提供“.inf”或驱动器文件,所述“.inf”或驱动器文件(基于USB供应商/产品ID)告诉操作系统所述枚举USB设备映射至的特定驱动器。当然,可以经由因特网连接将“.inf”或驱动器文件提供给运行操作系统的计算机,通过因特网连接传送“.inf”或驱动器文件的要求可能本身存在挑战。例如,实体通常具有受限的LAN/WAN访问,这可能阻止设备从因特网访问文件。因此,通过因特网更新驱动器在现实世界中的应用中通常不切实际。
另一选择是在被插入到目标计算机的USB端口中的便携介质设备(例如USB闪存驱动器)上简单地包括所需要的驱动器安装文件。然而,这需要便携式介质设备在物理上插入到可能需要与USB设备通信的每个计算机。在一些应用中,尤其是在KVM(键盘/视频/鼠标)应用中,这可能是不切实际的,因为USB设备可能需要与多个不同的目标计算机通信。此外,对目标计算机的物理访问也可能受限,例如当目标计算机在具有控制访问的数据中心的房间中时。
因此,面临的挑战仍然是如何容易而有效地使不受支持的USB设备与目标计算机的操作系统进行通信,而无需使用诸如因特网等的广域网,并且不需要将其上具有设备安装文件的单独介质设备物理耦接至需要与USB设备通信的每个目标计算机的USB端口。
具体实施方式
下面的描述本质上仅仅是示例性的,并且不旨在限制本公开、应用或用途。应理解,在整个附图中,相应的附图标记指示相同或相应的部件和特征。
参照图1,其示出了与目标设备(在本示例中,目标计算机12)的USB端口12b通信的USB设备10的高级图。目标计算机12具有操作系统12a,操作系统12a包括与各种USB设备进行通信所需要的各种USB驱动器,但在这个例子中USB装置10是“不受支持”的。在该示例中将操作系统假定成来自微软公司的操作系统。在下面的文本中,当使用术语“不受支持”时,是指USB设备10不能被自动映射至被包括作为操作系统12a的一部分的像“HID”或“大容量存储”等的驱动器。因此,操作系统12a不能够自动确定和应用USB设备10需要使用的特定驱动器。
为了说明USB设备10的上述支持和不受支持功能,图1将USB设备示出为具有主功能14a和次级功能14b二者。主功能14a在该示例中可以由三个受支持的USB特征14a1、14a2和14a3(例如,分别为HID、大容量存储设备和智能卡)来实现。次级功能14b具有USB大容量存储设备14b1,并且至少具有一个不受支持的USB功能14b2。
次级功能14b可以经由开关10a或经由软件命令10c来选择。例如,在使用运行在用户正在使用的远程计算机/终端24上的软件(例如DSView管理软件或经由远程调试应用程序)时,软件命令可能由用户潜在地发送。
USB设备10还包括“重置”开关10b。开关10a和开关10b可以是按钮开关,但是应理解,可以使用其它类型的开关。对于该示例,USB设备10的主功能14a可以被认为是在USB设备被耦接至目标计算机12并由从USB端口12b接收到的电力而通电时USB设备进入的默认模式。因此,当USB设备最初耦接至目标计算机12的USB端口12b并且首次通电时,不需要驱动开关10a或开关10b中的任一个以使得USB设备10开始执行其主功能14a。操作系统包括用于完全支持USB设备10的主功能14a所需的驱动器文件(即在该示例中操作的默认模式执行主功能)。
在其次级功能14b中,USB设备10提供不受支持的特征以执行不同的功能。换句话说,次级功能14b不完全被支持;可以被部分支持,这意味着操作系统具有至少一个部分支持次级功能的驱动器,但它仍然缺少一个或更多个驱动器以完全实现次级功能。由于次级功能14b不被完全支持,因此操作系统不知道如何枚举USB设备10,以使设备能够执行其次级功能的一个或更多个方面。
需要驱动开关10a(或经由软件命令10c驱动)以启动USB设备10的次级功能14b。按压“重置”按钮10b执行USB设备10的硬件重置(即硬重置)。这将重置USB设备10以执行其主要能14a。此外,可以重置USB设备10以经由软件重置来执行其主功能14a。例如,可以通过从与USB设备10通信的网络交换机、计算机或终端24提供软件重置信号来重置USB设备10。
该示例中的USB设备10包括:USB描述符15a,其详细说明哪些功能由主功能14a来支持;以及第二USB描述符15b,其详细说明哪些功能由次级功能14b来支持。当使用针对主功能15a的USB描述符通过USB20将主功能14a枚举至操作系统12a时,这被认为是正常的操作,因为操作系统12a具有支持所枚举的特征14a1、14a2和14a3的驱动器。当通过开关10a或软件命令10c来选择第二功能14b时,USB设备10使用针对次级功能15b的USB描述符通过USB线缆20上重新枚举至操作系统12a。次级功能15b的USB描述符包含不受支持的USB特征14b2以及受支持的USB大容量存储设备14b1,所述USB大容量存储设备14b1包含支持不受支持的USB特征14b2所需的.inf文件16以及诸如版本注释、“自述”文本文件、用户指南等其他文件。受支持的USB大容量存储设备14b1被首先枚举并且连接至操作系统12a,以使得操作系统12a具有安装/支持不受支持的USB特征14b2所需要的文件。
参照图2,流程图100示出了本公开的USB设备10的软件的操作的一个示例。在操作102处,USB设备10耦接至目标计算机12的USB端口12b以开始启用USB设备的主功能14a操作的处理。在操作104处,USB设备10将包括设备的供应商/产品ID和支持的USB特征的其存储的USB描述15a发送至目标计算机12以实现主功能14a的操作。在操作106处,目标计算机12接收由USB设备10提供的针对主功能操作的USB描述符15a。在操作108处,操作系统12a自动枚举USB设备10以使USB设备能够执行其主功能14a。在操作110处,USB设备10开始执行其主要能14a。
在操作112处,检查USB设备10上的次级功能按钮或开关10a是否被驱动(或者假定不使用次级功能按钮或开关10a,检查是否接收到软件命令10c)。如果没有检测到对次级功能按钮10a的驱动(或软件命令10c),则重复操作110。如果次级功能按钮10a被检测为已经被驱动(或已经检测到软件命令10c),则在操作114处,USB设备10执行热插拔操作(即,其执行软件USB断开,然后再连接到USB总线)。在操作116处,USB设备10经由.inf文件16(或脚本文件)来提供针对次级功能15b的USB描述符,其包含USB大容量存储设备14a1和支持次级功能所需的文件。在操作118处,USB大容量存储设备14a1在目标计算机12上显示有.inf文件16(即,驱动器安装文件)和/或支持USB设备10的USB次级功能14b的操作所需的任何其他文件。
在操作120处,当操作系统认识到它不具有枚举USB次级功能14b的不受支持的USB特征14b2所需要的驱动器时,它会在用户的显示器上呈现针对所需的.inf文件的提示。然后,用户向操作系统指示存储有inf文件16的USB设备10上的USB大容量存储设备14b1,以安装/设置USB设备10从而执行次级功能14b的不受支持的USB特征14b2,并由此完成该USB设备10的枚举。在操作122处,USB设备10开始执行次级功能14b。
在操作124处,检查以确定是否检测到软件或硬件重置。硬件重置将经由用户对重置开关10b的驱动进行。如果检测到任何类型的重置,则重新执行操作102至110。如果没有检测到重置,则USB设备10下的操作被配置成如操作122所指示的那样继续执行次级功能14b。
虽然,USB设备10被描述为具有主功能14a和可以被选择启动的次级功能14b,但还可以使用本公开的教导在一个USB设备上包括三个或更多个功能。例如,如果通过开关10a或通过软件命令10c选择了次级功能14b以实现本来不受支持的串行控制台功能,则串行控制台功能可以由用户使用以配置第三不受支持的功能。在该示例中,用户可以使用串行控制台功能以向目标计算机12提供一个或更多个另外的.inf文件或驱动器,以使得能够在目标计算机12上实现第三或“第三级”不受支持的功能。替选地,多于一个次级功能有可能由开关(或有一个或更多个软件命令)的一些组合被启用,通过所述开关的组合用户能够选择性地启动两个或更多个不同的不受支持的功能中的一个不受支持的功能。在该情况下,USB大容量存储设备14b1会加载有与每个不受支持的功能相对应的适当.inf文件。操作系统设置有与用户经由特定开关(或经由一个或更多个软件命令)选择的特定选择的功能(即,不受支持的功能)相对应的适当.inf文件。以这种方式,操作系统能够将所需要的驱动器映射到USB设备10以提供所需的不受支持的功能。然而,应理解,唯一的限制是可以枚举的USB装置10内的USB端口号。在本文呈现的示例中,USB设备10包括内部的三个端口的USB集线器,其允许枚举USB设备10的3个USB设备:USB HID(键盘和鼠标);USB大容量存储设备14以及智能卡或USB次级功能。
USB设备10及其操作方法因此形成了单个USB设备可以提供有两个或两个以上功能的手段,这些功能中的一个或更多个不被操作系统所支持。USB设备10提供的一个显著优点是:它能够给操作系统提供所需要的.inf文件,而无需广域网(例如因特网)连接,并且不需要将.inf文件物理地加载到自身需要物理地插入到目标计算机的USB端口的盘或单独的USB部件(例如闪存驱动器)。本公开的USB设备10对KVM应用是特别有利的,在KVM应用中,将.inf文件加载到用户在KVM会话期间可能访问的每个不同的计算机会是不切实际的。
USB设备10的另一优点在于:它可以被提供有软件更新和/或其次级功能可以经由软件更新来改变,而不需要对USB设备10的任何硬件修改。以该方式,可以通过软件来更新现有的USB设备10以根据用户的需求变化来执行不同的次级功能。
将进一步参照图1和图3,描述USB设备10的一个具体实现,其中,USB设备操作为KVM(键盘/视频/鼠标)设备,并且更具体地操作为数字机架接口盒(“DRIP”),其提供KVM设备功能,以实现远程计算机/终端24和计算机12之间的KVM会话。因此,在本示例中应理解,用作KVM设备的USB装置10,将来自远程计算机/终端24的键盘和鼠标信号传送至计算机12(例如作为网络上的以太网数据包),并且将来自计算机12的视频作为模拟信号传送回远程计算机/终端24。
然而,当用作KVM设备时,由于USB设备10不具有专用串行端口(例如RS-232端口),因此USB设备10通常不能够提供串行控制台能力。在KVM应用中,通常需要串行控制台以使得用户能够执行初始调试(例如设置IP地址、升级等)以及发出KVM设备的出厂默认恢复。因此,如果出现用户无法访问USB设备10的情况,则用户通常会需要串行控制台以提供执行重置USB设备10以及重新建立KVM会话所需的各种操作的必要命令。本公开通过使USB装置10能够被配置有作为次级功能14b的串行控制台功能来克服显著的限制。
具体参照图3,流程图200示出了可以被执行以提供USB设备10的串行端口功能的各个操作。应当理解的是,如操作202处所指示的,在该示例中USB设备10操作为具有串行控制台能力的独立DRIP(即,“SDRIP”),并且被插入运行Microsoft操作系统的计算机或终端的USB端口。串行控制台能力使USB设备10能够被设置成用作虚拟串行端口设备,该USB虚拟串行端口设备是不受操作系统支持的USB功能/设备。
在操作204处,用户驱动次级功能开关10a(或替选地发送软件命令),这在该示例中可以被标记或理解为提供“串行控制台”功能。如果使用物理开关,则用户优选驱动开关10a(或推动或滑动或切换,这取决于所采用的具体开关)至少约1秒但优选小于约5秒。驱动开关10a持续该间隔,通知被命令的USB设备10进入操作的串行控制台模式。作为响应,在操作205处,USB大容量存储设备14a1被枚举和安装。在操作206处,向用户呈现USB大容量存储设备14a1,USB大容量存储设备14a1包含sdrip.inf和readme.txt文件.在操作207处,USB虚拟串行端口设备被枚举,然后操作系统请求用户指定要使用的驱动器。在操作208处,检查以确定用户访问控制是否被限制。如果确定用户访问控制未被限制,则在操作210处,用户选择sdrip.inf文件作为用于USB设备10的设备驱动器安装文件。然后,USB虚拟串行端口设备正确安装。在该示例中,应理解,该USB虚拟串行端口设备被枚举为USB CDC类设备,并且更具体地被枚举为CDC ACM类设备。
在操作212,用户现在可以通过使用运行作为USB虚拟串行端口的USB装置10连同适当的单独串行控制台软件(例如开源PuTTy终端模拟器)打开串行控制台。
如果检查在操作208处确定用户访问控制被限制,则在操作214处初始安装失败。在该情况下,操作系统关注Windows更新而不看sdrip.inf文件。然后,用户可以如在操作216处所指示的,在他/她的计算机上打开设备管理器。在操作218处,用户可以选择CDC设备并且选择“更新驱动器软件”。此时,可以执行操作210。
虽然描述了各种实施方式,本领域的技术人员将认识到可以在不背离本公开的情况下作出修改或变型。本示例示出了各种实施方式,并且不旨在限制本公开。因此,说明书和权利要求应该进行宽泛的理解,只存在鉴于相关现有技术而必要的那些限制。