帧缓冲区状态保护方法

文档序号:6639335阅读:249来源:国知局
专利名称:帧缓冲区状态保护方法
技术领域
本发明涉及一种与嵌入式系统兼容的安全保护方法,特别是涉及一种Qt/Embedded系统下帧缓冲区(Frame Buffer)状态的保护方法。
背景技术
Qt/Embedded是著名的Qt库开发商Trolltech公司开发的面向嵌入式Linux的图形用户接口系统,采用服务器/客户端结构。许多基于Qt的X微窗口系统(X Window)程序可以非常方便地移植到Qt/Embedded上,延续了在X上的强大功能,在底层彻底摒弃了X函数库,仅采用帧缓冲区作为其底层图形接口。丰富的控件资源和较好的可移植性是Qt/Embedded最为优秀的一方面,使用X下的开发工具可以直接开发基于Qt/Embedded的用户操作接口界面。越来越多的第三方软件公司也开始采用Qt/Embedded,开发嵌入式Linux下的应用软件。
帧缓冲是一种Linux内核的控制台图形功能,在i386体系上主要的设备驱动通过视频电子标准协会基本输入/输出系统(VESA BIOS)完成,为图形硬件提供了一个抽象概念,它代表一些视频硬件的帧缓冲,允许应用程序通过一个定义好的接口访问图形硬件。因此,软件不需要知道任何关于低级设备,例如硬件寄存器的信息,而通过特殊的设备节点访问帧缓冲设备。基于帧缓冲区的控制台是一种独立于硬件的抽象图形设备。由于Linux工作在保护模式下,所以用户态进程无法像磁盘操作系统那样使用显卡基本输入/输出系统(BIOS)提供的中断调用来实现直接写屏,故Linux抽象出帧缓冲设备以供用户态进程实现直接写屏。
目前基于Qt/Embedded系统的显示卡测试,由于Qt/Embedded系统基于帧缓冲的特性,在Qt/Embedded系统运行其它需要对帧缓冲区操作的程序时,可能导致冲突的出现。例如,Linux系统下对计算机系统显示卡的测试,是对计算机系统进行测试的重要组成部分。由于目前Linux下关于显示卡测试的方法建立在虚拟仿真中断调用的基础上,利用视频电子标准协会基本输入/输出系统(VESA BIOS)的扩充中断调用实现,因此需要对帧缓冲区进行操作。当该方法移植于Qt/Embedded系统上进行测试时,由于Qt/Embedded同样会使用帧缓冲区,从而在显示卡测试过程中不可避免的存在冲突,导致当前运行主控程序花屏,严重的甚至会导致当前Linux系统关机。如何在Linux Qt/Embedded系统下,保证基于视频电子标准协会(VESA)帧缓冲区显示卡测试的正常进行,以及在运行其它需要对帧缓冲区进行操作的程序的情况下,如何避免对帧缓冲区使用冲突的问题,保证Qt/Embedded系统下多个程序对帧缓冲区操作的安全性,成为一业界亟待解决的问题。

发明内容
本发明所要解决的技术问题在于提供一种帧缓冲区(Frame Buffer)状态的保护方法,以保证应用于Linux Qt/Embedded系统的显示卡测试的正常进行,避免帧缓冲区的使用冲突,确保安全。
因此,为达上述目的,本发明所提供的帧缓冲区(Frame Buffer)状态的保护方法,包括下列步骤进行系统实模式初始化,以支持当前计算机显示卡的基本输入/输出系统(BIOS)的中断调用,其中所述显示卡的基本输入/输出系统(BIOS)支持视频电子标准协会(VESA)4F04中断调用;返回保存/恢复当前系统的帧缓冲区状态所需内存大小;在显示卡测试之前对当前系统帧缓冲区状态进行保存;在测试结束后恢复测试前帧缓冲区状态。
本发明的另一目的在于提供一种帧缓冲区(Frame Buffer)状态的保护方法,包括下列步骤进行系统实模式初始化,以支持当前计算机显示卡的基本输入/输出系统(BIOS)的中断调用,其中所述显示卡的基本输入/输出系统(BIOS)不支持视频电子标准协会(VESA)4F04中断调用;对当前系统帧缓冲区状态进行读写操作,并在指定地址进行修改操作;设置当前系统帧缓冲区的显示激活模式;及在显示卡测试结束后,依据该显示激活模式进行显示模式重设。
通过本发明帧缓冲区(Frame Buffer)状态的保护方法,可在运行其它需要对帧缓冲区进行操作的程序的情况下,为帧缓冲区的状态进行保护,从而避免了产生帧缓冲区使用冲突的问题,保证了Qt/Embedded系统下多个程序对帧缓冲区操作的安全性,更保证基于视频电子标准协会(VESA)帧缓冲区显示卡测试的正常进行。从而为在Qt/Embedded系统下开发同样基于帧缓冲区的程序提供了可能,使得基于嵌入式Linux的Qt/Embedded系统具有更为广泛的兼容性和适用性。


图1为本发明帧缓冲区状态保护方法的一实施例;图2为本发明帧缓冲区状态保护方法的另一实施例;图3为Linux内核支持的帧缓冲区显示模式列表。
其中,附图标记102虚拟中断初始化104判断初始化是否成功106返回保存/恢复当前系统的帧缓冲区状态所需内存大小108保存当前系统帧缓冲区状态110对当前系统帧缓冲区进行读写操作112恢复当前系统帧缓冲区202虚拟中断初始化204判断初始化是否成功206对当前系统帧缓冲区进行读写操作208设置视频电子标准协会(VESA)4F02功能调用210设置当前系统帧缓冲区的显示激活模式212显示卡测试结束后依据该显示激活模式进行显示模式重设具体实施方式
有关本发明的特征与实施例,现配合附图详细说明如下。
图1为本发明帧缓冲区状态保护方法的一实施例。如图所示,首先虚拟中断初始化(步骤102),通过进行Linux系统实模式初始化,以支持当前计算机显示卡的基本输入/输出系统(BIOS)调用INT 10H,其中该基本输入/输出系统(BIOS)支持INT 10H中功能号为4F04的视频电子标准协会(VESA)子功能调用。然后判断上述Linux系统实模式初始化是否成功(步骤104),若失败,则结束;否则前进到步骤106,返回保存/恢复当前系统的帧缓冲区状态所需内存大小。在返回帧缓冲区状态所需内存大小过程中,需要设置中断调用入口参数,具体如下eax=0x4F04,表示基本输入/输出系统(BIOS)INT 10H调用4F04号的视频电子标准协会(VESA)功能调用;edx=0x0,表示返回保存/恢复当前视频电子标准协会超视频图形阵列(VESA SVGA)状态所需的内存大小;ecx=0xF,表示要保存/恢复的帧缓冲区状态的位屏蔽码;此外设置保存/恢复硬件控制器状态的屏蔽位D0,保存/恢复基本输入/输出系统(BIOS)资料区的屏蔽位D1,保存/恢复数/模转换(DAC)寄存器状态的屏蔽位D3,这里D4~D7位保留。然后判断中断调用出口参数,具体如下eax=VBE返回值,这里VBE表示视频电子标准协会(VESA)的基本输入/输出系统(BIOS)级扩展。对于显示卡的信息监测,要求其必须支持VESA的BIOS级扩展(VBE)。在支持的情况下。通过系统实模式的基本输入/输出系统(BIOS)调用INT 10H,可以取得显示卡的详细信息;以及缓冲区大小ebx,在这里ebx属于出口参数,标志通过该中断调用返回的缓冲区的大小,即保存/恢复当前视频电子标准协会超视频图形阵列(VESA SVGA)状态所需的内存大小,以64字节为单位。步骤108中,在显示卡测试之前对帧缓冲区状态进行保存,其中也需要设置中断调用入口参数和判断中断调用出口参数,除设置参数edx=0x1以及esebx指向保存/恢复当前状态的缓冲区的指针外,其它具体步骤同返回帧缓冲区状态所需内存大小过程中参数设置及判断。在进行显示卡的显示内存测试时,对帧缓冲区状态进行读写操作,并在指定地址进行修改操作(步骤110)。例如,对应帧缓冲区相对映像位置进行数据写操作,然后读出验证是否一致,进而判断显示内存是否正常。在测试结束后恢复测试前该帧缓冲区状态(步骤112),其中需要设置中断入口参数以及对中断调用出口参数进行判断。这里需设置参数edx=0x2,其它入口参数设置以及出口参数判断步骤与对帧缓冲区状态进行保存过程中参数设置及判断相同。
图2为本发明帧缓冲区状态保护方法的另一实施例。如图所示,首先虚拟中断初始化(步骤202),通过进行Linux系统实模式初始化,以支持当前计算机显示卡的基本输入/输出系统(BIOS)调用INT 10H,其中该基本输入/输出系统(BIOS)不支持INT 10H中功能号为4F04的视频电子标准协会(VESA)子功能调用。然后判断上述Linux系统实模式初始化是否成功(步骤204),若失败,则结束;否则前进到步骤206,对帧缓冲区状态进行读写操作,并在指定地址进行修改操作,比如在设置显示模式时计算相应的帧缓冲区首地址,修改地址位置作为进行中断调用的入口。设置功能号为VESA 4F02的功能调用(步骤208),利用模式设置函数对当前系统的帧缓冲区的显示激活模式进行设置(步骤210)。因为在进入帧缓冲区时,可以在系统激活时向Linux内核传送视频图形数组的参数vga来激活帧缓冲区设备,例如vga=0x314将会激活800×600×16bpp模式。图3为Linux内核支持的帧缓冲显示模式列表。这里,将测试后显示激活模式设定为0x314,即视频电子标准协会(VESA)标准对应的800×600×16bpp显示模式。然后,在显示卡测试结束后,依据帧缓冲区激活传送给Linux内核的显示激活模式进行显示模式重设(步骤212)。
虽然本发明以前述的较佳实施例公开如上,但并非用以限定本发明,任何本领域的普通技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与修改,因此本发明的专利保护范围须视本说明书所附的权利要求书所界定者为准。
权利要求
1.一种帧缓冲区状态保护方法,应用于Linux Qt/Embedded系统的显示卡测试中,其特征在于,包括有下列步骤进行系统实模式初始化,以支持当前计算机显示卡的基本输入/输出系统的中断调用,其中该基本输入/输出系统支持视频电子标准协会4F04中断调用;返回保存/恢复当前系统的帧缓冲区状态所需内存大小;对该帧缓冲区状态进行保存;对该帧缓冲区状态进行读写操作,并在指定地址进行修改操作;在测试结束后恢复测试前该帧缓冲区状态。
2.如权利要求1所述帧缓冲区状态保护方法,其特征在于,该当前系统的帧缓冲区状态包括帧缓冲设备内容、显示系统基本输入/输出系统状态以及数/模转换寄存器内容。
3.一种帧缓冲区状态保护方法,应用于Linux Qt/Embedded系统的显示卡测试中,其特征在于,包括有下列步骤进行系统实模式初始化,以支持当前计算机显示卡的基本输入/输出系统的中断调用,其中该基本输入/输出系统不支持视频电子标准协会4F04中断调用;对当前系统帧缓冲区状态进行读写操作,并在指定地址进行修改操作;设置该帧缓冲区的显示激活模式;在显示卡测试结束后,依据该显示激活模式进行显示模式重设。
全文摘要
本发明涉及一种帧缓冲区(Frame Buffer)状态保护方法,包括下列步骤进行系统实模式初始化,以支持当前计算机显示卡的基本输入/输出系统(BIOS)的中断调用,当基本输入/输出系统(BIOS)支持视频电子标准协会(VESA)4F04中断调用时,返回保存/恢复当前系统的帧缓冲区状态所需内存大小,保存该帧缓冲区状态,对帧缓冲区状态进行读写操作,以及在测试结束后恢复测试前该帧缓冲区状态;否则,在显示卡测试结束后,按照当前系统的帧缓冲区传送给Linux内核的一显示激活模式进行显示模式重设。该方法应用于Linux Qt/Embedded系统的显示卡测试中,以避免帧缓冲区的使用冲突,确保安全。
文档编号G06F11/00GK1924818SQ20051009341
公开日2007年3月7日 申请日期2005年8月29日 优先权日2005年8月29日
发明者王鹏, 陈玄同, 刘文涵 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1