CN111581128A - 通过虚拟usb中心在usb设备中动态提供虚拟化功能的方法 - Google Patents
通过虚拟usb中心在usb设备中动态提供虚拟化功能的方法 Download PDFInfo
- Publication number
- CN111581128A CN111581128A CN202010041745.8A CN202010041745A CN111581128A CN 111581128 A CN111581128 A CN 111581128A CN 202010041745 A CN202010041745 A CN 202010041745A CN 111581128 A CN111581128 A CN 111581128A
- Authority
- CN
- China
- Prior art keywords
- usb
- virtual
- interface
- external
- configuration information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/105—Program control for peripheral devices where the programme performs an input/output emulation function
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Systems (AREA)
Abstract
通过虚拟USB中心在通用串行总线(USB)设备中动态提供虚拟化功能的方法和装置。虚拟USB中心包括被配置为连接到主机系统的USB上游端口以及至少一个外部总线或外部接口,包括非USB设备的设备或其中嵌入有非USB设备的计算设备可以连接到该外部总线或外部接口。虚拟USB中心被配置为检测非USB设备和/或由非USB设备执行的功能,并且生成对应的虚拟USB配置信息,在该信息下,虚拟USB设备和/或功能被连接到虚拟USB中心中的下游虚拟端口。向主机计算机呈现虚拟USB配置以使得主机计算机能够与非USB设备和/或其功能通信。还公开了一种I3C探针,其具有嵌入式虚拟USB中心,并且被配置为与I3C设备和/或嵌入到被调试的目标系统内的功能通信。USB设备还可以以类似的方式虚拟化。
Description
背景技术
暴露内部资源或者外部总线或接口的USB设备需要确定如何在设备级别向主机设备的软件栈呈现这些资源或连接的设备。在许多情况下,期望虚拟化这些连接的设备或资源,以由多个软件应用或系统域使用。在现有的USB设备实现方式中,固定配置设备或要求设备配置的完全的先验知识(通常要求包含配置抵押品的预写入数据文件)的其他可配置设备尚未充分解决资源虚拟化。虚拟化的这种缺乏要求非标准方法来暴露设备的资源,这降低了与现有的标准USB驱动程序以及用于预期由这些驱动程序暴露的标准设备类别而编写的软件的兼容性。
附图说明
当结合附图时,因为通过参考以下具体实施方式,本发明的前述方面和伴随的优点中的许多变得更好理解,所以本发明的前述方面和伴随的优点中的许多将变得更容易被认识到,其中,除非另有说明,否则在各个视图中相同的附图标记指代相同的部分:
图1是示出根据一个实施例的对虚拟USB中心的实例化的逻辑(高级)实现方式的框图;
图2是虚拟USB中心的框图,该虚拟USB中心提供了主机驱动的控制模型的实施例,该主机驱动的控制模型的控制功能包含由主机软件使用以配置设备及其虚拟化能力的接口;
图3是根据一个实施例的具有扩展的虚拟化能力的增强版本的虚拟USB中心的框图;
图4是示出调试系统的示意图,该调试系统包括耦合在包括调试测试系统(DTS)的主机计算机与被调试的目标系统之间的I3C探针,该示意图示出了将三个I3C从设备(slave)虚拟化为USB设备的第一状态;
图4a是示出图4的调试系统的变型的第一状态的示意图,在该状态下三个I3C从功能(slave function)被虚拟化为三个USB设备;
图4b是示出图4的调试系统的第二状态的示意图,在该状态下已经添加了第四I3C从设备;
图4c是示出图4的调试系统的第三状态的示意图,在该状态下已经移除了I3C从设备中的一个;
图4d是示出图4a的调试系统的第二状态的示意图,在该状态下已经移除了I3C从功能中的一个并且已经添加了两个I3C从功能;
图5是示出根据一个实施例的当初始连接调试系统时由DTS 402、I3C探针和目标系统执行的操作的流程图;
图6是示出与图4中示出的调试系统的状态相对应的虚拟USB中心的视图的框图;
图6a是示出与图4a中示出的调试系统的状态相对应的虚拟USB中心的视图的框图;
图7是示出根据一个实施例的用于向图4和图4a-4d的调试系统添加I3C端点和从其移除I3C端点的操作和逻辑的流程图;
图8是示出分层架构的框图,在该分层架构下,中间功能虚拟化层用作抽象层,该抽象层从在设备呈现层中向设备呈现的那些功能的角度在功能实现层中抽象功能;以及
图9是示出根据一个实施例的针对图4和图4a-4d的调试系统实现的数据路径的示意图。
具体实施方式
本文描述了通过虚拟USB中心在USB设备中动态提供虚拟化功能的方法和装置的实施例。在以下描述中,阐述了许多具体细节以提供对本发明的实施例的透彻理解。然而,相关领域的技术人员将认识到,可以在没有具体细节中的一个或多个的情况下,或者利用其他方法、组件、材料等来实践本发明。在其他实例中,未示出或未详细描述公知的结构、材料或操作以避免模糊本发明的方面。
在整个说明书中对“一个实施例”或“实施例”的引用表示结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书中各种位置出现的短语“在一个实施例中”或“在实施例中”不一定全都指代同一实施例。此外,在一个或多个实施例中,可以以任何合适的方式组合特定特征、结构或特性。
为了清楚起见,本文附图中的单独的组件也可以由附图中该组件的标签来引用,而不是由特定的附图标记来引用。另外地,可以利用带有表示“典型”的“(typ)”的附图标记示出对特定类型的组件(与特定组件相反)引用的附图标记。将理解的是,这些组件的配置将作为可能存在但为了简单和清楚起见未在附图中示出的类似组件或者未标记有单独附图标记的以其他方式类似的组件的典型。相反,“(typ)”不应被解释为表示组件、元件等典型地用于其公开的功能、实现方式、目的等。
根据本文所描述的实施例的方面,公开了一种实现灵活且可配置的虚拟USB中心和相关联的虚拟USB设备的USB设备。在一个方面,虚拟USB中心可以被配置为对基本上任何USB设备(包括标准设备类别)进行实例化。虚拟USB中心包含用于管理虚拟USB设备的虚拟化控制逻辑,该虚拟USB设备可以基于设备的状态或通过来自主机计算机的软件栈的命令手动或自动地提供。在提供每个虚拟USB设备时,(从主机计算机的角度而言)该虚拟USB设备表现得如同连接到虚拟USB中心上的空闲端口(类似于将物理USB设备连接到物理USB中心上的空闲端口)一样,这利用现有的软件驱动程序来处理虚拟设备连接和发现,而不会中断与虚拟USB中心或其其他虚拟USB设备的通信。
以下实施例描述并示出了用于USB设备的架构,该架构对USB中心进行模拟并且可以实例化多个虚拟USB设备。使用USB中心范例允许对动态系统进行建模,该动态系统的构件可以随时出现或消失——类似于物理USB中心可以具有附接到其下游端口以及从其下游端口移除的USB设备的方式。实施例还利用现有的USB驱动程序,该USB驱动程序支持跨USB中心常见的动态插入/拔出事件,并且实现许多不同设备类别或特定于供应商的实现方式的USB设备的连接。一些实施例还允许对虚拟USB中心及其虚拟化设备接口的控制的若干路径,该虚拟USB中心及其虚拟化设备接口可以是主机驱动的或设备驱动的。
动态虚拟USB中心的架构概念本身适用于针对各种用例的许多USB设备实现方式。实现虚拟USB中心的设备不一定类似于典型的USB中心,并且实际上可以类似于具有针对其具体用例定制的扩展的虚拟化能力的更典型的USB设备。
对于遵循主机驱动的控制模型的虚拟USB中心,这体现为接受来自主机计算机的命令以实例化新的虚拟化USB功能或者取消提供并逻辑上断开与活动的虚拟化USB功能的连接的“控制功能”。当主机计算机希望功能用于断开连接或以不同的配置重新实例化时,主机计算机将发起这些操作。这些虚拟化USB功能的行为和配置可以通过软件进行配置,这使得这些虚拟化USB功能如同它们是连接到具有常规热插拔事件处理的传统USB中心的物理设备一样工作。
对于遵循设备驱动的控制模型的虚拟USB中心,这由内部配置管理器处理,该内部配置管理器使用设备的内部资源或外部总线和接口,以通过恢复先前存储的配置(例如,从非易失性RAM恢复)或通过发现附接到总线或接口的其他设备来动态提供虚拟化USB功能。
虚拟USB中心还可以任凭设备实现者的处理来利用两种控制模型(主机驱动的控制模型和设备驱动的控制模型)。在这种情况下,设备可以具有可以驱动配置的以下实体的任一组合:控制功能、用于先前存储的配置的内部资源和/或外部总线或接口。
内部架构
本文公开的虚拟USB中心的实施例体现了多个逻辑组件,这些组件中的一些被映射到经典USB中心的物理组件或逻辑组件,并且这些组件中的一些提供用于管理由虚拟USB中心实例化的虚拟化设备所必需的唯一能力。
这些组件包括:
·物理上游端口(通常在端口#0处),该物理上游端口经由标准USB协议连接到主机计算机。
·中心配置,该中心配置由逻辑实现以暴露适当的USB描述符,该USB描述符包含针对具有期望数量的下游端口(在一些实施例中最多为15个)的中心的正确配置(例如,USB设备类别09h)。
·用于针对可用的下游端口发送根据USB规范路由到中心的中断端点的端口连接和断开连接消息的逻辑。
·用于在任何空闲端口(例如,端口#2-#15,或与实现的端口一样多)处实例化至少一个动态“虚拟功能”,并且将分组路由到虚拟功能/从虚拟功能路由分组(如同该虚拟功能是连接到其物理端口的USB设备一样)的逻辑。
·虚拟功能配置,该虚拟功能配置由逻辑实现以暴露适当的USB描述符,该USB描述符包含用于对具有期望的端点接口的任何标准USB设备类别或特定于供应商的设备类别的固定“控制功能”(如果存在)和连接的“虚拟功能”两者进行模拟的正确的配置;以及
·用于控制虚拟功能的实例化和管理的逻辑,这对创建或销毁虚拟功能并使这些虚拟功能在其余下游端口上表现为插入或断开连接事件是必要的。
通常,用于控制虚拟功能的实例化和管理的逻辑可以是主机驱动的和/或设备驱动的,并且包括以下各项中的至少一个:
·在特定的固定端口(例如,端口1)处的主机可访问的“控制功能”,该主机可访问的“控制功能”经由以下组件来实现主机驱动的虚拟功能管理:1)用于实例化固定端口控制功能并且将分组路由到控制功能/从控制功能路由分组(如同该控制功能是连接到其物理端口的USB设备一样)的逻辑;以及2)该控制功能内的控制端点上的命令接口,该命令接口用于接受并处理来自主机计算机的命令。
·用于利用内部资源来存储并应用保存的配置数据的内部逻辑,该内部逻辑通过使用以下资源来实现设备驱动的虚拟功能管理:1)仅用于配置的内部资源(例如,EEPROM),该内部资源可以存储并取回保存的配置数据;以及2)包含元数据的内部资源(例如,NVRAM或闪存),该元数据包括活动分区和配置数据,以及经由设备的功能行为访问的存储的用户数据。
·用于利用外部接口(例如,总线或其他I/O能力)来检测各种其他外部连接的设备并将其暴露为虚拟功能的内部逻辑,该内部逻辑通过使用外部接口或总线(例如I3C、CAN或以太网)来实现设备驱动的虚拟功能管理,该外部接口或总线可以由内部逻辑使用以检测各种连接的设备并与其通信。
出于所有意图和目的,虚拟USB中心架构的主要方面是(对主机计算机或其他上游设备)表现得如同该虚拟USB中心架构是物理USB中心一样并且如同该虚拟USB中心架构是物理USB中心一样工作,对此可以经由控制虚拟功能的实例化和管理来调整或改变其下游设备的配置、存在或行为。该控制可以是主机驱动的,在这种情况下,设备将实例化虚拟USB设备以用作控制功能,并且经由标准USB通信协议(公用或专用)来响应发送到控制功能的端点接口的命令。该控制也可以是设备驱动的,在这种情况下,设备将包含内部配置数据或者外部总线或接口通信逻辑,并且应该基于其存储的配置数据或者外部总线或接口上任何检测到的设备来实例化其自身的虚拟功能。在任一情况下,中心本身都以符合相关USB中心规范的方式,围绕作为设备热插拔或断开连接事件创建或破坏其虚拟功能来实现预期行为。通常,设备驱动的配置可以自动应用或手动发起,并且可以与如在并行或互补控制功能中实例化的主机驱动的配置合作。
由于虚拟USB中心及其虚拟化设备的行为不是由用于常规物理USB中心的常规物理插入/拔出事件决定的,因此变得明显的是,并非在上游端口与虚拟化设备之间的所有内部连接都需要在物理级别(即,USB电气协议)进行精确模拟。这通过常规的USB中心的方式体现,该常规的USB中心用作主机计算机与连接到其下游端口的任何USB设备之间的中间设备;由于在这种配置中USB电气协议没有直接连接在主机计算机和USB设备之间,因此常规的USB中心必须在两侧都处理物理层(即,USB电气协议),并且对上游消息或下游消息执行适当量的处理,以便将分组传递到给定USB设备的端点地址(以及针对USB 3.x中心和设备的其路由地址)的正确端口,使得主机计算机或连接的USB设备不需要知道在它们之间存在逻辑级别的常规的USB中心。
以类似的方式,只要虚拟USB中心的物理上游端口符合USB电气协议,虚拟USB中心内部的其余逻辑就仅需要在逻辑级别对USB中心进行模拟,并且可以绕过物理层来实现虚拟USB中心内的所有逻辑(虚拟化)功能。
图1示出了虚拟USB中心100的实例化的一个实施例的逻辑(高级)实现方式,该虚拟USB中心100包括可以连接到各种虚拟化USB功能(表现为设备)的虚拟“端口”。虚拟USB中心100包括配置逻辑102、耦合到主机计算机106的上游端口104(标记为端口0)以及多个下游虚拟端口108(在该示例中标记为端口1、2、3、……、15)。在虚拟USB中心100的操作期间,一个或多个下游虚拟端口108可以被动态地分配用于虚拟功能(并且逻辑上连接到该虚拟功能),例如,由端口1和端口2分别连接到的虚拟功能110和虚拟功能112所描绘的。通常,可以根据需要配置为其动态分配虚拟下游端口的虚拟功能,如由逻辑块114和逻辑块116所描绘的。
在本文公开的虚拟USB中心(包括虚拟USB中心100)的正在进行的操作期间,可以以类似于将USB设备与常规物理USB中心中的USB端口连接和断开连接的方式来连接和断开连接虚拟功能。这在图1中由与端口3耦合的断开连接的虚拟功能118示出。同时,下游虚拟端口108中的一些可能仍未被动态地分配用于任何虚拟功能,如由端口15所描绘的。这种虚拟下游端口类似于物理USB中心中未连接到任何USB设备的下游USB端口。
虽然图1的虚拟USB中心100包括实现虚拟USB中心需要的组件中的大多数,但图1未示出被实现用于支持主机驱动的控制模型或设备驱动的控制模型的任何组件。图2示出了虚拟USB中心200,该虚拟USB中心200提供了主机驱动的控制模型的实施例,其中其控制功能包含由主机软件使用以配置设备及其虚拟化能力的接口。以类似于图1的虚拟USB中心100的方式,虚拟USB中心200包括配置逻辑202、耦合到主机计算机106的上游端口104(端口0)以及多个下游虚拟端口108(端口2、3、…15)。以类似于图1中示出的方式,端口2已经被动态地分配用于包括可配置逻辑块116的虚拟功能112并且逻辑上连接到该虚拟功能112,并且端口3被示为耦合到断开连接的虚拟功能118。
除了被动态分配的端口之外,虚拟USB中心可以包括被配置作为固定端口的下游端口。如上面所描述的,虚拟USB中心可以包括在特定的固定端口(例如,端口1)处的主机可访问的控制功能,该主机可访问的控制功能包括用于实例化固定端口控制功能并且将分组路由到控制功能/从控制功能路由分组(如同该控制功能是连接到其物理端口的USB设备一样)的逻辑;以及控制功能内的控制端点上的命令接口,该命令接口用于接受并处理来自主机计算机的命令。
前述的示例由虚拟USB中心200实现,该虚拟USB中心200被描绘为还包括固定端口204(端口1),该固定端口204连接到“始终存在”的主机可访问的控制功能206。控制功能206还包括逻辑块208,该逻辑块208包括用于实例化固定端口控制功能的前述逻辑以及控制功能206内的控制端点上的命令接口。
图3示出了增强版本的虚拟USB中心300,该虚拟USB中心300包括若干可选特征(如下面描述的),这些特征向设备添加了更丰富的功能并且通过扩展虚拟化能力来增强其实用性。虚拟USB中心300采用虚拟USB中心的更复杂的实例化,从而利用主机驱动的控制模型和设备驱动的控制模型两者以及适用的实体来支持这些控制模型。
虚拟USB中心300包括配置逻辑302、以及耦合到主机计算机106的上游端口104(端口0)、固定的下游端口204(端口1)以及多个下游虚拟端口108(端口2、3、…15)。固定的下游端口204连接到控制功能206a,该控制功能206a除了逻辑块208之外还包括可选的NVM(非易失性存储器)配置更新模块304。下游虚拟端口2连接到包括模块306的虚拟功能112a,该模块306实现由虚拟功能112a模拟的设备或资源的虚拟视图。如前面所描述的,下游虚拟端口3被描绘为连接到断开连接的虚拟功能118。如图3中进一步示出的,虚拟USB中心300提供对资源和设备和/或存储的配置数据的动态检测。
除了虚拟USB中心200提供的组件之外,虚拟USB中心300还被描绘为包括三个可选组件:外部总线或接口308、内部资源310以及NVM配置存储装置312。外部总线或接口308是可以连接到物理设备(如所描绘的连接到外部总线或接口块314的其他设备)的物理总线或接口。除了所示的实施例之外,虚拟USB中心可以包括多个外部总线或接口,其中的每一个被配置为连接到具有与外部总线或接口兼容的接口的相应的设备。还应注意,当实现多个外部总线或接口时,这些外部总线或接口可以包括不同类型的外部总线或接口,以及实现相同类型的设备或接口。
具有USB虚拟中心的I3C探针
在以下实施例中,公开了一种I3C探针,在该I3C探针中实现了虚拟USB中心,并且该I3C探针包括用作I3C主机控制器的USB设备。此外,该功能是在主机与I3C探针之间的单个USB通道上实现的,同时实现到目标系统中的多个I3C从设备和/或从功能的并发连接,该目标系统经由I3C总线或分配要用于实现I3C总线的边带引脚对的USB Type-C接口连接到I3C探针。
I3C正式称为MIPI并且有时也称为SenseWire并且写为“I3C”,其是由移动行业处理器接口联盟开发的多点串行数据总线的新兴行业标准,该移动行业处理器接口联盟是移动、电子和计算机相关的公司的集合。(为方便起见,MIPI将在本文中称为“I3C”。)I3C以多种方式扩展了I2C的能力,包括更高的带宽和降低的功率,同时还为I2C提供了旧有的支持并且利用了如I2C所使用的两引脚串行总线。如MIPI联盟所描述的,“MIPI是用于将传感器连接到应用处理器的总线接口。MIPI是一项核心传感器集成技术,其可以将设备中来自不同供应商的多个传感器组合在一起,以简化集成并改进成本效率”。MIPI的规范可在https://mipi.org/specifications/i3c-sensor-specification处获得。
图4示出了调试系统,该调试系统包括耦合在主机计算机402(也称为调试测试系统或DTS)与目标系统404之间的I3C探针400。I3C 400包括上游USB端口406(端口0)以及模拟的USB中心408、耦合到控制功能206a的固定的下游虚拟端口204、处理器410、NVM/存储装置412、存储器414、配置逻辑416、路由逻辑417、调试类别(DBC)主机418以及I3C客户端419、I3C主设备420以及外部USB接口(I/F)422和外部I3C接口424。I3C探针400可以可选地包括内部资源426和NVM配置存储装置428。
调试测试系统402包括处理器430,该处理器430具有耦合到系统存储器434的集成存储器控制器(IMC)432以及耦合到USB接口438的集成输入输出(IIO)块436。调试测试系统402还包括非易失性存储器和/或存储装置440、操作系统442和调试测试软件444。通常,调试测试系统402可以使用各种类型的主机计算机系统(包括个人计算机、膝上型计算机、笔记本、服务器和平板计算机)来实现,这些主机计算机系统运行支持USB通信和对USB端点设备的枚举的操作系统(包括但不限于Microsoft WINDOWSTM、Linux、UNIX和Apple OS XTM)。
目标系统404被描绘为包括USB接口446、I3C接口448、USB DBC逻辑450和多个I3C设备452、454和456,当这些I3C设备用作MIPI I3C主/从架构下的从设备时被称为I3C“从设备”,并且分别被标记为从设备“A”、从设备“B”和从设备“C”。目标系统404通常可以包括要对其执行调试测试的某种类型的计算机设备,包括但不限于个人计算机、膝上型计算机、笔记本、服务器、平板计算机以及诸如智能电话之类的各种类型的移动设备。这些目标系统中的每一个都将具有硬件组件,包括处理器、系统存储器、IO设施、存储装置,以及各种软件(包括在硬件上运行的操作系统)。为了方便起见,这些硬件组件和操作系统在平台硬件块460和平台软件(S/W)块462中共同描绘。
调试测试系统402经由通过USB接口406和438促进的USB链路464耦合到I3C探针400。通常,USB链路464以及USB接口406和438可以包括任何现有或将来的USB接口,包括USB2.0、USB 3.0和USB Type-C接口和链路。
在图4示出的实施例中,I3C探针400经由在外部USB接口422与USB接口446之间连接的USB链路466,并且通过在外部I3C接口424与I3C接口448之间连接的I3C总线468与目标系统404通信地耦合。可选地,单个USB Type-C链路可以用于支持I3C探针400与目标系统404之间的通信,如由USB Type-C链路470和对应于USB Type-C接口472和474的虚线框所描绘的。
USB Type-CTM(也称为USB-CTM)定义了24引脚接口,该24引脚接口包括用于正常通信的四个超高速差分对以及用于带外(边带)和调试应用的两个SBU(边带使用)引脚(SBU1和SBU2)。在一个实施例中,超高速差分对中的一个或多个用于支持通过USB链路466的通信,而SBU引脚SBU1和SBU2用于实现对应于I3C总线468的双线式I3C串行总线。
在图4、图4b、图4d和图6中示出的实施例中,I3C从设备用作I3C端点(如本文所使用的,端点表示发送方与接收方之间的通信的最终目的地,注意,端点也可以用作发送方)。通常,I3C从设备可以实现一个或多个功能(在本文中称为从功能或简称为功能)。在图4a、图4c和图6a中示出的替代方法中,I3C从功能用作I3C端点。
例如,图4a示出了连接到实现从功能的I3C从设备的各种从功能,如由用于从设备“A”的从功能A.0和A.1、用于从设备“B”的从功能B.0以及用于从设备“C”的从功能C.0和C.1所描绘的。图4a还示出了与在运行时操作期间动态地激活和停用I3C端点的能力有关的另一方面。该功能使虚拟USB中心能够在连接到主机(例如,DTS 402)时高效地超过(由USB规范定义的)15个下游USB端口限制。如下面将更详细描述的,使得虚拟USB中心能够响应于目标系统中的各种I3C从设备的激活状态的改变,而将下游虚拟端口动态地重新分配用于I3C端点。
图5示出了流程图500,该流程图500示出了当初始连接系统时由DTS 402、I3C探针400和目标系统404执行的操作。该过程在具有DTS引导的开始框502中开始。在引导过程期间,将执行公知的常规固件和操作系统引导操作,包括对DTS主机计算机的各种IO端口和接口的配置枚举。这将包括对任何USB接口的枚举,USB接口包括被检测到并根据其USB类型进行初始配置的USB接口438,如框504中所描绘的。例如,如果USB接口438是USB 3.0接口,则DTS将配置用于与USB接口438通信的适当USB 3.0驱动程序。如果USB接口438是USB-C接口,则将配置USB-C驱动程序并将其用于通信。
接下来,在框506中,插入I3C探针(即,经由适用的USB电缆(例如,USB 3.0电缆或USB-C电缆)连接到USB接口438)。可选地,可以在引导DTS之前插入I3C探针。由于USB支持“热插拔”功能,因此USB接口(以及适用的软件)被设计为检测并自动配置插入USB接口中的各种类型的USB端点设备。因此,响应于(例如,使用适当的USB电缆)I3C探针400被连接到DTS 402,DTS将检测到USB设备已经插入到USB接口438中,如由框508所描绘的。此外,虚拟USB中心408将使用将I3C探针400标识为(物理)USB中心的USB协议来提供信息。换言之,从DTS的角度而言,标准USB中心已经连接(插入)到USB接口438中。
在框510中,使用单独的USB和I3C电缆或单个USB-C电缆将I3C探针耦合到目标系统。可选地,可以在将I3C连接到DTS之前插入这些/这个电缆。在一些实施例中,I3C探针将仅通过USB供电,该USB通常会提供足够的功率来操作大多数USB端点设备(包括USB中心),这取决于有多少个USB设备连接到下游USB端口。作为选项,可以使用单独的电源(例如,DC电源或电池(未示出))为I3C探针供电。注意,对于仅通过USB供电的I3C探针,在将I3C探针插入DTS之前将目标系统插入I3C探针将不会导致I3C探针在此时执行任何操作,因为该I3C探针将无法被供电。
如框512中所描绘的,在经由适用的USB和I3C接口自动执行的一些链路初始化操作之后,将通过USB和I3C链路(或通过单个USB-C链路)建立通信。如框514中所描绘的,一旦建立通信,I3C主设备420将通过I3C总线468进行通信以枚举连接到I3C接口448的任何I3C从设备,并且将对应的I3C活动配置信息转发到控制功能206a。应当认识到,一些I3C从设备也是可热插拔的,并且因此,I3C从设备的数量和类型可以在调试测试操作期间变化,如下面参考图7所描述的。此外,如上面所讨论的,在一些实施例中,I3C从设备(和/或从设备的功能)可以使用从I3C主设备420发送的I3C消息或发送到USB调试类别450的目标系统配置消息来动态地激活和停用。因此,在一个实施例中,传递到控制功能的配置信息仅对应于当前活动的I3C端点。
图4a中示出了这种差异的示例,其中,从设备“C”及其功能C.0和C.1被描绘为处于非活动状态。在一个实施例中,I3C主设备将枚举所有从设备“A”、从设备“B”和从设备“C”(和/或所有从功能A.0、A.1、B.0、C.0和C.1),但将仅仅转发与活动的从设备“A”和从设备“B”或活动的从功能A.0、A.1和B.0(如果从功能用作I3C端点)对应的配置信息。
在框516中,控制功能206a为每个经枚举的I3C端点动态地分配下游虚拟端口。在图4和图6的实施例中,I3C从设备用作I3C端点,并且因此从设备“A”、从设备“B”和从设备“C”在这些附图中被描绘为连接到下游虚拟端口476、478和480(端口2、端口3和端口4)。在图4a和图6a的实施例中,I3C从功能是经枚举的I3C端点,并且因此从功能A.0、A.1和B.0被描绘为连接到下游虚拟端口476、478和480。然后,分别为每个下游虚拟端口配置对应的虚拟功能,如框518中所描绘的。该操作的结果在图4和图6中示为虚拟功能482、484和486,这些虚拟功能分别连接到下游虚拟端口476、478和480。对于图4a和图6a的实施例,虚拟功能被描绘为虚拟功能483、485和487,这些虚拟功能分别连接到下游虚拟端口476、478和480。
在框520中,嵌入在I3C探针400中的虚拟USB中心(为简单起见统称为USB中心408,其详细信息在图6和图6a中示出)使用适用的USB协议通过USB链路464向DTS呈现经枚举的连接的设备/端口配置信息作为虚拟USB配置信息。虚拟USB配置信息将动态分配的下游虚拟端口枚举为物理USB端口,其中这些USB端口中的每一个都与对应的USB功能相关联。另外地,对应于外部USB接口422和USB DBC 450的USB端口(接口)枚举信息也通过USB链路564被传送到DTS。
在框520中接收到发送到DTS的信息后,适用的USB操作系统软件组件(例如,USB软件栈中的USB OS驱动程序)在框522中处理接收到的经枚举的虚拟USB配置信息,以更新OS设备管理器488中的系统配置信息,以及更新未示出的相关联的USB资源配置信息,该USB资源配置信息由操作系统暴露以使得在DTS上运行的软件能够访问那些USB资源。这将包括新的USB设备管理器条目490,如在图4中由针对控制功能206a的标记为“CTRL”的条目,针对相应的I3C从设备“A”、从设备“B”和从设备“C”的“A”、“B”和“C”以及对应于USB DBC 450的“DBC”条目所描绘的,以及如在图4a中由针对控制功能206a的标记为“CTRL”的条目,针对相应的I3C从功能A.0、A.1和B.0的“A.0”、“A.1”和“B.0”以及对应于USB DBC 450的“DBC”条目所描绘的。
图6和图6a示出了架构图,这些架构图分别示出了由图4和图4a中的嵌入在I3C探针400中的虚拟USB中心408实现的物理组件和逻辑组件以及相关联的功能的另一视图。如所示的,虚拟端口481(端口5)被分配用于与DBC主机418相关联的虚拟功能494。在所示实施例中,示出了外部USB Type-C接口472与目标系统404之间的USB Type-C链路470;然而,将理解的是,可以使用单独的USB和I3C链路,例如,图4中示出的和上面所讨论的。
在后续的运行时操作期间,可以通过物理附接和断开连接将各种I3C从设备添加到目标系统或从目标系统移除,或者可以通过激活和停用嵌入在目标系统中的I3C从设备和/或从功能以编程方式将各种I3C从设备添加到目标系统或从目标系统移除。作为响应,I3C探针将检测改变(添加的或移除的I3C从设备和/或(多个)从功能),并且对应的端口/设备配置信息将被生成并提供给DTS,该DTS然后将更新其附接的USB设备信息以反映该改变。在图7的流程图700中描绘了用于实现这些功能的对应操作和逻辑。如由右侧和左侧的循环所描绘的,所示的操作和逻辑以正在进行的方式并行地实现。
在决策框702中,对是否已经添加新的I3C端点做出确定。在实践中,在一些实施例中,将通过I3C接口448或未示出的一些相关联的电路来检测新的I3C从设备的添加(或现有的先前非活动的I3C从设备或从功能的激活);然而,出于说明的目的,将其描绘为决策框702,如回到决策框702的“否”循环示出地持续对其进行评估。可替代地,在I3C主设备通过激活I3C从设备或从功能来实现改变的情况下,I3C主设备将已经具有与更新后的I3C配置有关的信息。响应于检测到添加的I3C从设备,对决策框702的回答将为“是”,并且逻辑将继续执行在框706、514a、516a、518a、520a和522a中的操作,如左侧的外循环中示出的。
在框706中,I3C接口448(或相关联的电路)通过I3C总线468向I3C主设备420发送标识已经添加的新的I3C从设备的信息(如果I3C主设备尚未具有标识添加的I3C端点的配置信息)。在框514a中,I3C主设备420枚举与新的I3C从设备或(多个)从功能相关联的信息,并且将对应的配置信息转发到控制功能206a。在框516a中,控制功能206a针对添加的I3C从设备分配下游虚拟端口,或者可替代地,针对每个添加的从功能分配下游虚拟端口,而在框518a中,针对新的I3C从设备配置对应的虚拟功能,以用作I3C与USB协议之间的桥。在框520a中,虚拟USB中心使用适用的USB协议通过USB链路464向DTS 402呈现包括对虚拟USB配置信息的更新的新连接的设备/端口配置信息。响应于接收到该更新后的虚拟USB配置信息,DTS上的(多个)USB操作系统驱动程序/组件在设备管理器配置中添加对应于添加的I3C从设备(或添加的从功能)的新的USB设备或功能条目,如框522a中所描绘的。然后,逻辑循环回到决策框702,并且重复该过程。
图4b中示出了添加新的I3C从设备的示例。如所示的,已经添加了新的I3C从设备458(也称为I3C从设备“D”)。作为响应,将标识添加的端点“D”的信息通过I3C总线468从I3C接口448转发到I3C主设备420(框706)。I3C主设备420枚举新的I3C从设备,并且将对应的配置信息转发到控制功能206a(框514a)。然后,在框516a中,控制功能206a分配新的下游虚拟端口492(端口6),并且针对新的I3C从设备“D”配置对应的虚拟功能494。然后,虚拟USB中心通过USB链路464向DTS 402呈现与新的I3C从设备“D”相对应的新连接的设备/端口配置信息,其中该信息标识新的USB端口6已经被添加并且用于访问USB端点(设备)“D”(其代表新的I3C从设备“D”)。在框522a中,该信息由OS USB驱动程序处理以更新设备管理器488的配置,该配置现在包括新的USB端点“D”(以灰色示出)。
在图4b中示出了添加I3C从设备的示例。如所示的,已经添加了新的I3C从设备458(也称为I3C从设备“D”)。作为响应,将标识添加的I3C从设备“D”的信息通过I3C总线468从I3C接口448转发到I3C主设备420(框706)。I3C主设备420枚举新的I3C从设备,并且将对应的配置信息转发到控制功能206a(框514a)。然后,在框516a中,控制功能206a分配可用的下游虚拟端口492(端口6),并且针对新的I3C从设备“D”配置虚拟设备的对应虚拟功能494。然后,虚拟USB中心通过USB链路464向DTS 402呈现与I3C从设备“D”的虚拟化表示相对应的新连接的设备/端口配置信息,其中该信息标识USB端口6已经被添加并且用于访问USB端点(设备)“D”(其代表新的I3C从设备“D”)。在框522a中,该信息由OS USB驱动程序(和/或其他USB软件栈组件)处理,以更新设备管理器488的配置,该配置现在包括新的USB端点“D”(以灰色示出)。对应的USB设备配置信息还由操作系统暴露,以使得在DTS上运行的软件能够使用DTS与I3C探针之间的USB通信来访问I3C从设备“D”。
如上面所讨论的,还支持I3C从设备和/或对应的从功能的移除。出于说明的目的,决策框704描绘了对此类事件的检测,其中对是否已经移除I3C端点/功能做出确定。如果答案为“是”,则逻辑继续执行在框708、514b、516b、520b和522b中描绘的操作;否则,逻辑循环回到决策框704。
在框708中,I3C接口448(或相关联的电路)通过I3C总线468向I3C主设备420发送标识已经被移除的I3C端点的信息。在框514b中,I3C主设备420标识现有的I3C端点已经被移除,并且将对应的配置信息转发到控制功能206a。在框516b中,控制功能206a将用于移除的I3C端点的下游虚拟端口断开连接。在框520b中,虚拟USB中心通过USB链路464向DTS 402呈现更新后的连接的设备/端口配置信息,该信息标识与已经被移除的I3C端点相对应的虚拟USB设备。响应于接收到该信息,DTS上的(多个)USB操作系统驱动程序/组件在设备管理器配置中移除与已经被移除的I3C端点相对应的对应USB设备条目。然后,逻辑循环回到决策框704,并且重复该过程。
图4c中示出了说明由于移除I3C从设备而导致的配置的改变的示例。在该示例中,I3C从设备“C”已经被移除,这可以由I3C接口448或未示出的其他相关联的电路(或通过某种其他手段)检测到。作为响应,I3C接口448(或相关联的电路)将通过I3C总线468向I3C主设备420发送标识I3C从设备“C”已经被移除的信息(框708)(如果I3C主设备尚未具有该信息)。然后,在框514b中,I3C主设备420会将指示I3C从设备“C”已经被移除的、对应的更新后的配置信息转发到控制功能206a。然后,在框516b中,控制功能206a将用于I3C从设备“C”的下游虚拟端口(在这种情况下为端口4)断开连接。由于可以在给定会话期间的某个后续点重新附接(或以其他方式重新激活)I3C从设备“B”,因此在一个实施例中,控制功能将虚拟功能484标记为非活动的。可替代地,释放被分配用于虚拟功能484的任何资源,这导致虚拟功能484的移除。
在框520b中,虚拟USB中心向DTS 402呈现指示USB端点“C”已经被移除的更新后的连接的设备/端口配置信息。然后,(多个)USB操作系统驱动程序/组件向设备管理器480提供对应的更新后的USB连接的设备信息,这从设备管理器视图中移除USB端点“C”。
除了添加和移除I3C从设备之外,还可以添加和移除包括从功能的I3C端点。此外,在一些情况下,可能有必要移除I3C从设备和/或其功能中的一个或多个以容纳新的从设备和/或功能,同时保持在USB中心的15个下游端口限制之内。
图4d中示出了添加和移除包括从功能的I3C端点的示例。在该示例中,从设备“B”及其功能B.0被移除(例如,如果从设备“B”被嵌入目标系统404中则被停用,或者如果从设备“B”被附接到目标系统则被断开连接),而通过将从设备“C”的激活状态从先前的非活动状态改变为活动状态来添加从设备“C”及其功能C.0和C.1。响应于移除功能B.0,将反映该改变的更新后的连接的设备/端口配置信息提供给DTS 402,这导致功能B.0从设备管理器488中的USB设备/功能的列表中移除。
添加功能C.0和C.1与添加I3C从设备实现类似的改变,除了虚拟端口被分配用于添加的功能而不是添加的从设备之外。如图4d中示出的,虚拟端口492(端口6)被分配用于从功能C.0,并且配置了对应的虚拟功能491。类似地,虚拟端口495被分配用于从功能C.1,并且对应的虚拟功能496被配置用于从功能C.1。然后,将对应的连接的设备/端口配置信息提供给DTS 402,这导致功能C.0和C.1被添加到设备管理器488中的USB设备/功能的列表中。
虚拟USB中心的另一方面是它实现了分层架构,该分层架构从USB主机中抽象底层功能。这由图8中的分层架构800示出,该分层架构800包括设备呈现层802、功能虚拟化层804和功能实现层806。如所示的,在设备呈现层802中实现端口0(USB上游端口)和虚拟USB中心,该虚拟USB中心包括将数据路由到虚拟下游端口的路由逻辑。在功能虚拟化层804中实现功能虚拟化,该功能虚拟化包括下游虚拟端口(描绘为端口1-5)和虚拟功能以及与下游虚拟端口相关联的设备,该功能虚拟化层804用作从设备呈现层802抽象功能实现层806中的功能的细节的抽象层。在功能实现层806中实现包括I3C主设备420和DBC主机418在内的功能。该抽象的分层方法使得主机能够使用标准USB软件和硬件组件(包括标准USB驱动程序)。
图9示意性地描绘了根据一个实施例的在I3C探针400中实现的通信数据路径。如所示的,DTS 402经由USB电缆902连接到I3C探针400上的端口0(上游USB端口406)。通常,USB电缆902可以是USB Type-A到USB Type-B电缆,或者可以使用USB Type-C电缆,这取决于实现方式的带宽要求和/或其他考虑因素。例如,使用Type-C电缆允许SBU信号在非SBUUSB引脚上传回。在所示的实施例中,USB Type-C电缆906用于经由I3C探针和目标系统上的相应的USB Type-C接口472和474将I3C探针400连接到目标系统404。
如所示的,DBC主要是直通路径;然而,其与常规的USB中心(其将阻塞DBC)略有不同地处理。I3C和DBC功能经由被分配用于给定的I3C从设备或功能以及DBC功能的虚拟端口向上与相关联的虚拟设备抽象层通信。在该示例中,虚拟功能对应于I3C从功能A.0并且使用端口2,而DBC功能使用端口5。其他I3C端点将使用类似的路径,例如,由图4和图4a-4d中的端口3、4、6和7所示出的。如上面讨论的并且如图9中示出的,可以通过USB Type-C电缆(和接口)发送I3C主设备420与目标中的I3C从设备和功能之间的I3C通信,该USB Type-C电缆(和接口)也用于DBC主机418与目标系统404中的USB DBC 450之间的通信。
在图4和图4a-4d中示出的实施例中,使用在嵌入式处理器上执行的固件和/或软件来实现由虚拟USB中心实现的各种功能。然而,这仅是示例性的,因为可以使用用于实现本文所描述的虚拟USB中心实施例的功能的其他模块。
例如,虚拟USB中心架构可以以多种格式实现,包括但不限于以下格式:
·定制设计的ASIC,以在外部设备(例如,USB中心、“对接站”或“端口复制器”,或任何其他集成或复合设备)中使用;
·嵌入在片上系统(SoC)、PCH(平台控制中心)或其他系统互连的硅片中作为标准PC平台或其他计算平台的内部设计的特征的IP(知识产权)块或逻辑功能单元(或多个IP块或功能单元);
·经由接口或逻辑“垫片”与其他可编程逻辑器件或微控制器集成的现有或将来的USB设备控制器(其可以是可编程的或可定制化的)的组合;
·在可编程逻辑器件(例如,一个或多个现场可编程门阵列(FPGA)和/或微控制器)中实现的解决方案;
·用于实现嵌入式逻辑的其他模块,例如,IP块、逻辑功能单元、嵌入式处理元件(处理器、微控制器)、FPGA等中的一个或多个的组合。
如本领域技术人员将认识到的,虚拟USB中心的一些方面(例如,物理端口和/或接口(USB上游端口和任何外部下游端口或接口))可以使用公知的组件和/或使用易于获得许可的IP块来实现。因此,本文不描述用于实现这种公知的组件和电路的细节。
除了前述实施例之外,虚拟USB中心可以实现各种其他特征和能力,如以下段落所概述的。
增强的连通性
在一些实施例中,可以实现与增强的连通性有关的以下特征:
·多个物理上游端口,其可以连接到多于一个主机计算机,以用于对可以如期望地在连接的主机计算机之间进行切换的虚拟功能的灵活配置。
·支持将来的USB 3.x规范或其他USB代(尚未定义)。
·支持USB On-The-Go(OTG)规范。
·在用于将物理上游端口连接到主机计算机的相同USB电缆上支持DisplayPort或Thunderbolt业务。
·对下游USB端口的“直通”支持。
·对专用的DisplayPort或Thunderbolt下游端口的桥支持。
·支持附接到物理下游端口(如果存在的话)的I/O引脚的直接连线的USB下游设备。
功率和性能
在一些实施例中,可以实现与功率和性能有关的以下特征:
·用于经由USB连接到移动设备的功率递送下游端口(其可以是“仅充电”的),以便递送功率。
·支持USB功率递送能力,包括基于其当前配置状态以及其虚拟功能的预期或历史使用模式以及在对其内部资源或外部资源的访问期间消耗的负载来报告整个USB设备的实际或估计的功耗。
·支持节流协议,以通过动态地降低虚拟功能的性能或能力来限制功耗,以便保持在由主机计算机(或其上方的另一USB中心,如果是这样连接的)提供的功率限制之内。
·USB桥类设备,其可以管理对多个虚拟化下游设备的功率递送和认证。
·实现参数(经由“条带”、保险丝、跳线或其他手段),其用于减少可用动态端口的数量,以便对具有更少端口的USB中心进行模拟,或调整其他内部逻辑结构(例如,缓冲器或队列)的运行时使用。
·逻辑参数或定义,其用于减少实现的动态端口的数量或其他内部逻辑结构(例如,缓冲器或队列)的大小,以便减小逻辑实现方式的整体大小、针对特定用例定制化实现方式或者限制功能以符合功率或热要求。
·配置参数,其用于实例化单个或多个事务翻译器中心单元的使用,以用于实例化低速虚拟功能并将其以各种布置桥接到高速中心的目的,以便维持与动态端口上的各种模拟的设备的兼容性。
·配置或实现参数,其用于选择虚拟USB中心的USB总线速度,并且选择该虚拟USB中心是支持单一电气协议的单代设备(例如,USB 2.0)还是可以支持用于SuperSpeed(或其派生物)和高/全/低速(其是符合USB 3.x的中心设备的标准)两者的单独的内部中心逻辑的多代设备(例如,USB 3.x)。
仲裁和执行
在一些实施例中,可以实现与仲裁和执行有关的以下特征:
·仲裁逻辑,其用于出于基于期望的标准对某些虚拟端口、业务类别、使用模式或其他类型的分组进行优先化的目的,跨多个虚拟功能共享对任何内部资源或外部资源的访问。
·仲裁或会话管理逻辑,其用于帮助协调对内部资源的一部分或虚拟功能与特权“管理功能”(其可以是控制功能的一部分)之间的外部总线/接口的共享访问,而不会破坏任何内部存储的数据或外部驱动的事务。
·策略执行逻辑,其用于确保取决于访问模式或其他活动配置参数来应用虚拟功能(或特权“管理功能”或控制功能)的访问策略。
·用于实现与下游端口上的虚拟功能的提供和使用有关的访问控制的逻辑。该逻辑可以包括诸如认证、副本保护、解锁和/或加密之类的功能。根据这些资源的实现方式,该逻辑也可以与内部资源或外部资源(如果使用了)结合使用,以协调或直通任何访问控制操作。
调试和可见性
在一些实施例中,可以实现与调试和可见性有关的以下特征:
·运行时逻辑(例如,“信号量(semaphore)”),其用于当内部错误、(针对外部资源的)总线错误或(针对内部资源的)操作错误将阻止该资源在其当前配置状态中继续标称使用时停止虚拟端口(如由虚拟功能所抽象的)。该运行时逻辑还可以包括用于解决错误并且使设备以及其资源(如果有)回到其标称操作状态的命令。
·运行控制或调试命令,其用于通过实现诸如每端口停止/恢复之类的特征、影响控制逻辑或任何虚拟功能的行为的参数或用于管理任何存储的内部配置的特殊接口(如果使用设备驱动的控制模型)来帮助测试设备的内部逻辑。
·监视逻辑,其用于提供对端口活动、活动状态(经由指示灯或设备上的显示器)或示出设备的内部行为的详细输出(经由带内接口或某种其他专用通道)的调试跟踪,以提供对设备的内部状态的附加可见性。
·内部逻辑,其用于从控制功能的端点接口报告连接的虚拟端口的USB地址和USB路由路径,以出于相关性和更丰富的设备发现的目的帮助软件和驱动程序理解在逻辑上连接(即,以同一USB设备实现)了哪些控制功能和虚拟功能。
·配置(无论是设备内的配置还是软件控制的配置),其用于降低虚拟端口的速度或整体性能,以引起各种测试条件或帮助业务管理(例如,仲裁或服务质量)。
动态检测
在一些实施例中,可以实现与动态检测有关的以下特征:
·以非易失性存储设备形式的持久数据,其用于存储实例化的虚拟端口/功能状态的特定配置,并且当设备被重置、重新插入或移动到新的主机计算机时自动地重新实例化。
·内部资源(例如,NAND闪存、存储设备或其他缓冲器),其可以根据针对控制端点中的命令接口的参数在内部进行分区或细分,并且部分地指派给虚拟功能。该内部资源可以采用仲裁器或其他逻辑来管理从多个功能对内部资源的并发访问。该内部资源也可以通过控制功能的端点接口作为虚拟化子集或利用更高级别的“主设备”访问模式进行访问或管理。
·外部接口(例如,总线或其他I/O能力),其可以根据针对控制端点中的命令接口的参数进行虚拟分区或以其他方式进行抽象以用于从虚拟功能进行访问。该外部接口可以采用内部状态或其他逻辑来暴露外部连接的设备并且抽象总线或接口事务的封装,和/或该外部接口可以采用仲裁器或其他逻辑来管理从多个功能对外部接口的并发访问。这种外部接口也可以由控制功能的端点接口访问或管理(参见上文)。
符合性和验证
在一些实施例中,可以实现与符合性和验证有关的以下特征:
·配置或实现参数,其用于实例化若干不同类型的虚拟功能中的一个,该虚拟功能可以符合已发布的USB设备类别规范或实现任何其他任何供应商特定的行为,并且将(如配置或硬编码地)用作该特定类别或实现方式的虚拟USB设备。该配置或实现参数还可以包括逻辑,该逻辑用于确定特定的虚拟功能是否具有标准的设备类别,或是否实现多功能或“复合”功能,从而使用其描述符根据如在实例化时所确定的各种接口和端点的类别正确报告主机计算机可访问的各种接口和端点。
·特权管理接口,经由带内连接(即,经由固定控制端口上的控制功能暴露的特殊端点接口)或带外连接(即,调试探测端口)。
·固件更新支持(如果适用),其用于供设备制造商经由任何支持的方法向设备发布错误修复或特征增强。该固件更新支持还可以包括只读接口(经由控制功能的端点接口)以查询当前运行的固件的版本(以用于可见性),以及包括配置协议以根据设备制造商的协议或标准USB固件更新规范进入固件更新模式。
增强的虚拟化
在一些实施例中,可以实现与增强的虚拟化有关的以下特征:
·用于实现“嵌套”或“多级”中心架构的逻辑,以使用模拟的中心逻辑的附加级别进一步扩展虚拟端口的数量。该逻辑可能受到对USB总线的总体系统限制。该逻辑也可以采用较低级别的虚拟USB中心来动态或静态地实例化。该逻辑可以用于智能地检测系统支持中心的多少个级别,或者可以如期望地被配置为以单级别或多级别模式操作。
·用于支持在主机PC上的隔离软件域或虚拟机管理器(“管理程序”)环境中使用虚拟中心的逻辑。该逻辑可以采用不同级别的抽象或分段,以确保特定的域或虚拟机仅可以访问其已经被授权进行显式访问的虚拟功能。也可以提供对当前或将来的虚拟化标准的支持。
示例用例
以下简要地描述了可以实现虚拟USB中心的一些示例用例:
USB调试适配器,其连接到外部接口(例如,I3C、以太网或CAN),并且提供其他“从”设备或“远程”设备的虚拟化视图,每一个“从”设备或“远程”设备被映射到每个虚拟功能;每个功能都可以具有主机计算机可访问的端点接口,为此,特定事务可以在外部总线上的特定端口或标识符处针对特定的从设备/远程设备。
USB调试探针,其在目标系统上暴露各种系统资源并且模拟各种标准USB设备类别功能,例如,(遵循标准HID类别的)USB键盘,该USB键盘可以出于发射详细的、人类可读的调试日志的目的将击键发送给主机计算机,或跟踪到主机计算机上的任何文本编辑器中的数据流。
USB连接的“PC Stick”设备,其包含其自身的CPU、存储装置和存储器,并且将各种资源暴露为可配置的虚拟端口以由主机计算机使用。
USB调试设备,其创建连接的目标系统的磁盘到主机计算机的虚拟映射,或者对存储在目标系统RAM中的磁盘进行模拟,并且将该磁盘暴露为如同(例如)该磁盘是连接到主机计算机的USB闪存驱动器一样。
USB以太网控制器,其针对到网络上特定目的地的每个活动的VPN或者IPSec连接创建虚拟端口,因此将单个虚拟端口暴露给虚拟机以进行隔离;该USB以太网控制器还可以跨其所有虚拟端口启用服务质量(QoS)业务整形和管理、在聚合级别收集调试信息或者高效地限制每端口带宽或在需要时引起网络错误,以针对鲁棒性全面测试IPSec或VPN软件栈。
USB连接的以太网路由器或无线接入点,其创建虚拟端口以允许主机计算机管理多个子网、无线网络或业务类别。
USB闪存驱动器(遵循标准大容量存储类别或任何其他类似的类别),其允许创建虚拟磁盘设备或分区,虚拟磁盘设备或分区中的每一个均表现为其自身的虚拟功能,并且可以作为其自身的磁盘状实体映射到主机计算机(可能在启用设备级别加密的情况下);虚拟USB设备的配置也可以持久地存储在USB闪存本身中,使得用户在断开连接并重新连接物理设备(或重新引导系统,或将其移动到不同的PC)之后,不需要重新提供磁盘。USB闪存驱动器还可以模拟USB存储设备(例如,媒体卡读取器、光盘驱动器或软盘驱动器),以便提供与要求USB存储设备的主机软件的兼容性。
USB视频显示设备(例如,OLED监视器),其包含物理显示器并且实例化多个虚拟监视器,因此对主机计算机表现为灵活的多监视器设置,以用于在不要求多个物理监视器的情况下在有效场景中测试操作系统及其用户应用(例如,Microsoft的PowerPoint显示视图对演示者视图)的多显示能力的目的;每个虚拟监视器的几何形状、缩放因子和物理显示器上的屏幕上位置都可以通过显示设备本身上的软件驱动程序和/或物理控件定制化。
符合HID(人类接口设备)规范的USB辅助技术设备,其具有可以被配置并虚拟化的输入接口和输出接口,以为具有受限的身体能力或对电动机控件的其他约束(这防止了用户使用典型的USB输入设备)的用户提供各种输入方法;虚拟化能力将用于实例化各种控制方法,这些控制方法可以被定制化用于其独特需要并且仍然提供与主机计算机的软件兼容性。
USB加密加速器,其中每个虚拟功能可以被配置为经由其虚拟化端点接口向主机计算机暴露不同的算法,以由向设备内部的协处理器的集群提交请求以执行加密、认证或其他高级任务(例如,加密货币挖掘)的软件使用。
USB协议分析器或设备符合性测试器,其在“启动(bring-up)”或“插拔大会(plug-fest)”活动期间使用以模拟其他下游设备,或在开发或测试新的USB主机或设备时引起某些条件或约束;这样的设备可以包括对脚本化的动作的支持,以便生成并执行作为自动化的测试框架的一部分的可重复的测试。
虽然已经参考特定实现方式描述了一些实施例,但是根据一些实施例,其他实现方式也是可能的。另外地,附图中示出和/或本文描述的元件或其他特征的布置和/或次序不一定以图示和描述的特定方式布置。根据一些实施例,许多其他布置是可能的。
在附图中示出的每个系统中,在一些情况下,元件可以各自具有相同的附图标记或不同的附图标记,以显示所表示的元件可以是不同的和/或相似的。然而,元件可能足够灵活以具有不同的实现方式并且与本文示出或描述的系统中的一些或全部一起工作。附图中示出的各种元件可以是相同的或不同的。哪个元件被称为第一元件以及哪个元件被称为第二元件是任意的。
在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其衍生词。应该理解的是,这些术语并不旨在彼此同义。而是,在特定实施例中,“连接”可以用于指示两个或更多个元件彼此直接物理或电接触。“耦合”可以表示两个或更多个元件直接物理或电接触。然而,“耦合”也可以表示两个或更多个元件不彼此直接接触,但仍然彼此协作或交互。另外地,“通信地耦合”表示使得可以或可以不彼此直接接触的两个或更多个元件能够彼此通信。例如,如果组件A连接到组件B,组件B进而连接到组件C,则组件A可以使用组件B作为中间组件通信地耦合到组件C。
实施例是本发明的实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用表示结合这些实施例描述的特定特征、结构或特性被包括在至少一些实施例中,但是不一定是本发明的所有实施例。“实施例”、“一个实施例”或“一些实施例”的各种出现不一定全部指代同一实施例。
本文描述和示出的所有组件、特征、结构、特性等不一定被包括在特定实施例或多个实施例中。如果说明书陈述例如组件、特征、结构或特性“可以”、“可能”、“能够”或“能”被包括在内,则不一定要求包括该特定的组件、特征、结构或特性。如果说明书或权利要求书提及“一(a)”或“一个(an)”元件,则不表示仅存在元件中的一个。如果说明书或权利要求书提及“附加的”元件,则不排除存在附加元件中的多于一个。
这里,算法通常被认为是导致期望结果的动作或操作的自一致序列。这些动作或操作包括对物理量的物理操纵。通常但不是必须的,这些量采取能够被存储、传输、组合、比较和以其他方式操纵的电信号或磁信号的形式。主要出于通用的原因,有时已经证明将这些信号称为位、值、元素、符号、字符、项目、数字等是方便的。然而,应该理解,所有这些和类似术语均与适当的物理量相关联,并且仅为应用于这些量的方便标记。
如上面所讨论的,可以通过对应的软件和/或固件组件和应用来促进本文的实施例的各个方面,例如,由嵌入式处理器等执行的软件和/或固件。因此,本发明的实施例可以用作或支持这样的软件程序、软件模块、固件和/或分布式软件:其在某种形式的处理器、处理核心或嵌入式逻辑或者在处理器或核心上运行的虚拟机上执行,或者在非暂时性计算机可读或机器可读存储介质上或其内以其他方式实现或完成。非暂时性计算机可读或机器可读存储介质包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制。例如,非暂时性计算机可读或机器可读存储介质包括以计算机或计算机器(例如,计算设备、电子系统等)可访问的形式提供(即,存储和/或发送)信息的任何机制,例如,可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪速存储器设备等)。内容可以是直接可执行的(“对象”或“可执行的”形式)、源代码或差异代码(“增量”或“补丁”代码)。非暂时性计算机可读或机器可读存储介质还可以包括可以从其下载内容的存储装置或数据库。非暂时性计算机可读或机器可读存储介质还可以包括在销售或交付时其上存储有内容的设备或产品。因此,交付具有存储的内容的设备或提供内容以通过通信介质下载可以被理解为提供一种制品,该制品包括具有本文描述的这种内容的非暂时性计算机可读或机器可读存储介质。
由本文描述的各种组件执行的操作和功能可以通过在处理元件上运行的软件经由嵌入式硬件等或者硬件和软件的任意组合来实现。这样的组件可以被实现为软件模块、硬件模块、特殊用途硬件(例如,专用硬件、ASIC、DSP等)、嵌入式控制器、硬连线电路、硬件逻辑、可编程逻辑(例如,FPGA)等。可以经由包括非暂时性计算机可读或机器可读存储介质的制品来提供软件内容(例如,数据、指令、配置信息等),该制品提供表示可以被执行的指令的内容。内容可以导致计算机执行本文描述的各种功能/操作。
如本文中所使用的,由术语“……中的至少一个”连接的项目列表可以表示所列项目的任何组合。例如,短语“A、B和C中的至少一个”可以表示A;B;C;A和B;A和C;B和C;或A、B和C。
本发明的示出的实施例的以上描述(包括摘要中描述的内容)并非旨在穷举或将本发明限制为所公开的精确形式。虽然本文出于说明的目的描述了本发明的特定实施例以及其示例,但是如相关领域技术人员将认识到的,在本发明的范围内,各种等效修改是可能的。
可以根据以上具体实施方式对本发明进行这些修改。在所附权利要求书中使用的术语不应被解释为将本发明限制为在说明书和附图中公开的特定实施例。而是,本发明的范围将完全由所附权利要求书确定,所附权利要求书将根据权利要求解释的既定原则来解释。
Claims (25)
1.一种包括通用串行总线(USB)虚拟中心的装置,所述装置包括:
USB上游端口;
至少一个外部总线或外部接口;
其中,所述装置被配置为,
检测一个或多个设备,所述一个或多个设备被连接到所述至少一个外部总线或外部接口或者被嵌入或附接到连接到至少一个外部设备或外部接口的计算设备或计算系统,所述一个或多个设备中的至少一个设备包括非USB设备,其中,每个非USB设备被配置为执行一个或多个功能;
生成虚拟USB配置信息,所述虚拟USB配置信息与一个或多个非USB设备中的至少一个非USB设备以及被配置为由所述一个或多个非USB设备中的一个非USB设备执行的所述一个或多个功能相对应;以及
当主机经由USB链路被连接到所述USB上游端口时,向所述主机呈现所述虚拟USB配置信息,
其中,所述虚拟USB配置信息使得在所述主机上运行的软件能够访问以下各项中的至少一个:
所述一个或多个非USB设备;以及
被配置为由所述一个或多个非USB设备执行的所述一个或多个功能,
使用采用USB协议的通信,所述通信通过所述USB链路在所述主机与所述装置之间被发送。
2.根据权利要求1所述的装置,还包括被连接到下游虚拟端口的控制功能,其中,所述控制功能包括用于控制所述虚拟USB中心中的虚拟端口的接口,并且其中,所述虚拟USB配置信息还包括与所述控制功能相对应的配置信息。
3.根据权利要求1或2所述的装置,其中,所述装置被配置为:
针对每个非USB设备生成虚拟USB配置信息,所述虚拟USB配置信息包括:
a)被连接到所述虚拟USB中心中的下游虚拟端口的虚拟USB设备;
b)被连接到所述虚拟USB中心中的下游虚拟端口的虚拟USB设备,以及与非USB设备被配置为执行的所述一个或多个功能相对应的一个或多个虚拟功能;或者
c)针对非USB设备被配置为执行的所述一个或多个功能中的每一个功能,被连接到所述虚拟USB中心中的下游虚拟端口的虚拟USB设备或虚拟USB功能;以及
向所述主机呈现包括所述虚拟USB配置信息的USB配置信息。
4.根据权利要求1或2所述的装置,其中,所述一个或多个非USB设备中的至少一个非USB设备是I3C从设备或包括I3C从设备。
5.根据权利要求4所述的装置,还包括:
I3C主设备;以及
I3C客户端,其被配置为用作USB与I3C协议之间的桥。
6.根据权利要求4所述的装置,其中,所述I3C从设备被连接到包括I3C总线的所述装置上的外部接口。
7.根据权利要求6所述的装置,其中,所述至少一个外部总线或外部接口包括外部USBType-C接口,其中,所述I3C从设备被包括在包括所述I3C从设备的计算设备中,并且其中,在所述USB Type-C接口中的SBU1引脚和SBU2引脚被用于实现I3C总线,通过所述I3C总线发送信号以促进所述装置与所述I3C从设备之间的通信。
8.根据权利要求7所述的装置,其中,所述计算设备包括嵌入式USB设备或USB功能,并且所述USB Type-C接口被用于使得所述装置能够与所述嵌入式USB设备或USB功能进行通信。
9.根据权利要求1或2所述的装置,其中,所述至少一个外部总线或外部接口包括外部USB接口,并且其中,所述装置还被配置为:
检测被连接到所述外部USB接口的USB设备或者被嵌入到连接到所述外部USB接口的第二装置中的USB功能;
生成与所述USB设备或嵌入式USB功能相对应的USB配置信息;以及
通过所述USB链路向所述主机呈现所述USB配置信息,
其中,所述USB配置信息使得在所述主机上运行的软件能够使用USB协议访问所述USB设备或所述嵌入式USB功能。
10.根据权利要求1或2所述的装置,还被配置为:
实现与物理USB设备或USB功能相对应的虚拟功能;
向所述主机呈现与所述虚拟功能相对应的虚拟USB配置;以及
使用USB协议促进所述虚拟功能与在所述主机上运行的软件之间的通信。
11.一种方法,包括:
实现具有上游USB端口和至少一个外部总线或外部接口的虚拟USB中心;以及
使得在经由USB链路被连接到所述上游USB端口的主机上运行的软件能够与以下各项中的至少一个进行通信:
被连接到所述虚拟USB中心上的外部总线或外部接口的第一非USB设备;
被嵌入到连接到所述虚拟USB中心上的外部总线或外部接口的计算设备中的第一非USB设备;以及
由被连接到所述外部总线或外部接口的所述第一非USB设备实现的或者由被嵌入到所述计算设备中的所述第一非USB设备实现的一个或多个功能。
12.根据权利要求11所述的方法,还包括:
检测所述第一非USB设备被连接到外部总线或外部接口,或者检测其中嵌入有所述第一非USB设备的所述计算设备被连接到外部总线或外部接口;
生成虚拟USB配置信息,所述虚拟USB配置信息与所述第一非USB设备以及被配置为由所述第一非USB设备执行的所述一个或多个功能中的至少一个相对应;以及
向所述主机呈现所述虚拟USB配置信息,
其中,所述虚拟USB配置信息被配置为使得在所述主机上运行的软件能够使用通过所述USB链路使用USB协议发送的数据传输与所述第一非USB设备以及被配置为由所述第一非USB设备执行的所述一个或多个功能中的至少一个进行通信。
13.根据权利要求12所述的方法,还包括:
生成与所述第一非USB设备相对应的虚拟USB配置信息,所述虚拟USB配置信息包括:
a)被连接到所述虚拟USB中心中的下游虚拟端口的虚拟USB设备;
b)被连接到所述虚拟USB中心中的下游虚拟端口的虚拟USB设备,以及与该非USB设备被配置为执行的所述一个或多个功能相对应的一个或多个虚拟功能;或者
c)针对所述非USB设备被配置为执行的所述一个或多个功能中的每一个功能,被连接到所述虚拟USB中心中的下游虚拟端口的虚拟USB设备或虚拟USB功能。
14.根据权利要求11-13中任一项所述的方法,其中,所述虚拟USB中心包括被连接到下游虚拟端口的控制功能,并且其中,所述虚拟USB配置信息还包括与所述控制功能相对应的配置信息。
15.根据权利要求12或13所述的方法,还包括:
检测以下各项中的一个:
第二非USB设备已经被连接到所述虚拟USB中心的外部总线或外部接口,
嵌入到计算设备内的第二非USB设备已经被激活;以及
第二非USB设备已经被附接到所述计算设备,
其中,所述第二非USB设备被配置为执行一个或多个功能;
生成与所述第二非USB设备以及被配置为由所述第二非USB设备执行的所述一个或多个功能中的至少一个相对应的更新后的虚拟USB配置信息;以及
向所述主机呈现所述更新后的虚拟USB配置信息,
其中,所述更新后的虚拟USB配置信息被配置为使得在所述主机上运行的所述软件能够使用通过所述USB链路使用所述USB协议发送的数据传输与所述第二非USB设备以及被配置为由所述第二非USB设备执行的所述一个或多个功能中的至少一个进行通信。
16.根据权利要求15所述的方法,还包括:
生成与所述第二非USB设备相对应的虚拟USB配置信息,所述虚拟USB配置信息包括:
a)被连接到所述虚拟USB中心中的下游虚拟端口的虚拟USB设备;
b)被连接到所述虚拟USB中心中的下游虚拟端口的虚拟USB设备,以及与该非USB设备被配置为执行的所述一个或多个功能相对应的一个或多个虚拟功能;或者
c)针对所述非USB设备被配置为执行的所述一个或多个功能中的每一个功能,被连接到所述虚拟USB中心中的下游虚拟端口的虚拟USB设备或虚拟USB功能。
17.根据权利要求15所述的方法,其中,所述虚拟USB中心在包括I3C主设备的I3C探针装置中被实现,并且所述非USB设备包括I3C从设备,所述方法还包括实现USB到I3C桥以使得所述主机能够使用所述USB协议与所述I3C主设备通信。
18.根据权利要求17所述的方法,所述至少一个外部总线或外部接口包括USB Type-C接口,并且其中,所述I3C从设备被嵌入到经由USB Type-C电缆被连接到所述I3C探针装置的计算设备中,所述USB Type-C电缆被连接到所述USB Type-C接口,并且其中,在所述USBType-C接口中的SBU1引脚和SBU2引脚被用于实现I3C总线,通过所述I3C总线发送信号以促进所述I3C探针装置与所述I3C从设备之间的通信。
19.根据权利要求18所述的方法,其中,所述计算设备包括嵌入式USB设备或USB功能,并且所述USB Type-C接口被用于使得在所述主机系统上运行的软件能够使用USB协议与所述嵌入式USB设备或USB功能进行通信。
20.一种系统,包括:
主机计算机,其具有通用串行总线(USB)接口,并包括在其上运行软件的操作系统;以及
具有虚拟USB中心的装置,并且所述装置包括:
USB上游端口,其经由USB电缆被连接到所述主机计算机上的所述USB接口,从而形成USB链路;
至少一个外部总线或外部接口;以及
控制功能被连接到的第一下游虚拟端口,所述控制功能包括用于控制所述虚拟USB中心中的虚拟端口的接口;
其中,所述装置被配置为:
检测被连接到所述至少一个外部总线或外部接口的一个或多个设备,所述一个或多个设备中的至少一个设备包括非USB设备,其中,每个非USB设备被配置为执行一个或多个功能;
生成虚拟USB配置信息,所述虚拟USB配置信息与所述一个或多个非USB设备中的至少一个非USB设备以及被配置为由所述一个或多个非USB设备中的一个非USB设备执行的所述一个或多个功能相对应;以及
向所述主机计算机呈现所述虚拟USB配置信息,
并且其中,所述虚拟USB配置信息由所述主机计算机用于使得在所述主机计算机上运行的软件能够访问以下各项中的至少一个:
所述一个或多个非USB设备;以及
被配置为由所述一个或多个非USB设备执行的所述一个或多个功能,
使用通过所述USB链路并且使用USB协议在所述主机计算机与所述装置之间发送的USB通信。
21.根据权利要求20所述的系统,其中,所述装置包括I3C主设备,并且至少一个非USB设备包括I3C从设备,所述I3C从设备被耦合到所述装置上的外部总线或外部接口,或者被嵌入到耦合到所述装置上的外部总线或外部接口的计算设备中,并且其中,所述装置被配置为实现USB到I3C桥,以促进所述主机计算机与所述I3C主设备之间的通信。
22.根据权利要求21所述的系统,其中,所述至少一个外部总线或外部接口包括I3C总线,并且其中,一个或多个I3C从设备被嵌入到经由所述I3C总线耦合到所述装置的计算设备中。
23.根据权利要求21所述的系统,其中,所述至少一个外部总线或外部接口包括外部USB Type-C接口,其中,一个或多个I3C从设备被嵌入到经由USB Type-C电缆耦合到所述装置的计算设备中,所述USB Type-C电缆被耦合到所述外部USB Type-C接口,并且其中,在所述USB Type-C接口中的SBU1引脚和SBU2引脚被用于实现I3C总线,通过所述I3C总线发送信号以促进所述装置与所述一个或多个I3C从设备之间的通信。
24.根据权利要求23所述的系统,其中,所述计算设备包括嵌入式USB设备或USB功能,并且所述USB Type-C接口被用于使得所述装置能够与所述嵌入式USB设备或USB功能进行通信。
25.根据权利要求20-24中任一项所述的系统,其中,所述至少一个外部总线或外部接口包括外部USB接口,并且其中,所述装置还被配置为:
检测被连接到所述外部USB接口的USB设备或者被嵌入到连接到所述外部USB接口的第二装置中的USB功能;
生成与所述USB设备或嵌入式USB功能相对应的USB配置信息;以及
通过所述USB链路向所述主机呈现所述USB配置信息,
并且其中,所述主机计算机使用所述USB配置信息以使得在所述主机计算机上运行的软件能够使用USB协议访问所述USB设备或所述嵌入式USB功能。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/277,850 US11604741B2 (en) | 2019-02-15 | 2019-02-15 | Method for dynamically provisioning virtualized functions in a USB device by means of a virtual USB hub |
US16/277,850 | 2019-02-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111581128A true CN111581128A (zh) | 2020-08-25 |
Family
ID=67392165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010041745.8A Pending CN111581128A (zh) | 2019-02-15 | 2020-01-15 | 通过虚拟usb中心在usb设备中动态提供虚拟化功能的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11604741B2 (zh) |
EP (1) | EP3696685A1 (zh) |
CN (1) | CN111581128A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113282527A (zh) * | 2021-05-08 | 2021-08-20 | 珠海金智维信息科技有限公司 | 一种实现usb设备切换管理的方法、装置和主机 |
CN115202702A (zh) * | 2022-09-13 | 2022-10-18 | 深圳市湘凡科技有限公司 | 基于DisplayPort接口的软件更新方法以及相关装置 |
CN116303150A (zh) * | 2023-05-25 | 2023-06-23 | 深圳市链科网络科技有限公司 | 一种基于虚拟usb的数据驱动方法及装置 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10783109B2 (en) * | 2018-10-24 | 2020-09-22 | Dell Products, L.P. | Device management messaging protocol proxy |
CN110175139B (zh) * | 2019-05-08 | 2021-01-05 | 厦门亿联网络技术股份有限公司 | 一种usb设备的通用调试方法及usb设备 |
US20210096971A1 (en) * | 2019-10-01 | 2021-04-01 | Tektronix, Inc. | Bus autodetect |
US11675599B2 (en) * | 2020-08-04 | 2023-06-13 | Dell Products L.P. | Systems and methods for managing system rollup of accelerator health |
US11461108B2 (en) * | 2020-10-09 | 2022-10-04 | Lenovo (Singapore) Pte. Ltd. | Use of driver and wired connection to diagnose device using disk image |
KR20220051750A (ko) * | 2020-10-19 | 2022-04-26 | 삼성전자주식회사 | 장치간 물리적 인터페이스의 트레이닝을 위한 장치 및 방법 |
US20220121542A1 (en) * | 2020-10-20 | 2022-04-21 | Nvidia Corporation | Techniques for testing semiconductor devices |
CN112799981B (zh) * | 2021-01-26 | 2022-08-02 | 展讯半导体(成都)有限公司 | 数据传输控制方法、功能机及相关产品 |
US11842219B2 (en) * | 2021-03-05 | 2023-12-12 | EMC IP Holding Company LLC | Automatic identification of computer agents for throttling |
US20220327088A1 (en) * | 2021-04-12 | 2022-10-13 | Icron Technologies Corporation | Predicting free buffer space in a usb extension environment |
US20220360489A1 (en) * | 2021-05-10 | 2022-11-10 | ZPE Systems, Inc. | Network bypass framework |
CN113326057B (zh) * | 2021-06-30 | 2023-04-14 | 安克创新科技股份有限公司 | 主控程序升级方法、装置、系统和电子设备 |
CN113515347B (zh) * | 2021-06-30 | 2024-03-29 | 惠州华阳通用电子有限公司 | 一种基于虚拟机的双系统数据传输方法及装置 |
US20230051553A1 (en) * | 2021-08-12 | 2023-02-16 | Samsung Electronics Co., Ltd. | Multi-function flexible computational storage device |
GB2619568A (en) * | 2022-06-08 | 2023-12-13 | Cirrus Logic Int Semiconductor Ltd | Integrated circuit with multifunction capability |
US20220374382A1 (en) * | 2022-08-05 | 2022-11-24 | Intel Corporation | Method and apparatus for extending i3c capability across multiple platforms and devices over usb-c connection |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6584519B1 (en) * | 1998-12-22 | 2003-06-24 | Canon Kabushiki Kaisha | Extender for universal serial bus |
US6978335B2 (en) * | 2000-06-30 | 2005-12-20 | 02Micro International Limited | Smart card virtual hub |
US6903727B2 (en) | 2002-10-04 | 2005-06-07 | Onspec Electronic Inc. | Integrated virtual hub chip |
US7752029B2 (en) | 2006-06-23 | 2010-07-06 | Kyocera Mita Corporation | Method to change USB device descriptors from host to emulate a new device |
US8850082B2 (en) | 2010-08-30 | 2014-09-30 | Qualcomm Incorporated | Virtual USB compound device enumeration |
US10339089B2 (en) * | 2015-10-28 | 2019-07-02 | Qualcomm Incorporated | Enhanced communications over a universal serial bus (USB) type-C cable |
US10248609B2 (en) * | 2016-01-06 | 2019-04-02 | Verifone, Inc. | Modular interconnection system and components therefor |
US20180143932A1 (en) | 2016-11-21 | 2018-05-24 | Intel Corporation | Apparatuses and methods to spawn multiple virtual serial bus hub instances on a same physical serial bus hub |
US10782938B2 (en) * | 2017-11-08 | 2020-09-22 | EPtronics, Inc. | Multiple interface led driver programmer |
-
2019
- 2019-02-15 US US16/277,850 patent/US11604741B2/en active Active
-
2020
- 2020-01-15 CN CN202010041745.8A patent/CN111581128A/zh active Pending
- 2020-01-15 EP EP20151876.8A patent/EP3696685A1/en not_active Ceased
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113282527A (zh) * | 2021-05-08 | 2021-08-20 | 珠海金智维信息科技有限公司 | 一种实现usb设备切换管理的方法、装置和主机 |
CN115202702A (zh) * | 2022-09-13 | 2022-10-18 | 深圳市湘凡科技有限公司 | 基于DisplayPort接口的软件更新方法以及相关装置 |
CN116303150A (zh) * | 2023-05-25 | 2023-06-23 | 深圳市链科网络科技有限公司 | 一种基于虚拟usb的数据驱动方法及装置 |
CN116303150B (zh) * | 2023-05-25 | 2023-07-21 | 深圳市链科网络科技有限公司 | 一种基于虚拟usb的数据驱动方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US11604741B2 (en) | 2023-03-14 |
US20190235890A1 (en) | 2019-08-01 |
EP3696685A1 (en) | 2020-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11604741B2 (en) | Method for dynamically provisioning virtualized functions in a USB device by means of a virtual USB hub | |
US11513808B2 (en) | Automatic switching and deployment of software or firmware based USB4 connection managers | |
US9965367B2 (en) | Automatic hardware recovery system | |
US9442876B2 (en) | System and method for providing network access for a processing node | |
US8990459B2 (en) | Peripheral device sharing in multi host computing systems | |
US9507619B2 (en) | Virtualizing a host USB adapter | |
US9781117B2 (en) | Multinode hubs for trusted computing | |
US10509758B1 (en) | Emulated switch with hot-plugging | |
US11086812B2 (en) | Platform environment control interface tunneling via enhanced serial peripheral interface | |
US9806959B2 (en) | Baseboard management controller (BMC) to host communication through device independent universal serial bus (USB) interface | |
CN115981776A (zh) | 位于服务器网络接口卡处的基板管理控制器 | |
WO2024087932A1 (zh) | 控制方法、设备及计算设备 | |
US10996942B1 (en) | System and method for graphics processing unit firmware updates | |
US11392512B2 (en) | USB method and apparatus in a virtualization environment with multi-VM | |
US11625338B1 (en) | Extending supervisory services into trusted cloud operator domains | |
US8819321B2 (en) | Systems and methods for providing instant-on functionality on an embedded controller | |
US10782764B2 (en) | Techniques of emulating an ACPI controller on a service processor | |
Kotovsky | How to Develop Embedded Software Using the QEMU Machine Emulator | |
WO2022068753A1 (zh) | 服务器系统、容器设置方法及装置 | |
US20220129469A1 (en) | System and method to enable a data analytics in a smart data accelerator interface device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |