CN117407123B - 基于多系统隔离的usb设备虚拟共享系统 - Google Patents

基于多系统隔离的usb设备虚拟共享系统 Download PDF

Info

Publication number
CN117407123B
CN117407123B CN202311695250.7A CN202311695250A CN117407123B CN 117407123 B CN117407123 B CN 117407123B CN 202311695250 A CN202311695250 A CN 202311695250A CN 117407123 B CN117407123 B CN 117407123B
Authority
CN
China
Prior art keywords
usb
linked list
virtual
data packet
equipment
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.)
Active
Application number
CN202311695250.7A
Other languages
English (en)
Other versions
CN117407123A (zh
Inventor
吴宁
赵峰
黄顺玉
刘仁学
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kirin Software Co Ltd
Original Assignee
Kirin Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kirin Software Co Ltd filed Critical Kirin Software Co Ltd
Priority to CN202311695250.7A priority Critical patent/CN117407123B/zh
Publication of CN117407123A publication Critical patent/CN117407123A/zh
Application granted granted Critical
Publication of CN117407123B publication Critical patent/CN117407123B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明实施例公开了一种基于多系统隔离的USB设备虚拟共享系统,通过在主Linux端提供一个通用的USB设备管理层,在rtos端提供通用的USB设备模拟层,使rtos模拟出USB设备并在不同系统之间切换。USB设备管理层利用虚拟共享设备链表对不同系统和不同的模拟USB设备进行管理,并利用链表节点的方式为每个虚拟USB进行管理,并利用配置信息对链表节点初始化,并申请相应的资源,并映射设备注册链表,USB设备模拟层根据映射的设备注册链表创建模拟设备链表,并进行初始化,根据共享内存地址与USB设备管理层进行数据交互,并根据设置的设备信息进行处理,得到对应的USB数据流。可以实现同时对多个USB虚拟设备进行管理,实现同时虚拟多个USB虚拟设备。

Description

基于多系统隔离的USB设备虚拟共享系统
技术领域
本发明涉及操作系统技术领域,尤其涉及一种基于多系统隔离的USB设备虚拟共享系统。
背景技术
近年来随着CPU多核技术发展,在一个CPU上隔离出不同核及硬件资源运行不同操作系统越来越广泛,为了保证实时性能,Linux+实时操作系统(real time operationsystem,rtos)广泛应用于多核技术中。
Linux对于USB驱动支持较为完善,通常原厂在发布芯片时就已经支持USB驱动。rtos系统实时性非常高,但是rtos系统对于USB驱动支持没有Linux完善,往往需要开发者自己移植USB驱动,极大的增加了开发难度及成本。同时,在隔离多域系统中会出现一个USB坞挂载多个USB设备,例如鼠标,键盘,u盘等,需要这些USB设备在不同系统之间切换,同时也涉及USB设备实时响应问题。现有的USB多系统共享技术往往涉及硬件或者网络通信,大大增加了硬件及软件成本,且容易产生数据传输混乱。
发明内容
本发明实施例提供了一种基于多系统隔离的USB设备虚拟共享系统、以解决现有技术中针对多个隔离操作系统之间USB信息共享实时性能较低且在面对虚拟多个USB设备容易产生数据混乱的技术问题且rtos系统对USB设备支持不完善问题且USB设备在rtos与Linux系统之间灵活切换问题。
本发明实施例提供了一种基于多系统隔离的USB设备虚拟共享系统,包括:
主系统域,所述主系统域设置于主Linux系统中;
从系统域,所述从系统域设置于从guest rtos系统中;
所述主系统域包括:
控制器,所述控制器用于在虚拟共享设备链表为每个设置的虚拟共享USB设备及对应的虚拟guest rtos系统创建链表节点,并根据配置信息对所述链表节点进行初始化,并根据链表节点申请传输、处理和内存资源,并在交互层映射生成设备注册链表,所述设备注册链表包括USB设备描述符、USB设备共享内存地址、USB设备状态;
所述控制器包括:
USB模块,用于在所述链表节点为活跃状态时,根据所述链表节点中的虚拟共享USB设备信息,获取USB驱动设备数据流到消息队列;同时接收来自guest rtos数据包处理后发送给USB驱动设备;
数据流处理模块,用于在所述链表节点为活跃状态时,依据USB虚拟共享设备链表对应节点信息调用对应的数据处理函数对数据进行重组,生成数据包,并将数据包按链表节点申请的共享内存地址进行存储;
所述从系统域,包括:
管理模块,用于根据映射的设备注册链表,创建模拟设备链表,并根据映射的设备注册链表信息对所述模拟设备链表进行初始化,设置设备信息和共享内存地址;
数据包处理模块,用于根据初始化的信息,从所述共享内存地址中取出数据包,并对所述数据包进行处理,得到对应的USB数据流。
进一步的,所述主系统域还包括:
配置器,所述配置器用于查找并设置可虚拟共享USB设备及对应的虚拟guestrtos系统,并根据USB设备的连接情况配置虚拟USB的起始和终止条件;
相应的,控制器根据配置信息对所述链表节点进行初始化,包括:
所述控制器根据所述配置器设置的配置信息对所述链表节点进行初始化。
进一步的,所述从系统域还包括:
模拟模块,用于根据模拟设备链表中的设备信息将USB数据流模拟为对应的USB设备数据内容。
进一步的,所述配置器用于根据外部USB的连接情况设定开始和挂起状态参数。
进一步的,所述控制器根据配置信息对所述链表节点进行初始化包括:
在所述链表节点中写入镜像节点的内存指针。
进一步的,所述控制器还用于:
在映射设备注册链表时,发出初始化中断信号,以使得从系统域根据所述初始化中断信号创建模拟设备链表,并根据映射的设备注册链表信息对所述模拟设备链表进行初始化;
在将数据包按链表节点申请的共享内存地址进行存储时,触发读取信号中断信号,以使得从系统域根据所述读取信号中断信号,从所述共享内存中读取USB数据包。
进一步的,所述模拟模块还包括:
模拟单元,所述模拟单元用于在通过模拟设备链表确定为USB接口外设时,调用从系统域的驱动接口对USB设备包进行处理,得到从系统域的外设驱动设备流。
进一步的,所述模拟单元设置于所述从系统域对应操作系统的驱动层。
进一步的,所述数据流处理模块还用于:
封装模拟模块产生的USB数据形成数据包或命令包,并将所述数据包或者命令包写入所述共享内存中的指定地址中;
相应的,所述数据包处理模块还用于:从所述指定地址中读取数据流处理模块封装形成的数据包或命令包,根据对应的链表节点信息、数据包或者命令包类型选择数据处理函数,并利用所述数据处理函数对所述数据包或命令包进行解析,并发送到对应的处理单元。
更进一步的,所述发送到对应的处理单元,包括:
将数据包对应的解析数据发送至USB模块;将命令包对应的解析数据发送至控制器。
本发明实施例提供的基于多系统隔离的USB设备虚拟共享系统,通过在主Linux端提供一个通用的USB设备管理层,在rtos端提供通用的USB设备模拟层,使rtos模拟出USB设备并在不同系统之间切换。USB设备管理层利用虚拟共享设备链表对不同系统和不同的模拟USB设备进行管理,并利用链表节点的方式为每个虚拟USB进行管理,并利用配置信息对链表节点初始化,并申请相应的资源,并映射设备注册链表,USB设备模拟层根据映射的设备注册链表创建模拟设备链表,并进行初始化,根据共享内存地址与USB设备管理层进行数据交互,并根据设置的设备信息进行处理,得到对应的USB数据流。USB设备管理层利可用虚拟共享设备链表创建多个链表节点,每个链表节点对应不同的模拟USB设备,实现同时对多个USB虚拟设备进行管理,实现同时虚拟多个USB虚拟设备,并且在再次虚拟USB设备时,无需配置,只需改变链表节点的使用状态即可实现虚拟过程,无需反复重新进行配置。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明实施例提供的基于多系统隔离的USB设备虚拟共享系统的结构示意图;
图2是本发明实施例提供的基于多系统隔离的USB设备虚拟共享系统的共享实现时序示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
图1是本发明实施例提供的基于多系统隔离的USB设备虚拟共享系统的结构示意图,参见图1,所述基于多系统隔离的USB设备虚拟共享系统,可以包括:
主系统域,所述主系统域设置于主Linux系统中;从系统域,所述从系统域设置于从guest rtos系统中;所述主系统域包括:控制器,所述控制器用于在虚拟共享设备链表为每个设置的虚拟共享USB设备及对应的虚拟guest rtos系统创建链表节点,并根据配置信息对所述链表节点进行初始化,并根据链表节点申请传输、处理和内存资源,并在交互层映射生成设备注册链表,所述设备注册链表包括USB设备描述符、USB设备共享内存地址、USB设备状态;所述控制器包括:USB模块,用于在所述链表节点为活跃状态时,根据所述链表节点中的虚拟共享USB设备信息,获取USB驱动设备数据流到消息队列;同时接收来自guestrtos数据包处理后发送给USB驱动设备;数据流处理模块,用于在所述链表节点为活跃状态时,依据USB虚拟共享设备链表对应节点信息调用对应的数据处理函数对数据进行重组,生成数据包,并将数据包按链表节点申请的共享内存地址进行存储;所述从系统域,包括:管理模块,用于根据映射的设备注册链表,创建模拟设备链表,并根据映射的设备注册链表信息对所述模拟设备链表进行初始化,设置设备信息和共享内存地址;数据包处理模块,用于根据初始化的信息,从所述共享内存地址中取出数据包,并对所述数据包进行处理,得到对应的USB数据流。
在本实施例中,所述隔离系统可以是采用同一多核CPU上隔离不同硬件资源运行多个不同操作系统。其中,包括:主系统,可以为Linux系统,从系统,即虚拟的Guest rtos系统。其中,所述的从系统可以为多个。
在rtos系统工作时,不可避免的会通过USB与外界进行通信,例如:利用USB存储设备传输数据,以及利用USB外设,如鼠标、键盘等进行操作等。因此,需要利用主Linux系统域的USB接口实现虚拟USB设备。
由于多核CPU上可隔离硬件资源同时运行多个Guest rtos系统,因此,一个USB设备可对应不止一个Guest rtos系统,例如:利用同一USB存储设备,可向多个Guest rtos系统传输文件。此外,还存在一个Guest rtos系统使用多个USB设备的情况,例如:同时利用USB鼠标和USB键盘外设对Guest rtos系统进行操作的情况。如果采用传统的方式,即利用硬件或者网络来传输USB数据包,则需要设置多个硬件或者网络通道来进行传输,不仅需要增加大量的软、硬件资源,并且,由于存在多个USB设备同时进行信息传输,则在传输USB数据包中会产生混乱,进而影响到USB设备的共享。
因此,在本实施例中,针对上述情况,分别在主Linux系统和从guest rtos系统两端分别进行对应设置,实现基于多系统隔离的USB设备虚拟共享的目的。
具体的,分别在主Linux系统和从guest rtos系统分别设置主系统域和从系统域。
所述主系统域包括:控制器,所述控制器用于在虚拟共享设备链表为每个设置的虚拟共享USB设备及对应的虚拟guest rtos系统创建链表节点,并根据配置信息对所述链表节点进行初始化,并根据链表节点申请传输、处理和内存资源,并在交互层映射生成设备注册链表,所述设备注册链表包括USB设备描述符、USB设备共享内存地址、USB设备状态。
在本实施例中,在主系统域可设有一个虚拟共享设备链表,该链表用于对虚拟共享设备进行管理。控制器设于主系统域,可对虚拟共享设备链表进行维护和管理。针对每个虚拟共享设备,在虚拟共享设备链表设置相应的链表节点。其中每个虚拟共享设备可以是,同一实际USB设备针对不同的guest rtos系统对应的每个USB虚拟共享设备,也可以是每个实际USB设备针对同一个guest rtos系统对应的每个USB虚拟共享设备。即可以为一对多,多对一,一对一和多对多的映射关系。
在创建链表节点后,可利用配置信息对所述链表节点进行初始化。可选的,所述配置信息可以包括:实际USB设备的类型、实际USB设备的当前工作状态、对应的guest rtos系统等,并根据链表节点申请传输、处理和内存资源,包括设定发送共享内容和接收共享内容的数据结构、对应的发送消息队列和接收消息队列等。并可根据该链表节点申请共享内存,用于传输相应的USB数据。并在交互层依据配置信息映射生成设备注册链表,所述设备注册链表包括USB设备描述符、USB设备共享内存地址、USB设备状态。利用交互层,可便于对应的guest rtos系统获知相应的需要共享的USB设备信息,并对应进行处理。
此外,控制器还可在所述链表节点中写入镜像节点的内存指针,所述镜像节点可以是从系统域中对应的虚拟USB设备的链表指针。通过该种方式,可便于从系统域对对应的虚拟USB设备信息进行维护。
相应的,所述控制器还包括:USB模块,用于在所述链表节点为活跃状态时,根据所述链表节点中的虚拟共享USB设备信息,获取USB驱动设备数据流到消息队列;同时接收来自guest rtos数据包处理后发送给USB驱动设备。主系统域在USB使用时,将所述链表节点的状态修改为活跃状态,在为活跃状态时,控制器根据链表节点中的信息获取USB设备的类型,利用对应的驱动,获取相应的设备数据流到消息队列中。
控制器还可包括:数据流处理模块,该数据流处理模块可针对USB模块得到的设备数据流,根据链表节点中的USB设备信息,调用与其驱动对应的数据处理函数,提取其中的数据,并按照便于从系统处理的方式,将其进行重组。示例性的,可增加类型、长度、节点标识、ack校验位后重新组成数据包。并将重组后的数据包存入控制器申请的共享内存中的指定地址。
相应的,所述从系统域对应设置有:管理模块,该管理模块首先获取共享内存映射的设备注册链表,创建一个对应的模拟设备链表,并根据设备注册链表中的相关信息对模拟设备链表进行初始化,设置在该从系统域对应的USB虚拟设备的相应信息,以便于从系统对共享的USB信息根据类型进行适应性处理。并设置相应的共享内存地址,以便于从共享内存中读取主系统域重组后的数据包,以及返回相应的数据包或者命令包。
从系统域还可设有:数据包处理模块,可根据初始化后的模拟设备链表信息,获取相应的设备信息,并从指定的共享内存地址中取出数据包,根据设备信息对应的函数,对数据包进行处理,得到相应的USB数据流,供guestrtos系统对数据流进行对应处理。实现多系统隔离状态下的USB设备虚拟。
本实施例通过在主Linux端提供一个通用的USB设备管理层,在rtos端提供通用的USB设备模拟层,使rtos模拟出USB设备并在不同系统之间切换。USB设备管理层利用虚拟共享设备链表对不同系统和不同的模拟USB设备进行管理,并利用链表节点的方式为每个虚拟USB进行管理,并利用配置信息对链表节点初始化,并申请相应的资源,并映射设备注册链表,USB设备模拟层根据映射的设备注册链表创建模拟设备链表,并进行初始化,根据共享内存地址与USB设备管理层进行数据交互,并根据设置的设备信息进行处理,得到对应的USB数据流。USB设备管理层利可用虚拟共享设备链表创建多个链表节点,每个链表节点对应不同的模拟USB设备,实现同时对多个USB虚拟设备进行管理,实现同时虚拟多个USB虚拟设备,并且在再次虚拟USB设备时,无需配置,只需改变链表节点的使用状态即可实现虚拟过程,无需反复重新进行配置。
可选的,所述主系统域还包括:配置器,所述配置器用于查找并设置可虚拟共享USB设备及对应的虚拟guest rtos系统,并根据USB设备的连接情况配置虚拟USB的起始和终止条件;相应的,所述控制器根据配置信息对所述链表节点进行初始化,包括:控制器根据所述配置器设置的配置信息对所述链表节点进行初始化。
配置器提供了一整套USB主机控制层参数设置及查询命令,主要命令包括USB可虚拟信息、USB虚拟共享设置、USB虚拟共享开始、USB虚拟共享暂停、USB虚拟共享关闭。配置器在Linux应用层,可通过命令查询USB状态、创建USB共享设备、 USB共享设备在不同系统切换、 USB共享设备挂起\USB设备删除、USB设备获取帮助。配置器可接收用户输入的命令,解析命令合法性及相关行为,通过消息队列发送给控制器处理。并可通过命令根据USB设备的连接情况配置虚拟USB的起始和终止条件。控制器可根据配置器中的配置信息对虚拟共享设备链表进行维护,针对每个USB共享设备创建并初始化对应的链表节点。利用上述方式,可以在一次配置后,多次使用。而无需每次再为其建立各种连接。可选的,配置器用于根据外部USB的连接情况设定开始和挂起状态参数。即通过判断USB设备是否与主系统正常连接设定USB共享设备的开始状态,即活跃状态,并在断开连接时,设置挂起状态。
示例性的,所述从系统域还包括:模拟模块,用于根据模拟设备链表中的设备信息将USB数据流模拟为对应的USB设备数据内容。由于虚拟USB设备可能为键盘或者鼠标等外设USB设备,因此,需要将其模拟为对应的USB数据内容。可选的,模拟模块还包括:模拟单元,所述模拟单元用于在通过模拟设备链表确定为USB接口外设时,调用从系统域的驱动接口对USB设备包进行处理,得到从系统域的外设驱动设备流。在本实施例中,由于rtos系统可能有多种,且每种系统中的驱动尚不完善,完善驱动的工作量较大。因此,可将模拟单元设置于所述从系统域对应操作系统的驱动层。通过设置于驱动层,可无需对其进行驱动模拟,rtos系统可直接调用相应的USB模拟数据直接进行处理。guest rtos系统应用层使用模拟USB驱动与使用物理设备驱动具有一样的效果。对于USB键盘设备,guest rtos系统域实时接收host Linux系统域USB键盘驱动数据流,键盘数据包括包封装信息,按键信息。模拟单元在guest rtos创建kUSB键盘驱动,调用rtos相关接口,把接收的USB键盘数据包解析为rtosUSB键盘驱动数据流,提供给rtos系统使用。对于USB鼠标设备,guest rtos系统域实时接收host Linux系统域USB鼠标驱动数据流,鼠标数据包括点位信息,左右按键信息,中间滑轮信息。kUSB模拟器在guest rtos创建kUSB鼠标驱动,调用rtos相关接口,把接收的USB数据包解析为rtosUSB鼠标驱动数据流,提供给rtos系统使用。对于鼠标点位数据,鼠标左右按键数据,鼠标中间滑轮数据调用不同的函数处理。
相应的,在主系统域,所述数据流处理模块还用于:
封装模拟模块产生的USB数据形成数据包或命令包,并将所述数据包或者命令包写入所述共享内存中的指定地址中;
相应的,所述数据包处理模块还用于:从所述指定地址中读取数据流处理模块封装形成的数据包或命令包,根据对应的链表节点信息、数据包或者命令包类型选择数据处理函数,并利用所述数据处理函数对所述数据包或命令包进行解析,并发送到对应的处理单元。在使用虚拟USB设备时,rtos会返回相应的数据,例如确定连接,确认传输完成,以及在作为外设时,给予的操作反馈等。因此,主系统域需要对其进行相应的处理,实现与真实USB设备之间的交互。进一步的,所述发送到对应的处理单元,包括:将数据包对应的解析数据发送至USB模块;将命令包对应的解析数据发送至控制器。控制器可基于驱动向真实的外设USB设备进行数据交互,对于存储设备,则向USB模块发送对应的解析数据。
此外,控制器作为核心还在映射设备注册链表时,发出初始化中断信号,以使得从系统域根据所述初始化中断信号创建模拟设备链表,并根据映射的设备注册链表信息对所述模拟设备链表进行初始化;在将数据包按链表节点申请的共享内存地址进行存储时,发出读取信号中断信号,以使得从系统域根据所述读取信号中断信号,从所述共享内存中读取USB数据包。利用中断信号,可便于对应的rtos系统对应执行相应的操作,为后续数据传输建立基础。
下面结合本实施例提供的基于多系统隔离的USB设备虚拟共享系统的工作过程对其进行进一步的说明。图2是本发明实施例提供的基于多系统隔离的USB设备虚拟共享系统的共享实现时序示意图,参见图2,在host Linux系统域,配置器在接收用户输入的虚拟共享USB设备命令后,解析相关命令合法性及行为,依据命令内容生成相关消息发送给控制器。如果当前所要使用的虚拟共享USB设备已经通过命令配置过,则无需再次进行配置。
控制器维护一个USB虚拟共享设备链表,并可依据配置器中设置的参数调度主机控制层各个功能模块。通过查询USB虚拟共享设备信息,返回USB共享虚拟设备状态、注册信息、可用USB设备及对应可用guest rtos系统。在需要将host Linux系统域USB驱动设备虚拟共享到guest rtos系统域时,在USB虚拟共享设备链表会动态增加一个USB设备共享节点,依据设置器中的参数参数初始化该链表节点,并依据此节点动态申请交互层 ivshmem共享内存、USB模块及USB数据处理器资源,同时调用交互层函数写链表节点相关信息到共享内存地址,实现映射生成设备注册链表。
在开始USB虚拟共享设备后,USB模块开始捕获USB虚拟共享设备链表节点对应的USB驱动设备数据流,通过消息队列发送USB数据流到数据流处理模块。同时USB模块开始接收数据流处理模块发送的guest rtos系统域USB数据包,依据对应链表节点信息USB模块转发数据到具体USB驱动设备。
相应的,在guest rtos从系统域,设有管理模块,根据映射的设备注册链表,创建并维护模拟设备链表,用于记录rtosUSB模拟共享设备信息。在主 Linux主系统域创建或修改了USB虚拟共享信息,会触发中断,管理模块会根据映射的设备注册链表对模拟设备链表进行维护。当创建新的USB虚拟共享设备时,管理模块动态申请USB链表节点,依据USB虚拟共享信息初始化USB链表节点。当修改USB虚拟共享设备信息时,管理模块实时读取USB虚拟共享设备信息并修改模拟设备链表对应节点信息。模拟设备链表包括USB镜像设备类型、设备状态、共享内存地址及大小。
管理模块读取到USB设备状态为可用时,会依据模拟设备链表初始化对应设备的数据处理器和USB设备驱动。在读取到USB交互层USB虚拟共享设备配置参数对应节点删除时,管理模块会回收模拟设备链表对应节点资源。
数据包处理模块依据模拟设备链表对应的节点初始化参数,每一个设备动对应注册数据处理单元。在中断触发后接收来自host Linux系统域发送的USB数据包,依据类型和节点标识来选择数据包处理函数,数据处理函数解析USB数据包并处理USB数据包为可接受的USB数据流。在rtos从系统域数据包处理模块封装guest rtosUSB设备模拟层产生USB数据包或命令包,写数据到交互层提供的共享内存地址。在挂起USB虚拟共享设备后,改变USB虚拟共享链表模拟设备链表节点状态为挂起状态。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种基于多系统隔离的USB设备虚拟共享系统,其特征在于,包括:
主系统域,所述主系统域设置于主Linux系统中;
从系统域,所述从系统域设置于从guest rtos系统中;
所述主系统域包括:
控制器,所述控制器用于在虚拟共享设备链表为每个设置的虚拟共享USB设备及对应的虚拟guest rtos系统创建链表节点,并根据配置信息对所述链表节点进行初始化,并根据链表节点申请传输、处理和内存资源,并在交互层映射生成设备注册链表,所述设备注册链表包括USB设备描述符、USB设备共享内存地址、USB设备状态;
所述控制器包括:
USB模块,用于在所述链表节点为活跃状态时,根据所述链表节点中的虚拟共享USB设备信息,获取USB驱动设备数据流到消息队列;同时接收来自guest rtos数据包处理后发送给USB驱动设备;
数据流处理模块,用于依据USB虚拟共享设备链表对应节点信息调用对应的数据处理函数对数据流进行重组,生成数据包,并将数据包按链表节点申请的共享内存地址进行存储;
所述从系统域,包括:
管理模块,用于根据映射的设备注册链表,创建模拟设备链表,并根据映射的设备注册链表信息对所述模拟设备链表进行初始化,设置设备信息和共享内存地址;
数据包处理模块,用于根据初始化的信息,从所述共享内存地址中取出数据包,并对所述数据包进行处理,得到对应的USB数据流。
2.根据权利要求1所述的系统,其特征在于,所述主系统域还包括:
配置器,所述配置器用于查找并设置可虚拟共享USB设备及对应的虚拟guest rtos系统,并根据USB设备的连接情况配置虚拟USB的起始和终止条件;
相应的,控制器根据配置信息对所述链表节点进行初始化,包括:
所述控制器根据所述配置器设置的配置信息对所述链表节点进行初始化。
3.根据权利要求1所述的系统,其特征在于,所述从系统域还包括:
模拟模块,用于根据模拟设备链表中的设备信息将USB数据流模拟为对应的USB设备数据内容。
4.根据权利要求2所述的系统,其特征在于,所述配置器用于根据外部USB的连接情况设定开始和挂起状态参数。
5.根据权利要求2所述的系统,其特征在于,所述控制器根据配置信息对所述链表节点进行初始化包括:
在所述链表节点中写入镜像节点的内存指针。
6.根据权利要求1所述的系统,其特征在于,所述控制器还用于:
在映射设备注册链表时,发出初始化中断信号,以使得从系统域根据所述初始化中断信号创建模拟设备链表,并根据映射的设备注册链表信息对所述模拟设备链表进行初始化;
在将数据包按链表节点申请的共享内存地址进行存储时,触发读取信号中断信号,以使得从系统域根据所述读取信号中断信号,从所述共享内存中读取USB数据包。
7.根据权利要求3所述的系统,其特征在于,所述模拟模块还包括:
模拟单元,所述模拟单元用于在通过模拟设备链表确定为USB接口外设时,调用从系统域的驱动接口对USB设备包进行处理,得到从系统域的外设驱动设备流。
8.根据权利要求7所述的系统,其特征在于,所述模拟单元设置于所述从系统域对应操作系统的驱动层。
9.根据权利要求3或7所述的系统,其特征在于,所述数据流处理模块还用于:
封装模拟模块产生的USB数据形成数据包或命令包,并将所述数据包或者命令包写入所述共享内存中的指定地址中;
相应的,所述数据包处理模块还用于:从所述指定地址中读取数据流处理模块封装形成的数据包或命令包,根据对应的链表节点信息、数据包或者命令包类型选择数据处理函数,并利用所述数据处理函数对所述数据包或命令包进行解析,并发送到对应的处理单元。
10.根据权利要求9所述的系统,其特征在于,发送到对应的处理单元,包括:
将数据包对应的解析数据发送至USB模块;将命令包对应的解析数据发送至控制器。
CN202311695250.7A 2023-12-12 2023-12-12 基于多系统隔离的usb设备虚拟共享系统 Active CN117407123B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311695250.7A CN117407123B (zh) 2023-12-12 2023-12-12 基于多系统隔离的usb设备虚拟共享系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311695250.7A CN117407123B (zh) 2023-12-12 2023-12-12 基于多系统隔离的usb设备虚拟共享系统

Publications (2)

Publication Number Publication Date
CN117407123A CN117407123A (zh) 2024-01-16
CN117407123B true CN117407123B (zh) 2024-04-05

Family

ID=89496435

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311695250.7A Active CN117407123B (zh) 2023-12-12 2023-12-12 基于多系统隔离的usb设备虚拟共享系统

Country Status (1)

Country Link
CN (1) CN117407123B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117891565B (zh) * 2024-03-14 2024-05-17 麒麟软件有限公司 基于多系统隔离的显示虚拟共享系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101344860A (zh) * 2007-07-10 2009-01-14 米特尔网络公司 接合实时操作系统环境和本地主机操作系统的虚拟机环境
CN112422615A (zh) * 2018-02-24 2021-02-26 华为技术有限公司 一种通信的方法及装置
CN115605846A (zh) * 2018-05-04 2023-01-13 三星电子株式会社(Kr) 用于在多核处理器中管理可共享资源的设备和方法
CN116521240A (zh) * 2023-03-31 2023-08-01 威胜信息技术股份有限公司 一种设备驱动管理方法
CN116955236A (zh) * 2023-09-20 2023-10-27 元内核(北京)科技有限公司 一种基于虚拟化的usb设备共享方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10114675B2 (en) * 2015-03-31 2018-10-30 Toshiba Memory Corporation Apparatus and method of managing shared resources in achieving IO virtualization in a storage device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101344860A (zh) * 2007-07-10 2009-01-14 米特尔网络公司 接合实时操作系统环境和本地主机操作系统的虚拟机环境
CN112422615A (zh) * 2018-02-24 2021-02-26 华为技术有限公司 一种通信的方法及装置
CN115605846A (zh) * 2018-05-04 2023-01-13 三星电子株式会社(Kr) 用于在多核处理器中管理可共享资源的设备和方法
CN116521240A (zh) * 2023-03-31 2023-08-01 威胜信息技术股份有限公司 一种设备驱动管理方法
CN116955236A (zh) * 2023-09-20 2023-10-27 元内核(北京)科技有限公司 一种基于虚拟化的usb设备共享方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Jailhouse中基于Soft-RoCE的虚拟机间通信研究;曹宏鹏;中国优秀硕士学位论文全文数据库信息科技辑;20221215;全文 *

Also Published As

Publication number Publication date
CN117407123A (zh) 2024-01-16

Similar Documents

Publication Publication Date Title
US10095645B2 (en) Presenting multiple endpoints from an enhanced PCI express endpoint device
CN117407123B (zh) 基于多系统隔离的usb设备虚拟共享系统
US20170329625A1 (en) Method, apparatus, and system for accessing storage device
US9804873B2 (en) Guest management of devices assigned to a virtual machine
US20180210752A1 (en) Accelerator virtualization method and apparatus, and centralized resource manager
US20070005867A1 (en) Virtual peripheral device interface and protocol for use in peripheral device redirection communication
CN113312143B (zh) 云计算系统、命令处理方法及虚拟化仿真装置
JP5742387B2 (ja) 情報処理システム、及びi/oスイッチ装置
CN110995561B (zh) 基于容器技术的虚拟网络数据通信交互方法与系统
CN113904938B (zh) 一种动态配置PCIe终端设备的系统和方法
CN103530167A (zh) 一种虚拟机内存数据的迁移方法及相关装置和集群系统
US10474606B2 (en) Management controller including virtual USB host controller
WO2022143714A1 (zh) 服务器系统、虚拟机创建方法及装置
CN117389694B (zh) 基于virtio-blk技术提升虚拟存储IO性能的方法
WO2021223744A1 (zh) 实现热迁移的方法、芯片、板卡和存储介质
CN112764981B (zh) 一种协同测试系统及方法
CN114397999A (zh) 基于非易失内存接口-远程处理消息传递的通信方法、装置及设备
CN109101456B (zh) 一种仿真ssd中的数据交互通信方法、装置及终端
JP6965943B2 (ja) 構成管理装置、構成管理システム、構成管理方法、および、構成管理プログラム
CN110865960B (zh) 在网络上模拟PCIe总线
CN117591489B (zh) 基于多系统隔离的虚拟文件共享系统
Park et al. Ambient Virtio: IO Virtualization for Seamless Integration and Access of Devices in Ambient Computing
CN114047948B (zh) 可重构的可信密码模块模拟器、实现方法及模拟重构方法
KR102101602B1 (ko) 트래픽 관리 장치 및 방법
US8935434B1 (en) Interconnection of peripheral devices on different electronic devices

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
GR01 Patent grant
GR01 Patent grant