基于飞腾处理器平台的多显示屏输出方法

文档序号:6365183阅读:468来源:国知局
专利名称:基于飞腾处理器平台的多显示屏输出方法
技术领域
本发明涉及多屏显示领域,具体涉及一种基于飞腾处理器平台的多显示屏输出方法。
背景技术
多显示屏输出方法又称显示墙技术,一般用于实现超大屏幕的画面输出,目前在指挥调度、媒体展示、金融贸易等领域得到了广泛的应用。现有的显示墙技术一般通过专门硬件设备来实现多显示屏输出,这些专门硬件设备被称为大屏幕处理器拼接器。但是,大屏幕处理器拼接器一般都是基于x86平台实现,飞腾处理器平台的飞腾处理器基于spare体系结构,spare体系结构与x86体系结构无法兼容,如需针对spare体系结构开发大屏幕处理器拼接器则需要设计专门的硬件和软件,存在成本高、造价昂贵的问题。传统显卡基于多CRTC控制器,每路CRTC控制器(Cathode Ray Tube Controller, 阴极管射线控制器)可输出一路显示信号,多CRTC控制器则可输出多屏显示信号,实现多屏扩展,但输出屏幕个数受限于卡上CRTC控制器数量。目前也有通过修改显卡硬件本身, 即在一块显示设备上增加CRTC控制器和帧缓冲(Framebuffer)数量实现多屏输出的方法。 帧缓冲存在于硬件上的存储空间内,并用于存放将要显示在显示屏上的一帧待输出画面; CRTC控制器位于显卡内,CRTC控制器是一种扫描输出控制器,CRTC控制器能够周期扫描帧缓冲,将巾贞缓冲中存放的一巾贞待输出画面转换成输出信号并输出给显不屏。但是,在一块显示设备上增加CRTC控制器和帧缓冲数量实现多屏输出的方法存在如下的局限性1、该方法实现多屏显示是将窗口管理器(窗口管理器,是显示图像的绘制程序)分别写入CRTC控制器对应的帧缓冲,需要对待显示画面进行数据处理,对硬件要求搞、输出效率低;2、由于显卡增加CRTC控制器和帧缓冲会导致成本较高;3、增加CRTC控制器和帧缓冲受到显卡体积的约束;4、由于增加CRTC控制器和帧缓冲固定在显卡内,可扩展性差;5、这些实现往往是基于x86体系结构,无法与spare体系结构的飞腾处理处理器兼容。综上所述,飞腾处理器平台目前尚无较好的多显示屏输出方法,严重制约了飞腾处理器在多屏显示领域的应用和推广。

发明内容
本发明针对上述现有技术的缺陷,提供一种无需修改现有显卡硬件、显卡兼容性好、输出效率高、可扩展性能好、实施成本低的基于飞腾处理器平台的多显示屏输出方法。为了解决上述技术问题,本发明采用的技术方案为一种基于飞腾处理器平台的多显示屏输出方法,其实施步骤如下
1)安装至少两块显卡;
2)在操作系统启动时,依次初始化各显卡及其CRTC控制器,获取所有CRTC控制器的缓冲帧空间总大小,预留与所述缓冲帧空间总大小相同且连续分布的保留虚拟内存空间,将所述各CRTC控制器的帧缓冲与所述保留虚拟内存空间内的虚拟内存地址依次建立一一映射;
3)在操作系统运行时,将待输出画面实时缓存至所述保留虚拟内存空间中,所述CRTC 控制器分别读取其帧缓冲所映射虚拟内存地址中存储的待输出画面片段,并将所述待输出画面片段转换成输出信号输出至显示屏。作为本发明上述技术方案的进一步改进
所述步骤2)中依次初始化各显卡及其CRTC控制器的步骤包括从第一片显卡开始, 首先关闭所有显卡VGA信号的传递,然后打开当前显卡的VGA信号传递,运行当前显卡的 VIDEO BIOS初始化例程完成当前显卡及其CRTC控制器的初始化,重复上述步骤直至完成所有显卡及其CRTC控制器的初始化。所述步骤2)中将各CRTC控制器的帧缓冲与保留虚拟内存空间内的虚拟内存地址依次建立一一映射的步骤包括:A)选定一个帧缓冲作为当前帧缓冲,将保留虚拟内存空间的起始地址作为当前地址;B)从所述当前地址开始获取一段与所述当前帧缓冲大小相同的地址空间,修改所述地址空间中各个地址对应的页表项,使得所述页表项依次指向所述当前帧缓冲的各个页,完成当前帧缓冲的映射;C)将下一个帧缓冲作为当前帧缓冲,设置与所述地址空间相邻的下一个地址作为当前地址,重复步骤B)直至完成所有帧缓冲的映射。本发明具有下述优点
I、本发明无需修改现有显卡的硬件设计,能够利用标准的、易获取的、廉价的普通低端显卡,将各CRTC控制器的帧缓冲与保留虚拟内存空间内的虚拟内存地址依次建立一一映射,使每一个CRTC控制器输出的单个屏幕是整个完整屏幕的一部分,从而实现飞腾处理器平台的多显示屏输出,能够根据需要选择不同数量的显卡或者具有不同数量CRTC控制器的显卡来扩展实现不同数量的多显示屏输出,具有可扩展性能好、使用灵活方便、显卡兼容性好、显卡性能要求低、实施成本低的优点。2、本发明采用映射的方式实现待输出画面的重定向输出,使位于同一块显卡上或不同显卡上的帧缓冲映射为一片连续的、虚拟的帧缓冲,采用高效率的映射方式直接将待输出画面写入帧缓冲映射的保留虚拟内存空间内,CRTC控制器则直接读取保留虚拟内存空间内存储的待输出画面片段,通过帧缓冲与虚拟内存地址的一一映射关系自动将待输出画面分割为待输出画面片段,整个输出过程无需对将待输出画面进行额外的数据中转处理, 硬件性能要求低,显示输出效率高,低端PCI显卡即可满足需求,极大地降低了实现多屏输出的成本,提高了飞腾处理器平台在多屏输出领域的核心竞争力。


图I为本发明实施例的主要硬件框架结构示意图。图2为本发明实施例的四显示屏输出原理结构示意图。图3为本发明实施例初始化以及映射的详细流程示意图。图4为本发明实施例帧缓冲与保留虚拟内存空间的映射关系示意图。
具体实施例方式如图I所示,本实施例采用带有双CRTC控制器的两个显卡实现4显示屏输出,飞腾处理器平台涉及显示输出的硬件结构主要包括显卡I、显卡2、主桥和CPU,主桥和CPU相
4连,显卡I、显卡2分别与主桥相连,主桥用于实现硬件通信标准不同的CPU和显卡之间信号的转发,显卡I内设有桥I,桥I用于转发来自主桥对显卡I的访问,显卡2内设有桥2, 桥2用于转发主桥对显卡2的访问。本实施例中,显卡I和显卡2均采用采用AMD HD4350 显卡(显示芯片型号是RV710),显卡I和显卡2均包含两个CRTC控制器,每一个CRTC控制器的输出分辨率为1024X768,其帧缓冲大小为3M,因此步骤2)中获取4片CRTC控制器的缓冲帧空间总大小为12MB,向操作系统申请与缓冲帧空间总大小相同且连续分布的保留虚拟内存空间的大小也为12MB。每个CRTC控制器可以扫描缓冲帧将扫描的数据输出到一个显示屏,从而通过显卡I和显卡2可实现四个显示屏的输出。本实施例的主桥芯片型号为 PXE 8664,CPU采用基于spare体系结构的飞腾1000处理器,运行的操作系统为Iinux操作系统。本实施例基于飞腾处理器平台的多显示屏输出方法的实施步骤如下
O安装两块显卡(此外也可以根据需要安装一块显卡或者两块以上的显卡);
2)在操作系统启动时,依次初始化各显卡及其CRTC控制器,获取CRTC控制器的缓冲帧空间总大小,预留与缓冲帧空间总大小相同且连续分布的保留虚拟内存空间,将各CRTC控制器的帧缓冲与保留虚拟内存空间内的虚拟内存地址依次建立--映射;
3)在操作系统运行时,将待输出画面实时缓存至保留虚拟内存空间中,CRTC控制器分别读取其帧缓冲所映射虚拟内存地址中存储的待输出画面片段,并将待输出画面片段转换成输出信号输出至显示屏。如图2所示,在操作系统运行时,将待输出画面实时缓存至保留虚拟内存空间中, CRTC控制器分别读取其帧缓冲所映射虚拟内存地址中存储的待输出画面片段,并将待输出画面片段转换成输出信号输出至显示屏,即显卡I的第一 CRTC控制器(CRTCO)读取第一个虚拟内存地址段内存储的待输出画面片段,将其转换成输出信号输出至显示屏I ;显卡I 的第二 CRTC控制器(CRTC1)读取第二个虚拟内存地址段内存储的待输出画面片段,将其转换成输出信号输出至显示屏2 ;显卡2的第一 CRTC控制器(CRTCO)读取第三个虚拟内存地址段内存储的待输出画面片段,将其转换成输出信号输出至显示屏3 ;显卡2的第二 CRTC 控制器(CRTCl)读取第四个虚拟内存地址段内存储的待输出画面片段,将其转换成输出信号输出至显示屏4,从而完成多显示屏输出。由于传统的初始化各显卡及其CRTC控制器时,并没有考虑多显卡的情况,都是直接将CPU到显示器之间的所有桥路的VGA使能位都会被置I。这样的初始化方法在对多个显卡的初始化时会导致错误发生,无法实现对多个显卡的及其CRTC控制器的初始化。而本实施例中,通过依次初始化各显卡及其CRTC控制器,能够有效实现多显卡体系结构下的显卡及其CRTC控制器初始化。本实施例中初始化双显卡及其CRTC控制器的步骤包括步骤2)中初始化各显卡及其CRTC控制器的步骤包括从第一片显卡开始,首先关闭所有显卡 VGA信号的传递,然后打开当前显卡的VGA信号传递,运行当前显卡的VIDEO BIOS初始化例程完成当前显卡及其CRTC控制器的初始化,重复上述步骤直至完成所有显卡及其CRTC控制器的初始化。本实施例中关闭所有显卡VGA信号的传递是通过关闭所有桥上的VGA使能位来实现的,打开当前显卡的VGA信号传递是通过查找当前显卡的上级桥并打开当前显卡所有上级桥上的VGA位来实现的。如图3所示,本实施例步骤2)中依次初始化各显卡及其CRTC控制器的步骤包括从第一片显卡开始,首先关闭所有显卡VGA信号的传递,然后打开当前显卡的VGA信号传递,运行当前显卡的VIDEO BIOS初始化例程完成当前显卡及其CRTC控制器的初始化,重复上述步骤直至完成所有显卡及其CRTC控制器的初始化。本实施例中上述初始化的具体步骤为
a)初始化显卡1,首先将主桥、桥I和桥2的VGA使能位(VGA使能位一般位于桥PCI配置空间BRIDGE CONTROL字段,其偏移为0x3E,桥PCI配置空间是一个软件接口标准,定义了用于配置该桥的接口,桥芯片都满足该标准)全部置为0,关闭所有显卡VGA信号的传递。 然后将主桥、桥I的VGA使能位置为1,打开显卡I的VGA信号传递,运行显卡I的VIDEO BIOS初始化例程完成显卡I及其CRTC控制器的初始化。b)初始化显卡2,首先将主桥、桥I和桥2的VGA使能位全部置为0,关闭所有显卡 VGA信号的传递。然后将主桥、桥2的VGA使能位置为I,打开显卡2的VGA信号传递,运行显卡2的VIDEO BIOS初始化例程完成显卡I及其CRTC控制器的初始化。本实施例步骤2)中将各CRTC控制器的帧缓冲与保留虚拟内存空间内的虚拟内存地址依次建立一一映射的步骤包括:A)选定一个帧缓冲作为当前帧缓冲,将保留虚拟内存空间的起始地址作为当前地址;B)从当前地址开始获取一段与当前帧缓冲大小相同的地址空间,修改地址空间中各个地址对应的页表项,使得页表项依次指向当前帧缓冲的各个页, 完成当前帧缓冲的映射;C)将下一个帧缓冲作为当前帧缓冲,设置与地址空间相邻的下一个地址作为当前地址,重复步骤B)直至完成所有帧缓冲的映射。其中,各CRTC控制器的帧缓冲与保留虚拟内存空间内的虚拟内存地址的映射次序直接影响到各个待输出画面片段之间的排列关系,因此可以根据所需要的各个待输出画面片段之间的排列关系来决定各 CRTC控制器的帧缓冲与保留虚拟内存空间内的虚拟内存地址建议映射的次序。如图3所示,本实施例步骤2)的具体步骤包括
I )计算4片帧缓冲的总大小(12MB),申请12MB虚拟内存空间作为保留虚拟内存空间。II)初始化 i=0。III)首先根据vaddr_base*(i*framebuffer_size)获取第i片巾贞缓冲的待映射虚拟内存地址,其中,vaddr_base表示要映射到的虚拟地址基地址,framebuffer_size表示当前分辨率下帧缓冲的大小;然后修改对应虚拟地址连续页表项(虚拟地址连续页表项,虚拟地址的映射都是由页表控制,要修改连续虚拟的映射即修改对应的连续的页表项),完整映射第i片帧缓冲,然后继续执行步骤IV)。IV)递增游标变量i,判断游标变量i是否小于4,如果i小于4则跳到步骤III)继续执行,如果i等于4则结束映射过程。如图4所示,步骤2)的映射完成后,将两块显卡上4片帧缓冲,映射进X server 的进程空间成一片帧缓冲,各CRTC控制器的帧缓冲与保留虚拟内存空间内的虚拟内存地址呈一一映射关系,即显卡I的第一 CRTC控制器(CRTCO)映射保留虚拟内存空间内的第一个虚拟内存地址段;显卡I的第二 CRTC控制器(CRTCl)映射保留虚拟内存空间内的第二个虚拟内存地址段;显卡2的第一 CRTC控制器(CRTCO)映射保留虚拟内存空间内的第三个虚拟内存地址段;显卡2的第二 CRTC控制器(CRTCl)映射保留虚拟内存空间内的第四个虚拟内存地址段;第一个虚拟内存地址段、第二个虚拟内存地址段、第三个虚拟内存地址段、 第四个虚拟内存地址段在保留虚拟内存空间内依次连续分布。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例, 凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种基于飞腾处理器平台的多显示屏输出方法,其特征在于其实施步骤如下1)安装至少两块显卡;2)在操作系统启动时,依次初始化各显卡及其CRTC控制器,获取所有CRTC控制器的缓冲帧空间总大小,预留与所述缓冲帧空间总大小相同且连续分布的保留虚拟内存空间,将所述各CRTC控制器的帧缓冲与所述保留虚拟内存空间内的虚拟内存地址依次建立一一映射;3)在操作系统运行时,将待输出画面实时缓存至所述保留虚拟内存空间中,所述CRTC 控制器分别读取其帧缓冲所映射虚拟内存地址中存储的待输出画面片段,并将所述待输出画面片段转换成输出信号输出至显示屏。
2.根据权利要求I所述的基于飞腾处理器平台的多显示屏输出方法,其特征在于,所述步骤2)中依次初始化各显卡及其CRTC控制器的步骤包括从第一片显卡开始,首先关闭所有显卡VGA信号的传递,然后打开当前显卡的VGA信号传递,运行当前显卡的VIDEO BIOS 初始化例程完成当前显卡及其CRTC控制器的初始化,重复上述步骤直至完成所有显卡及其CRTC控制器的初始化。
3.根据权利要求I或2所述的基于飞腾处理器平台的多显示屏输出方法,其特征在于, 所述步骤2)中将各CRTC控制器的帧缓冲与保留虚拟内存空间内的虚拟内存地址依次建立一一映射的步骤包括:A)选定一个帧缓冲作为当前帧缓冲,将保留虚拟内存空间的起始地址作为当前地址;B)从所述当前地址开始获取一段与所述当前帧缓冲大小相同的地址空间,修改所述地址空间中各个地址对应的页表项,使得所述页表项依次指向所述当前帧缓冲的各个页,完成当前帧缓冲的映射;C)将下一个帧缓冲作为当前帧缓冲,设置与所述地址空间相邻的下一个地址作为当前地址,重复步骤B)直至完成所有帧缓冲的映射。
全文摘要
本发明公开了一种基于飞腾处理器平台的多显示屏输出方法,其实施步骤如下1)安装至少两块显卡;2)在操作系统启动时依次初始化各显卡及其CRTC控制器,获取所有CRTC控制器的缓冲帧空间总大小,预留与缓冲帧空间总大小相同的保留虚拟内存空间,将各CRTC控制器的帧缓冲与保留虚拟内存空间内的虚拟内存地址依次建立一一映射;3)在操作系统运行时将待输出画面实时缓存至所述保留虚拟内存空间中,CRTC控制器分别读取其帧缓冲所映射虚拟内存地址中存储的待输出画面片段,并将所述待输出画面片段转换成输出信号输出至显示屏。本发明无需修改现有显卡硬件,具有显卡兼容性好、硬件性能要求低、显示输出效率高、实施成本低的优点。
文档编号G06F3/14GK102609231SQ201210040519
公开日2012年7月25日 申请日期2012年2月22日 优先权日2012年2月22日
发明者吴庆波, 周剑, 孔金珠, 孙立明, 张铎, 戴华东, 肖敛涛, 邵立松 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1