CN117891565B - 基于多系统隔离的显示虚拟共享系统 - Google Patents
基于多系统隔离的显示虚拟共享系统 Download PDFInfo
- Publication number
- CN117891565B CN117891565B CN202410290105.9A CN202410290105A CN117891565B CN 117891565 B CN117891565 B CN 117891565B CN 202410290105 A CN202410290105 A CN 202410290105A CN 117891565 B CN117891565 B CN 117891565B
- Authority
- CN
- China
- Prior art keywords
- display
- sharing
- system domain
- domain
- analog
- 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
Links
- 238000002955 isolation Methods 0.000 title claims abstract description 21
- 238000004088 simulation Methods 0.000 claims abstract description 52
- 239000000872 buffer Substances 0.000 claims description 40
- 238000000034 method Methods 0.000 claims description 40
- 230000008569 process Effects 0.000 claims description 36
- 230000006870 function Effects 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 14
- 230000006854 communication Effects 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 9
- 230000007246 mechanism Effects 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 4
- 230000001133 acceleration Effects 0.000 description 10
- 238000009877 rendering Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Digital Computer Display Output (AREA)
Abstract
基于多系统隔离的显示虚拟共享系统,包括多个系统域,其中一部分系统域为第一系统域,另一部分系统域为第二系统域,第一系统域为拥有显示所需显示资源的系统域,第二系统域为需要共享第一系统域显示资源的系统域;各第一系统域上均运行有显示管理器、显示软件模块及显示物理驱动,显示管理器与显示软件模块及显示物理驱动连接,各第二系统域上均运行有显示模拟器,显示管理器与显示模拟器之间通过共享内存通信,基于共享内存及显示模拟的方式,完成第一系统域及第二系统域之间的显示资源共享。
Description
技术领域
本发明涉及显示虚拟共享技术领域,具体涉及基于多系统隔离的显示虚拟共享系统。
背景技术
现今单颗芯片基本都是集成多个处理单元核心,例如常见的4核及8核等,在一个芯片上隔离出不同核及硬件资源运行不同操作系统的技术越来越广泛,为了相关业务需求linux+linux、linux+rtos组合越来越常见。同时屏幕显示在日常生活、工业控制、物联网、航空航天等领域广泛应用。
在多核多系统上一个芯片可以支持多个显示器,但只能在同一个系统使用显示资源,不能在不同系统共享支持显示资源;同时屏幕显示在不同系统之间切换也较为困难,当主机或者从机占用显示硬件资源时,其他主机或者从机系统不能使用屏幕资源;当一个显示屏幕被多个系统使用时就需要额外的设备来切换,增加了硬件成本。
rtos对于DVI、DP、HDMI、GPU、VPU等高级屏幕显示驱动及功能支持不完善,对于海量的驱动移植困难,对于显示加速处理能力不够;linux对于oled,led等小型专用屏幕支持不太完善。
Linux和rtos支持不同种类、功能和风格的显示软件模块,这些显示软件模块支持渲染、硬件加速、OpenGL及其它功能,这些显示软件模块移植到对应的操作系统工作量非常巨大,且在一个系统集成不同的显示软件模块非常困难。
现有多核SOC上屏幕共享技术通过传递应用层数据,增加了软件及硬件成本。
发明内容
为解决已有技术存在的不足,本发明提供了一种基于多系统隔离的显示虚拟共享系统,包括多个系统域,其中一部分系统域为第一系统域,另一部分系统域为第二系统域,第一系统域为拥有显示所需显示资源的系统域,第二系统域为需要共享第一系统域显示资源的系统域;
各第一系统域上均运行有显示管理器、显示软件模块及显示物理驱动,显示管理器与显示软件模块及显示物理驱动连接,各第二系统域上均运行有显示模拟器,显示管理器与显示模拟器之间通过共享内存通信,基于共享内存及显示模拟的方式,完成第一系统域及第二系统域之间的显示资源共享。
其中,显示管理器包括显示控制器、显示信息buffer及显示控制模块,显示控制模块与显示控制器连接,显示信息buffer由显示控制器创建;
显示模拟器包括模拟显示处理器、模拟显示信息buffer及模拟显示驱动,模拟显示信息buffer由模拟显示处理器创建,同时,模拟显示驱动由模拟显示处理器初始化时创建;
共享内存通信分别由显示管理器中的显示控制器及显示模拟器中的模拟显示处理器来完成;显示控制模块接收显示控制器信息来调用显示物理驱动和显示软件模块相关功能,并在显示资源共享过程中将对应的显示物理驱动和显示软件模块在第二系统域的模拟显示驱动上实例化,基于此实现多系统显示虚拟共享。
其中,多系统显示虚拟共享的实现机制包括:
步骤S1:应用层调用某个第二系统域的模拟显示驱动;
步骤S2:模拟显示驱动将应用层的调用请求及相关参数处理后通过消息队列发送给模拟显示处理器;
步骤S3:模拟显示处理器将消息队列封包处理后通过共享内存发送给显示控制器,封包的数据包括应用层的调用请求的命令包以及对相关参数处理后的数据包;
步骤S4:显示控制器接收并处理封包数据,通过消息队列方式将处理后的封包数据发送给显示控制模块,显示控制模块调用显示物理驱动或显示软件模块相关功能并处理数据;
步骤S5:显示物理驱动或显示软件控制模块处理来自显示控制模块应用层的调用请求及相关参数处理后的数据的消息队列,来实际操作物理显示设备,并将显示物理驱动或显示软件模块接口使用结果作为显示物理驱动或显示软件模块返回信息给显示控制模块;
步骤S6:显示控制模块通过消息队列转接显示物理驱动或显示软件模块返回信息到显示控制器;
步骤S7:显示控制器封包处理显示物理驱动或显示软件模块返回信息并通过共享内存将封包处理后的显示物理驱动或显示软件模块返回信息通过共享内存发送到模拟显示处理器;
步骤S8:模拟显示处理器接收来自显示控制器的数据包和命令包处理后通过消息队列发送给对应模拟显示驱动,对应模拟显示驱动处理后返回结果给第二系统域应用层,供第二系统域使用第一系统域的显示物理驱动或显示软件模块的接口功能。
其中,在对应路第二系统域上共享相关第一系统域上的显示资源前,相关第一系统域的显示控制器通过注册对应路第二系统域的显示共享链表创建对应路第二系统域的显示共享映射,注册显示共享链表时,对应路第二系统域的显示信息buffer初始化,显示信息buffer用来存储第一系统域和对应路第二系统域显示设备设置信息。
其中,相关第一系统域上的显示设备需要被多路第二系统域轮询使用时,针对需切出的第二系统域,由相关第一系统域上的显示控制器负责切出对应路第二系统域并备份显示信息buffer;针对需切入的第二系统域,由相关第一系统域上的显示控制器使用对应路第二系统域显示信息buffer初始化显示设备。
其中,模拟显示信息buffer用于保存本路第二系统域显示设备设置信息,供第一系统域读取,在对应路第一系统域上切换回本路第二系统域显示模拟时用于恢复显示设备设置。
其中,显示管理器中的显示控制器与显示模拟器中的模拟显示处理器中通过共享内存实现的通讯过程包括:
步骤Sa:当显示物理驱动仅用于第一系统域时,对显示物理驱动和显示软件模块不做处理,当没有创建显示共享时显示控制器对对应路显示物理驱动和显示软件模块不做绑定处理,所谓的绑定处理,即将需要共享显示资源的第二系统域的显示设备设置信息写到第一系统域的显示共享链表内;
步骤Sb:当查询显示共享状态时,显示控制器通过共享内存发送查询命令包到第二系统域,来确认是否有显示模拟器及相关状态;
步骤Sc:模拟显示处理器读取相关信息,处理查询命令,返回查询结果组成数据包通过共享内存发送给显示控制器;
步骤Sd:当选择针对第二系统域创建显示共享映射时,显示控制器会注册对应路第二系统域显示共享链表;且依据显示共享链表内容初始化相关内容,且依据显示共享链表内容,通过共享内存发送屏幕共享命令包和数据包到对应路第二系统域;
步骤Se:模拟显示处理器依据读取到的命令包和数据包初始化模拟显示链表,初始化模拟显示信息buffer,同时创建模拟显示驱动,初始化完成后修改状态为等待,并通过共享内存返回模拟显示共享信息,至此,第一系统域完成对应路第二系统域的显示共享映射创建,第一系统域与对应路第二系统域之间的模拟显示共享创建完成。
其中,显示管理器中的显示控制器与显示模拟器中的模拟显示处理器中通过共享内存实现的通讯过程还包括:
步骤Sf:当开始或者切换显示模拟时,对应路第二系统域显示模拟变为可用状态;
步骤Sg:当准备开始或切换显示共享时,显示控制器依据显示共享链表发送开始命令包,等对应路第二系统域返回成功结果后,显示控制器保存当前显示设备设置信息到显示共享链表对应显示信息buffer,然后依据显示共享链表切换显示到对应路第二系统域,显示控制器读取显示共享链表对应显示信息buffer设置显示设备;
之后通过步骤S1至步骤S8完成一个显示虚拟共享的实现机制。
本发明在一个显示设备被多个系统使用时,在对应显示设备接口需要在多个隔离系统之间切换使用时,在第二系统域需要共享使用显示设备的系统提供模拟显示驱动,使没有物理显示设备的系统可以通过访问模拟显示驱动达到与访问物理显示设备一样的效果,同时第一系统域相关显示软件模块通过转换为共享模拟显示驱动的方式提供给第二系统域,显示资源可以在隔离多系统之间灵活切换,有利于合理利用硬件和软件资源使用,减少相关资源浪费。
附图说明
图1:本发明的基于多系统隔离的显示虚拟共享系统的逻辑框架图(涉及linux主系统域共享显示资源到其它从系统域)
图2:本发明的基于多系统隔离的显示虚拟共享系统的逻辑框架图(涉及linux从系统域共享显示资源到其它从系统域)
图3:本发明的基于多系统隔离的显示虚拟共享系统的逻辑框架图(涉及rtos从系统域共享显示资源到其它主系统域或从系统域)
图4:本发明的基于多系统隔离的显示虚拟共享系统的显示控制器和模拟显示处理器通信机制图。
具体实施方式
为了对本发明的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本发明的技术方案及其产生的有益效果。
为了解决已有技术存在的不足,本发明的发明目的旨在提供一种基于多系统隔离的显示虚拟共享系统,在多核多系统上通过模拟显示及共享内存的方法,提供一种在多个系统(如linux主系统域与linux从系统域、linux系统域与rtos系统域等)间切换显示设备的机制,不同系统之间可以通过模拟共享驱动的方式共享显示资源,以节省硬件资源且合理利用软件资源,减少多系统间显示共享开发难度。
图1及图3分别为本发明的基于多系统隔离的显示虚拟共享系统的逻辑框架图,其中,图1涉及linux主系统域(下文简称“linux主域”)共享显示资源到其它从系统域,图2涉及linux从系统域(下文简称“linux从域”)共享显示资源到其它主系统域或从系统域,图3涉及rtos从系统域(下文简称“rtos从域”)共享显示资源到其它主系统域或从系统域。
以图1为例,详述本发明的实现机制和详细实现细节:本发明的基于多系统隔离的显示虚拟共享系统,包括多个系统域,其中有些系统域(图1中为linux主域,以下基于描述简洁需要,以“第一系统域”概括)拥有显示所需显示资源(包括显示设备、显示物理驱动及显示软件模块,显示设备包括DVI、DP、HDMI、GPU、VPU等设备及显卡等显示加速设备及液晶屏、LCD屏、OLED屏、串口屏等屏幕设备,显示物理驱动包括但不限于DVI、DP、HDMI、GPU、VPU、SPI,i2c、串口等屏幕驱动,显示软件模块包括但不限于渲染、硬件加速、OpenGL及其它显示类软件),这个系统域可以为任意系统(linux或者rtos系统)的主域或从域,其它系统域(图1中为linux从域及rtos从域,以下基于描述简洁需要,以“第二系统域”概括)则是需要共享linux主域显示资源的系统域。
各第一系统域上均运行有显示管理器、显示软件模块及显示物理驱动,显示管理器与显示软件模块及显示物理驱动连接,各第二系统域上均运行有显示模拟器,显示模拟器可以将第一系统域中显示软件模块及显示物理驱动的功能在第二系统域中实例化为模拟显示驱动,显示管理器与显示模拟器之间通过共享内存通信(即图1所示“ivshmem通信”),基于共享内存及显示模拟的方式,完成第一系统域及第二系统域之间的显示资源共享。
具体的,显示管理器包括显示控制器、显示信息buffer及显示控制模块,显示控制模块与显示控制器连接,显示信息buffer由显示控制器创建;显示模拟器用于在第二系统域提供模拟显示环境达到访问真实物理显示设备的效果,包括模拟显示处理器、模拟显示信息buffer及模拟显示驱动,模拟显示信息buffer由模拟显示处理器创建,模拟显示驱动在模拟显示处理器初始化时由其创建,是一个通用的显示驱动,供系统应用层调用;共享内存通信分别由显示管理器中的显示控制器及显示模拟器中的模拟显示处理器来完成,而显示控制模块则接收显示控制器信息来调用显示物理驱动和显示软件模块相关功能,显示模拟器将对应的显示物理驱动和显示软件模块在第二系统域转换的模拟显示驱动上实例化,基于此实现多系统显示虚拟共享,一个具体的实现过程如下:
1、应用层调用某个第二系统域的模拟显示驱动;
2、模拟显示驱动将应用层的调用请求及相关参数处理后通过消息队列发送给模拟显示处理器,也即,接收一个驱动处理消息;
3、模拟显示处理器将消息队列封包(包括涉及应用层的调用请求的命令包以及对相关参数处理后的数据包)处理后通过共享内存发送给显示控制器,也即,发送一个驱动使用消息;
4、显示控制器接收并处理封包数据,通过消息队列方式将处理后的封包数据发送给显示控制模块,也即将某个第二系统域应用层的调用请求及相关参数处理后的数据的消息队列发送到显示控制模块,显示控制模块调用显示物理驱动或显示软件模块相关功能并处理数据;
5、显示物理驱动或显示软件控制模块处理来自显示控制模块应用层的调用请求及相关参数处理后的数据的消息队列,来实际操作物理显示设备(例如实现屏幕显示、3D渲染、硬件加速等功能),并将显示物理驱动或显示软件模块接口使用结果作为显示物理驱动或显示软件模块返回信息给显示控制模块;
6、显示控制模块通过消息队列转接显示物理驱动或显示软件模块返回信息到显示控制器;
7、显示控制器封包处理显示物理驱动或显示软件模块返回信息并通过共享内存将封包处理后的显示物理驱动或显示软件模块返回信息通过共享内存发送到模拟显示处理器;
8、模拟显示处理器接收来自显示控制器的数据包和命令包处理后通过消息队列发送给对应模拟显示驱动,对应模拟显示驱动处理后返回结果给第二系统域应用层,供第二系统域使用第一系统域的显示物理驱动或显示软件模块的接口功能。
基于此,显示控制器已将第一系统域的显示物理驱动和显示软件模块共享映射到了第二系统域上,使第二系统域的应用层可以正常访问显示资源,正常使用共享映射的显示资源来显示信息。
本发明中,显示资源在同一时刻只能被一个系统域使用。
显示模拟器及显示管理器在实现一个完整的驱动模拟流程中,所涉及到的其它功能及技术设计细节详述如下。
一、显示管理器
1、显示控制器
在对应路第二系统域上共享显示资源时,显示控制器需创建对应路第二系统域的显示共享映射,以用于创建第一系统域与第二系统域之间的模拟显示共享(也可简称为“显示共享”):
首先,注册第一系统域和对应路第二系统域的显示共享链表,每一路显示共享映射对应一个显示共享链表节点,显示共享链表包含显示设备id,状态,对应驱动,显示信息buffer等相关内容,显示共享链表初始化通过默认参数和对应显示模拟共享配置文件来配置。
显示共享链表内容示例:
typedef struct display_info_g
{
uint8 status; // 显示状态
uint8 os_num; //选择显示切换对应第二系统域
uint8 id; //显示对应id
struct display_buffer display_buffer_t; //显示信息buffer
struct display_dev dev; //显示对应驱动
struct display_app_module module; //显示对应软件模块
struct com_tx tx; //显示命令发送结构体指针
struct com_rt rx; //显示命令接收结构体指针
struct data_tx tx; //显示数据发送结构体指针
struct data_rt rx; //显示数据接收结构体指针
struct display_info_g next;
} display_info_t;
其次,显示共享链表注册时,显示信息buffer就会初始化。显示信息buffer用来存储第一系统域和对应路第二系统域显示设备设置信息,以管理并恢复第一系统域的显示设备的相关设置,如亮度、分辨率、频率、色温、饱和度、渲染及加速等。
需要说明的是,本发明可设置多个第一系统域及多个第二系统域,在共享显示资源时,不仅一个第一系统域可以共享到多个第二系统域,一个第二系统域也可以共享多个第一系统域的显示资源,如有的第一系统域拥有的显示设备是hdmi设备,有的第一系统域拥有的显示设备是uart显示设备,而第二系统域有时需使用hdmi屏幕有时需使用uart屏幕。故,每个第一系统域都单独保存对应本路第一系统域的显示设备设置信息。
另外,当一个显示设备支持多路第二系统域时,通过显示控制器可以选择将显示设备映射到哪一路的第二系统域上;当一个显示设备需要被多路第二系统域轮询使用时,显示控制器负责切出对应路第二系统域并备份显示信息buffer,使用对应路第二系统域显示信息buffer初始化显示设备;在需要切换到其他第二系统域时,显示信息buffer就会保存需退出的第二系统域显示设备设置信息,当显示设备切换回来时通过显示信息buffer内容恢复对应路第二系统域显示设备设置。
本发明的显示设备,包括DVI、DP、HDMI、GPU、VPU等显示驱动设备及显卡等显示加速设备及液晶屏、LCD屏、OLED屏、串口屏等屏幕设备。
2、显示控制模块
如上所述,显示控制模块运行在显示管理器上,当需要映射显示设备到第二系统域时,显示控制模块接收来自显示控制器的命令包和数据包以控制显示物理驱动和显示软件模块,基于此实现物理显示设备和显示软件模块与模拟显示设备的数据交互;与此同时,显示控制模块还用于在将显示设备映射到第二系统域时,隔离显示物理驱动和显示软件模块与第一系统域上层的通信;在不需要映射显示设备到第二系统域时,显示控制模块不会隔离显示物理驱动和显示软件模块,第一系统域直接使用显示物理驱动和显示软件模块。
此外,显示控制模块还用于控制底层全部显示设备,包括但不限于设置显示设备、写入显示数据、调用相关显示设备接口读取数据以及显示加速等。 显示软件模块包括但不限于渲染、硬件加速、OpenGL及其它显示类软件,第一系统域显示软件模块可选择同显示设备绑定共享到第二系统域,显示软件模块也可以选择不共享到第二系统域。显示控制模块组织显示软件模块相关功能,提供给第二系统域,第一系统域显示软件模块在第二系统域被显示模拟器实例化为模拟显示驱动,以模拟显示驱动的形式供第二系统域应用层使用。
二、显示模拟器
1、模拟显示处理器
如上文所述,模拟显示处理器通过共享内存与显示管理器中的显示控制器通信并管理显示模拟行为,模拟显示处理器初始化时创建模拟显示驱动,并创建本路第二系统域的模拟显示链表以及初始化本路第二系统域的模拟显示信息buffer。
针对每一路第二系统域的模拟显示驱动,模拟显示处理器都会维护一个与之对应的模拟显示链表来记录相关信息。
模拟显示链表内容示例:
typedef struct show_info_g
{
uint8 status; // 模拟显示状态
uint8 id; //显示对应id
uint32 share; //显示那个第一系统域共享过来的模拟显示设备
struct show_buffer show_buffer_t; //模拟显示信息buffer
struct show_dev sim_dev; //模拟显示对应模拟驱动
struct com_tx tx; //模拟显示命令发送结构体指针
struct com_rt rx; //模拟显示命令接收结构体指针
struct data_tx tx; //模拟显示数据发送结构体指针
struct data_rt rx; //模拟显示数据接收结构体指针
struct show_info_g next;
} show_info_t;
同时,模拟显示信息buffer用于保存本路第二系统域显示设备设置信息,供第一系统域读取,在本路第二系统域显示模拟切换回来使用于恢复显示设备,具体的:在停止或者切换出本路的显示模拟时,保存显示设备设置信息;在开始或者创建显示共享时,用于初始化和恢复显示设备设置。
2、模拟显示驱动
如上文所述,模拟显示驱动是提供给应用层一个通用的显示驱动,通过上文所述的多系统显示虚拟共享实现机制,系统应用层可调用模拟显示驱动达到与调用真实物理驱动应用的功能,访问速度接近物理设备,同时第一系统域显示软件模块功能在第二系统域通过显示模拟器实例化为模拟显示驱动。
请结合图4所示,本发明中,显示管理器中的显示控制器与显示模拟器中的模拟显示处理器中通过共享内存实现的一个完整的通讯过程如下:
1、当显示物理驱动仅用于第一系统域时,对显示物理驱动和显示软件模块不做处理,当没有创建显示资源共享(下文简称“显示共享”)时显示控制器对本路的显示物理驱动和显示软件模块不做绑定处理,所谓的绑定处理,即将需要共享显示资源的第二系统域的显示设备设置信息写到第一系统域的显示共享链表内;
2、当查询显示共享状态时,显示控制器通过共享内存发送查询命令包到第二系统域,来确认是否有显示模拟器及相关状态。
3、模拟显示处理器读取相关信息,处理查询命令,返回查询结果组成数据包通过共享内存发送给显示控制器;
4、当选择针对第二系统域创建显示共享映射时,显示控制器会注册对应路第二系统域显示共享链表;且依据显示共享链表内容初始化相关内容,且依据显示共享链表内容,通过共享内存发送屏幕共享命令包和数据包到对应路第二系统域(对应图4中的“创建显示共享映射,初始化显示共享资源”,以及“发送模拟显示共享信息”)。
5、模拟显示处理器依据读取到的命令包和数据包初始化模拟显示链表,初始化模拟显示信息buffer,同时创建模拟显示驱动(对应图4的“显示模拟器初始化”),初始化完成后修改状态为等待,并通过共享内存返回模拟显示共享信息,至此,第一系统域完成对应路第二系统域的显示共享映射创建,第一系统域与对应路第二系统域之间的模拟显示共享创建完成。
6、当开始或者切换显示驱动模拟时,对应路第二系统域显示模拟变为可用状态(对应图4中的“开始或切换显示到其它域”)。
7、当准备开始或切换显示共享时,显示控制器依据显示共享链表发送开始命令包,等对应路第二系统域返回成功结果后(对应图4中“返回状态”),显示控制器保存当前显示设备设置信息到显示共享链表对应显示信息buffer,然后依据显示共享链表切换显示到对应路第二系统域,显示控制器读取显示共享链表对应显示信息buffer设置显示设备。
8、应用层调用第二系统域的模拟显示驱动,正式开始显示模拟;
9、模拟显示驱动将应用层的调用请求及相关参数处理后通过消息队列发送给模拟显示处理器,模拟显示处理器将消息队列封包(包括涉及应用层的调用请求的命令包以及对相关参数处理后的数据包)处理后通过共享内存发送给显示控制器(对应图4中的“接收模拟数据包和命令包并解析处理”,以及,“发送显示数据包和命令包”);
10、显示控制器接收并处理封包数据,通过消息队列方式将处理后的封包数据发送给显示控制模块,也即将某个第二系统域应用层的调用请求及相关参数处理后的数据的消息队列发送到显示控制模块,显示控制模块调用显示物理驱动或显示软件模块相关功能并处理数据;
11、显示物理驱动或显示软件控制模块处理来自显示控制模块应用层的调用请求及相关参数处理后的数据的消息队列,来实际操作物理显示设备(例如实现屏幕显示、3D渲染、硬件加速等功能),并将显示物理驱动或显示软件模块接口使用结果作为显示物理驱动或显示软件模块返回信息给显示控制模块(对应图4中的“返回处理结果”);显示物理驱动包括但不限于DVI、DP、HDMI、GPU、VPU、SPI,i2c、串口等屏幕驱动;
12、显示控制模块通过消息队列转接显示物理驱动或显示软件模块返回信息到显示控制器;
13、显示控制器封包处理显示物理驱动或显示软件模块返回信息并通过共享内存将封包处理后的显示物理驱动或显示软件模块返回信息通过共享内存发送到模拟显示处理器;
14、模拟显示处理器接收来自显示控制器的数据包和命令包处理后通过消息队列发送给对应模拟显示驱动,对应模拟显示驱动处理后返回结果给第二系统域应用层,供第二系统域使用第一系统域的显示物理驱动或显示软件模块的接口功能。
15、当显示驱动模拟停止时(对应图4中“切换或停止模拟显示共享”),显示控制器发送停止命令包到第二系统域(对应图4中“发送模拟显示共享停止信息”),在接收返回的状态信息后(对应图4中“返回模拟显示共享停止”),备份对应路显示设备设置信息到显示信息buffer(对应图4“保存显示设备设置信息”)。如果是切换回本系统,则调用本系统显示对应的显示共享链表来还原显示设备设置;如果是切换到其他系统域,则调用其他系统域显示共享链表来映射和还原显示设备设置。
16、当显示共享驱动停止时,模拟显示处理器备份显示设备设置信息到对应模拟显示链表(对应图4中“备份显示设备设置信息”),修改相关状态,对应模拟显示驱动变为不可用。然后发送停止完成命令给显示管理器。
以上过程中,显示控制器在写数据到共享内存后,第二系统域会触发中断来读取数据。同理,模拟显示处理器写数据到共享内存后,会触发中断通知显示控制器读取数据。
本发明的有益效果如下:
1、本发明在多核多系统隔离设备上,第一系统域的显示资源(硬件和软件资源),可以通过模拟共享方法选择第一系统域不同显示资源到第二系统域来使用,灵活切换显示设备,合理利用显示资源。
2、本发明在一个显示设备被多个系统使用时,在对应屏幕显示接口需要多个系统切换使用时,可以通过软件切换,合理利用硬件资源使用,减少相关资源浪费。
3、本发明借助linux对DVI,DP,HDMI等高级显示驱动的支持,通过共享内存通信在rtos系统域模拟显示驱动,提供给rtos域对应的显示驱动支持;借助linux对渲染、硬件加速、OpenGL及其它显示类软件支持能力,在rtos系统域模拟为显示驱动,使rtos系统支持相关渲染、硬件加速、OpenGL及其它显示类软件功能;借助rtos域对小型屏幕驱动的支持,通过共享内存通信在linux系统域模拟显示驱动,提供给linux域对应显示驱动支持。同时提供了隔离多系统之间一个系统域软件功能在另一个系统域转换为模拟驱动的方法,方便了对复杂软件功能的共享使用,减少对应驱动移植工作量。
4、本发明可以在屏幕上选择显示相关信息,显示软件资源和操作系统隔离,通过在一些需要保护显示信息的系统上显示资源隔离共享,可以有效保护显示资源,提高了系统显示稳定性和安全性。
虽然本发明已利用上述较佳实施例进行说明,然其并非用以限定本发明的保护范围,任何本领域技术人员在不脱离本发明的精神和范围之内,相对上述实施例进行各种变动与修改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。
Claims (6)
1.基于多系统隔离的显示虚拟共享系统,其特征在于:包括多个系统域,其中一部分系统域为第一系统域,另一部分系统域为第二系统域,第一系统域为拥有显示所需显示资源的系统域,第二系统域为需要共享第一系统域显示资源的系统域,第一系统域拥有的显示所需显示资源包括显示设备、显示物理驱动及显示软件模块;
各第一系统域上均运行有显示管理器、显示软件模块及显示物理驱动,显示管理器与显示软件模块及显示物理驱动连接,各第二系统域上均运行有显示模拟器,显示管理器与显示模拟器之间通过共享内存通信,基于共享内存及显示模拟的方式,完成第一系统域及第二系统域之间的显示资源共享;
显示管理器包括显示控制器、显示信息buffer及显示控制模块,显示控制模块与显示控制器连接,显示信息buffer由显示控制器创建;
显示模拟器包括模拟显示处理器、模拟显示信息buffer及模拟显示驱动,模拟显示信息buffer由模拟显示处理器创建,同时,模拟显示驱动由模拟显示处理器初始化时创建;
共享内存通信分别由显示管理器中的显示控制器及显示模拟器中的模拟显示处理器来完成;显示控制模块接收显示控制器信息来调用显示物理驱动和显示软件模块相关功能,并在显示资源共享过程中将对应的显示物理驱动和显示软件模块在第二系统域的模拟显示驱动上实例化,基于此实现多系统显示虚拟共享;
多系统显示虚拟共享的实现机制包括:
步骤S1:应用层调用某个第二系统域的模拟显示驱动;
步骤S2:模拟显示驱动将应用层的调用请求及相关参数处理后通过消息队列发送给模拟显示处理器;
步骤S3:模拟显示处理器将消息队列封包处理后通过共享内存发送给显示控制器,封包的数据包括应用层的调用请求的命令包以及对相关参数处理后的数据包;
步骤S4:显示控制器接收并处理封包数据,通过消息队列方式将处理后的封包数据发送给显示控制模块,显示控制模块调用显示物理驱动或显示软件模块相关功能并处理数据;
步骤S5:显示物理驱动或显示软件控制模块处理来自显示控制模块应用层的调用请求及相关参数处理后的数据的消息队列,来实际操作物理显示设备,并将显示物理驱动或显示软件模块接口使用结果作为显示物理驱动或显示软件模块返回信息给显示控制模块;
步骤S6:显示控制模块通过消息队列转接显示物理驱动或显示软件模块返回信息到显示控制器;
步骤S7:显示控制器封包处理显示物理驱动或显示软件模块返回信息并通过共享内存将封包处理后的显示物理驱动或显示软件模块返回信息通过共享内存发送到模拟显示处理器;
步骤S8:模拟显示处理器接收来自显示控制器的数据包和命令包处理后通过消息队列发送给对应模拟显示驱动,对应模拟显示驱动处理后返回结果给第二系统域应用层,供第二系统域使用第一系统域的显示物理驱动或显示软件模块的接口功能。
2.如权利要求1所述的基于多系统隔离的显示虚拟共享系统,其特征在于:在对应路第二系统域上共享相关第一系统域上的显示资源前,相关第一系统域的显示控制器通过注册对应路第二系统域的显示共享链表创建对应路第二系统域的显示共享映射,注册显示共享链表时,对应路第二系统域的显示信息buffer初始化,显示信息buffer用来存储第一系统域和对应路第二系统域显示设备设置信息。
3.如权利要求2所述的基于多系统隔离的显示虚拟共享系统,其特征在于:相关第一系统域上的显示设备需要被多路第二系统域轮询使用时,针对需切出的第二系统域,由相关第一系统域上的显示控制器负责切出对应路第二系统域并备份显示信息buffer;针对需切入的第二系统域,由相关第一系统域上的显示控制器使用对应路第二系统域显示信息buffer初始化显示设备。
4.如权利要求1所述的基于多系统隔离的显示虚拟共享系统,其特征在于:模拟显示信息buffer用于保存本路第二系统域显示设备设置信息,供第一系统域读取,在对应路第一系统域上切换回本路第二系统域显示模拟时用于恢复显示设备设置。
5.如权利要求1所述的基于多系统隔离的显示虚拟共享系统,其特征在于:显示管理器中的显示控制器与显示模拟器中的模拟显示处理器中通过共享内存实现的通讯过程包括:
步骤Sa:当显示物理驱动仅用于第一系统域时,对显示物理驱动和显示软件模块不做处理,当没有创建显示共享时显示控制器对对应路显示物理驱动和显示软件模块不做绑定处理,所谓的绑定处理,即将需要共享显示资源的第二系统域的显示设备设置信息写到第一系统域的显示共享链表内;
步骤Sb:当查询显示共享状态时,显示控制器通过共享内存发送查询命令包到第二系统域,来确认是否有显示模拟器及相关状态;
步骤Sc:模拟显示处理器读取相关信息,处理查询命令,返回查询结果组成数据包通过共享内存发送给显示控制器;
步骤Sd:当选择针对第二系统域创建显示共享映射时,显示控制器会注册对应路第二系统域显示共享链表;且依据显示共享链表内容初始化相关内容,且依据显示共享链表内容,通过共享内存发送屏幕共享命令包和数据包到对应路第二系统域;
步骤Se:模拟显示处理器依据读取到的命令包和数据包初始化模拟显示链表,初始化模拟显示信息buffer,同时创建模拟显示驱动,初始化完成后修改状态为等待,并通过共享内存返回模拟显示共享信息,至此,第一系统域完成对应路第二系统域的显示共享映射创建,第一系统域与对应路第二系统域之间的模拟显示共享创建完成。
6.如权利要求5所述的基于多系统隔离的显示虚拟共享系统,其特征在于:显示管理器中的显示控制器与显示模拟器中的模拟显示处理器中通过共享内存实现的通讯过程还包括:
步骤Sf:当开始或者切换显示模拟时,对应路第二系统域显示模拟变为可用状态;
步骤Sg:当准备开始或切换显示共享时,显示控制器依据显示共享链表发送开始命令包,等对应路第二系统域返回成功结果后,显示控制器保存当前显示设备设置信息到显示共享链表对应显示信息buffer,然后依据显示共享链表切换显示到对应路第二系统域,显示控制器读取显示共享链表对应显示信息buffer设置显示设备;
之后通过步骤S1至步骤S8完成一个显示虚拟共享的实现机制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410290105.9A CN117891565B (zh) | 2024-03-14 | 2024-03-14 | 基于多系统隔离的显示虚拟共享系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410290105.9A CN117891565B (zh) | 2024-03-14 | 2024-03-14 | 基于多系统隔离的显示虚拟共享系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117891565A CN117891565A (zh) | 2024-04-16 |
CN117891565B true CN117891565B (zh) | 2024-05-17 |
Family
ID=90647531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410290105.9A Active CN117891565B (zh) | 2024-03-14 | 2024-03-14 | 基于多系统隔离的显示虚拟共享系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117891565B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275785B1 (en) * | 1997-11-15 | 2001-08-14 | International Business Machines Corporation | Hardware simulator for a transaction processing system |
CN102135866A (zh) * | 2010-10-29 | 2011-07-27 | 华南理工大学 | 一种基于Xen安全计算机显示优化的方法 |
CN102243571A (zh) * | 2011-07-08 | 2011-11-16 | 西安交通大学 | 一种面向嵌入式Hypervisor的多视窗显示虚拟化操作方法 |
CN109725867A (zh) * | 2019-01-04 | 2019-05-07 | 中科创达软件股份有限公司 | 虚拟化屏幕共享方法、装置及电子设备 |
CN111752684A (zh) * | 2020-06-30 | 2020-10-09 | 北京小米松果电子有限公司 | 显示方法及装置 |
CN117112083A (zh) * | 2023-10-23 | 2023-11-24 | 南京芯驰半导体科技有限公司 | 用于多硬件域SoC的调用摄像头数据的方法及多硬件域SoC |
CN117407123A (zh) * | 2023-12-12 | 2024-01-16 | 麒麟软件有限公司 | 基于多系统隔离的usb设备虚拟共享系统 |
CN117591489A (zh) * | 2024-01-16 | 2024-02-23 | 麒麟软件有限公司 | 基于多系统隔离的虚拟文件共享系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9058759B2 (en) * | 2012-06-14 | 2015-06-16 | Avatron Software, Inc. | Virtual display device drivers compatible with windows display driver model |
-
2024
- 2024-03-14 CN CN202410290105.9A patent/CN117891565B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275785B1 (en) * | 1997-11-15 | 2001-08-14 | International Business Machines Corporation | Hardware simulator for a transaction processing system |
CN102135866A (zh) * | 2010-10-29 | 2011-07-27 | 华南理工大学 | 一种基于Xen安全计算机显示优化的方法 |
CN102243571A (zh) * | 2011-07-08 | 2011-11-16 | 西安交通大学 | 一种面向嵌入式Hypervisor的多视窗显示虚拟化操作方法 |
CN109725867A (zh) * | 2019-01-04 | 2019-05-07 | 中科创达软件股份有限公司 | 虚拟化屏幕共享方法、装置及电子设备 |
CN111752684A (zh) * | 2020-06-30 | 2020-10-09 | 北京小米松果电子有限公司 | 显示方法及装置 |
CN117112083A (zh) * | 2023-10-23 | 2023-11-24 | 南京芯驰半导体科技有限公司 | 用于多硬件域SoC的调用摄像头数据的方法及多硬件域SoC |
CN117407123A (zh) * | 2023-12-12 | 2024-01-16 | 麒麟软件有限公司 | 基于多系统隔离的usb设备虚拟共享系统 |
CN117591489A (zh) * | 2024-01-16 | 2024-02-23 | 麒麟软件有限公司 | 基于多系统隔离的虚拟文件共享系统 |
Also Published As
Publication number | Publication date |
---|---|
CN117891565A (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103034524B (zh) | 半虚拟化的虚拟gpu | |
JP3659062B2 (ja) | 計算機システム | |
CN112764872B (zh) | 计算机设备、虚拟化加速设备、远程控制方法及存储介质 | |
CN102135866B (zh) | 一种基于Xen安全计算机显示优化的方法 | |
EP3627319B1 (en) | Display resource scheduling method and device for embedded system | |
CN102053871B (zh) | 一种应用程序图像的显示方法和装置 | |
WO2018119951A1 (zh) | Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品 | |
CN113312143B (zh) | 云计算系统、命令处理方法及虚拟化仿真装置 | |
CN103874984A (zh) | 可虚拟化以及前向兼容硬件-软件接口 | |
US11875145B2 (en) | Virtual machine update while keeping devices attached to the virtual machine | |
CN113419845A (zh) | 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质 | |
CN117389694B (zh) | 基于virtio-blk技术提升虚拟存储IO性能的方法 | |
CN115309511A (zh) | 基于Xen的数据交互方法、装置、存储介质以及电子设备 | |
CN115904617A (zh) | 一种基于sr-iov技术的gpu虚拟化实现方法 | |
CN117891565B (zh) | 基于多系统隔离的显示虚拟共享系统 | |
US20240062450A1 (en) | Cloud Image Rendering for Concurrent Processes | |
CN115373618B (zh) | 一种多屏显示方法、装置、车机及存储介质 | |
CN113320568B (zh) | 一种基于多系统融合的列车网络控制系统及其控制方法 | |
CN115913953A (zh) | 一种云资源加速方法、装置及其介质 | |
CN112698874B (zh) | 一种麒麟系统中ast显卡和独立显卡同时显示的方法 | |
CN115981795B (zh) | 一种在安卓设备上通过容器实现系统隔离的方法 | |
CN109669725B (zh) | 一种主从机系统的控制方法及硬件架构,及主从机系统 | |
CN117687706A (zh) | 基于输入输出虚拟化的配置和请求处理方法、装置和设备 | |
CN117992157A (zh) | 一种虚拟机的图像显示方法及装置 | |
CN117938663A (zh) | 虚拟机的迁移方法、装置、电子设备和介质 |
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 |