CN109471668B - 跨平台显卡固件翻译执行方法、装置、设备及可读介质 - Google Patents
跨平台显卡固件翻译执行方法、装置、设备及可读介质 Download PDFInfo
- Publication number
- CN109471668B CN109471668B CN201811383184.9A CN201811383184A CN109471668B CN 109471668 B CN109471668 B CN 109471668B CN 201811383184 A CN201811383184 A CN 201811383184A CN 109471668 B CN109471668 B CN 109471668B
- Authority
- CN
- China
- Prior art keywords
- translation
- display card
- card firmware
- firmware
- platform
- 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
- 238000013519 translation Methods 0.000 title claims abstract description 119
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000004088 simulation Methods 0.000 claims abstract description 30
- 238000005516 engineering process Methods 0.000 claims abstract description 21
- 238000003860 storage Methods 0.000 claims abstract description 19
- 230000000694 effects Effects 0.000 claims abstract description 6
- 238000013507 mapping Methods 0.000 claims description 32
- 230000006870 function Effects 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 12
- 238000010276 construction Methods 0.000 claims description 6
- 238000004458 analytical method Methods 0.000 claims description 4
- 239000013598 vector Substances 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种跨平台显卡固件翻译执行方法,通过预先部署显卡固件的模拟执行环境;对显卡固件进行识别;采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令,初始化显卡设备数据寄存器和控制寄存器;构建GOP协议,基于GOP协议提供显示接口,实现显卡固件的翻译与执行。本申请通过借助二进制翻译技术,将显卡VBIOS代码翻译成预设平台对应的指令,预设平台为非x86平台,并基于GOP协议提供显示接口,实现基于UEFI的跨平台显卡固件翻译执行。此外,本申请还提供了一种具有上述技术效果的跨平台显卡固件翻译执行装置、设备以及计算机可读存储介质。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种跨平台显卡固件翻译执行方法、装置、设备以及计算机可读存储介质。
背景技术
人机交互在现代计算机意义至关重要,计算机加电启动后第一要务就是显示输出,并向用户报告系统启动是否正常。计算机系统的显示输出一般由显示控制器完成,显示控制器简称为显卡。显卡上电后,由BIOS来加载显卡固件代码,完成硬件层的初始化配置进入正常的信号输出和显示数据转换状态,显示器开始正常的工作。目前市场上高性能显卡核心芯片的技术为少数厂家垄断,厂商为了保护显卡的技术秘密,一般不公开手册、显卡初始化代码、驱动代码,仅对特定操作系统和硬件平台(一般是x86平台)提供无源的二进制可执行程序。
随着BIOS的快速发展,传统BIOS存在代码可读性不强、扩展性差、代码修改困难等缺点,在此背景下intel等公司提出了统一可扩展固件接口UEFI(unified extensiblefirmware interface)。UEFI是系统快速启动新一代的固件接口技术,但扩展固件接口UEFI不支持非x86平台。因此,提供基于UEFI的跨平台显卡固件翻译执行方案是非常有必要的。
发明内容
本发明的目的是提供一种跨平台显卡固件翻译执行方法、装置、设备以及计算机可读存储介质,以解决现有扩展固件接口UEFI不支持非x86平台的问题。
为解决上述技术问题,本发明提供一种跨平台显卡固件翻译执行方法,包括:
预先部署显卡固件的模拟执行环境;
对显卡固件进行识别;
采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令,初始化显卡设备数据寄存器和控制寄存器;
构建GOP协议,基于所述GOP协议提供显示接口,实现显卡固件的翻译与执行。
可选地,所述预先部署显卡固件的模拟执行环境包括:
构建环境结构映射,部署显卡固件的模拟执行环境;
其中,所述环境结构映射用于描述寄存器映射、存储空间映射、IO空间映射、中断处理映射在x86实模式以及模拟执行环境下的对应关系。
可选地,所述对显卡固件进行识别包括:
判断加载硬件是否为显卡固件;
如果是,则获取所述显卡固件的设备信息。
可选地,所述采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令包括:
借助QEMU动态翻译思想及TCG中间表示方法翻译执行显卡固件中的可执行指令。
可选地,所述采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令包括:
步骤S11:获取显卡固件的指令,查找当前基本块的PC指针是否已翻译,如果是,则进入步骤S12;如果否,则对所述当前基本块的PC指针进行翻译处理,进入步骤S13;
步骤S12:将基本块生成中间码,基于变量活性分析策略对所述中间码进行冗余指令删除;
步骤S13:将优化后的中间码翻译成本地码,完成基本块内的链接;
步骤S14:将翻译好的基本块指令存入T-cache,并更新Hash表;
步骤S15:执行当前基本块翻译生成的本地码;
步骤S16:取下一个基本块的PC指针,判断是否为退出指令,否则循环进入步骤S12,直到完成显卡固件所有指令的执行。
可选地,所述构建GOP协议,基于所述GOP协议提供显示接口,实现显卡固件的翻译与执行包括:
查询获取显卡支持的模式参数信息;
利用获取到的模式参数信息实现GOP协议的接口;
安装协议接口。
可选地,所述利用获取到的模式参数信息实现GOP协议的接口包括:
执行0x10中断调取VESA扩展BIOS功能,获取显卡固件所有支持的模式号及每个模式对应的分辨率信息;
模式设置时依据模式号将对应的模式信息写入VGA的CRT控制寄存器;
实现图形绘制,将CPU的显示控制内容传输到显示缓冲区。
本发明还提供了一种跨平台显卡固件翻译执行装置,包括:
环境模拟模块,用于预先部署显卡固件的模拟执行环境;
识别模块,用于对显卡固件进行识别;
二进制翻译模块,用于采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令,初始化显卡设备数据寄存器和控制寄存器;
GOP协议构建模块,用于构建GOP协议,基于所述GOP协议提供显示接口,实现显卡固件的翻译与执行。
本发明还提供了一种跨平台显卡固件翻译执行设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述任一种所述的跨平台显卡固件翻译执行方法的步骤。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种所述的跨平台显卡固件翻译执行方法的步骤。
本发明所提供的跨平台显卡固件翻译执行方法,通过预先部署显卡固件的模拟执行环境;对显卡固件进行识别;采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令,初始化显卡设备数据寄存器和控制寄存器;构建GOP协议,基于GOP协议提供显示接口,实现显卡固件的翻译与执行。本申请通过借助二进制翻译技术,将显卡VBIOS代码翻译成预设平台对应的指令,预设平台为非x86平台,并基于GOP协议提供显示接口,实现基于UEFI的跨平台显卡固件翻译执行。此外,本申请还提供了一种具有上述技术效果的跨平台显卡固件翻译执行装置、设备以及计算机可读存储介质。
附图说明
为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的跨平台显卡固件翻译执行方法的一种具体实施方式的流程图;
图2为本发明实施例提供的跨平台显卡固件翻译执行装置的结构框图;
图3为二进制翻译模块的基本结构示意图;
图4为本申请所提供的跨平台显卡固件翻译执行装置的框架图;
图5本申请所提供的跨平台显卡固件翻译执行装置的工作流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明所提供的跨平台显卡固件翻译执行方法的一种具体实施方式的流程图如图1所示,该方法具体包括:
步骤S101:预先部署显卡固件的模拟执行环境;
可选地,预先部署显卡固件的模拟执行环境包括:构建环境结构映射,部署显卡固件的模拟执行环境。其中,所述环境结构映射用于描述寄存器映射、存储空间映射、IO空间映射、中断处理映射在x86实模式以及模拟执行环境下的对应关系。
步骤S102:对显卡固件进行识别;
作为一种具体实施方式,所述对显卡固件进行识别包括:判断加载硬件是否为显卡固件;如果是,则获取所述显卡固件的设备信息。
利用UEFI系统加载驱动EFI_DRIVER_BINDING_SUPPORTED探测硬件与本驱动是否匹配,获取到挂载在PCI的显卡设备以及获取显卡的显卡固件信息。识别过程为:利用驱动阶段打开PCI I/O协议获取PCI设备上256字节配置空间即一组寄存器,读取配置空间的前64个字节为空间起始段,依据PCI规范PCI设备的显卡固件的组织结构,判断rom头部信息是否属于显卡设备,其次依据显卡固件的数据结构信息判断rom的组织结构正确性。如果正确,将识别的PCI显卡显卡固件的固件地址信息传递x86实模式环境结构映射子模块进行下一步的数据处理,返回EFI_SUCCESS,否则返回EFI_UNSUPPORTED。
步骤S103:采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令,初始化显卡设备数据寄存器和控制寄存器;
本实施例步骤S103具体为:借助QEMU动态翻译思想及TCG中间表示方法翻译执行显卡固件中的可执行指令。
步骤S104:构建GOP协议,基于所述GOP协议提供显示接口,实现显卡固件的翻译与执行。
本发明所提供的跨平台显卡固件翻译执行方法,通过预先部署显卡固件的模拟执行环境;对显卡固件进行识别;采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令,初始化显卡设备数据寄存器和控制寄存器;构建GOP协议,基于GOP协议提供显示接口,实现显卡固件的翻译与执行。本申请通过借助二进制翻译技术,将显卡VBIOS代码翻译成预设平台对应的指令,预设平台为非x86平台,如申威国产平台,并基于GOP协议提供显示接口,实现基于UEFI的跨平台显卡固件翻译执行。
环境结构映射用于描述寄存器映射、存储空间映射、IO空间映射、中断处理映射在x86实模式以及本申请模拟执行环境下的对应关系。下面对环境结果映射进行进一步详细阐述。
(1)寄存器映射
8086寄存器模型的组成主要包含4个16位数据寄存器(AX,BX,CX,DX),4个段寄存器(CS,DS,SS,ES),2个指针寄存器(SP,BP),2个变址寄存器(SI,DI),以及2个控制寄存器(IP,FLAG)。
将x86实模式的寄存器与OPT中的寄存器建立一一对应关系,如表1所示,表中第一列表示的是x86实模式下寄存器,第二列为固件代码翻译时寄存器的初始值,即固件代码模拟运行时初始值,第三列表示本申请模拟执行环境对应的寄存器。
表1
(2)存储空间映射
对于本申请所提供的方法而言,并不需要将所有的存储分布进行一一映射,只需要将固件运行时涉及到地址操作进行映射即可,包括中断向量入口地址,显存地址,中断服务程序地址。地址段00000-003FFF的1K空间为中断矢量表;地址段0xA0000-0xAFFFF的64K空间为VRAM即显存的地址;地址段0xC0000-0xCFFFF的64K空间存储VBIOS即显卡optionrom内容;实模式下x86与外设之间数据的通信采用的是中断方法,中断函数的入口地址在0xF0000~0xFFFFF的64K地址空间中。内存地址模拟的做法是向存储空间申请1M的内存空间获得基地址base,基地址的前1K空间存储中断矢量表,基地址偏移0xC0000为VBIOS的首地址,基地址偏移0xF0000为系统中断函数处理的首地址,而显存地址VRAM是根据实际情况PCI扫描时系统给显卡分配空间确定。
表2
(3)IO空间映射
x86实模式的IO采用独立编址方式,IO端口地址空间和存储空间分开设置,互不影响,对I/O端口的操作使用输入/输出指令(I/O指令)。国产处理器平台的IO端口和存储单元统一编址,IO端口的访问可以作为内存单元来使用,用访问存储器的指令进行IO读写操作。x86平台,显卡的I/O地址分布在0x3c0-0x3cf与0x3d0-0x3df端口之间,其次为读取PCI外设显卡的配置空间具体内容,x86平台采用读写配置空间寄存器的方法,即首先往0xfc8地址写入需要读取显卡外设的基地址,然后从0xfcc地址读取数据。为达到同样的目的,我们采取端口映射方法将x86的端口地址转换成本地的IO端口,如表3所示。
表3
x86IO地址 | 含义 | 本申请模拟执行环境 |
0xCF8 | 写PCI配置空间 | 0xfffffcf600000000+0xcf8 |
0xCFC | 读PCI配置空间 | 0xfffffcf600000000+0xcfc |
0x3C0-0x3DF | VGA端口 | 0xfffffcf600000000+(0x3c0-0x3df) |
(4)中断处理映射
实模式下最多有256个中断向量,BIOS处理0~31号中断,每个中断向量对应中断类型码n,依靠索引n在中断服务程序入口地址表获取到中断服务程序入口地址。x86实模式下与显卡相关的中断包括int 10h设置显示参数,int e6h实现中断例程的安装,int 1A时钟服务。中断由两部分组成:中断入口及中断处理函数,x86平台的中断向量表的起始地址位于内存的最低端base地址1K空间,中断处理函数位于sysmem空间中,当中断函数处理结束时,需要进行原地址的返回。为模拟中断结束,在位于偏移base 0x0600地址处写入结束指令,在取指令遇到结束指令时,则会退出整个中断处理流程。
表4
中断号 | 含义 | 本申请模拟执行环境 |
0x10 | 显示服务 | int10_handler |
0x15 | 杂项系统服务 | int15_handler |
0x1A | 时钟服务 | int1A_handler |
下面对本发明实施例提供的跨平台显卡固件翻译执行装置进行介绍,下文描述的跨平台显卡固件翻译执行装置与上文描述的跨平台显卡固件翻译执行方法可相互对应参照。
图2为本发明实施例提供的跨平台显卡固件翻译执行装置的结构框图,参照图2跨平台显卡固件翻译执行装置可以包括:
环境模拟模块100,用于预先部署显卡固件的模拟执行环境;
识别模块200,用于对显卡固件进行识别;
二进制翻译模块300,用于采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令,初始化显卡设备数据寄存器和控制寄存器;
GOP协议构建模块400,用于构建GOP协议,基于所述GOP协议提供显示接口,实现显卡固件的翻译与执行。
环境模拟模块100构建实模式的内存存储分布,寄存器组成,及中断处理模拟部分,部署固件模拟执行环境。识别模块200用于UEFI加载阶段过滤不相关的固件,以识别显卡固件。二进制翻译模块300是整个系统的功能核心,用翻译与执行两条线索完成x86实模式和UEFI不同状态的转换。GOP协议构建模块400提供控制操作接口,如屏幕显示,模式设置,屏幕尺寸获取等,为上层UEFI应用提供管理控制接口。
识别模块200是固件翻译数据的输入口,利用UEFI系统加载驱动EFI_DRIVER_BINDING_SUPPORTED探测硬件与本驱动是否匹配,获取到挂载在PCI的显卡设备以及获取显卡的option rom信息。识别过程为:利用驱动阶段打开PCI I/O协议获取PCI设备上256字节配置空间即一组寄存器,读取配置空间的前64个字节为空间起始段,依据PCI规范PCI设备的option rom的组织结构,判断rom头部信息是否属于显卡设备,其次依据option rom的数据结构信息判断rom的组织结构正确性。如果正确,将识别的PCI显卡option rom固件地址信息传递x86实模式环境结构映射子模块进行下一步的数据处理,返回EFI_SUCCESS,否则返回EFI_UNSUPPORTED。
二进制翻译模块300为整个系统的核心模块,是完成实模式显卡固件指令到预设平台指令的核心转换层,完成固件代码指令的识别,和指令等价翻译的本地指令功能。实模式下的指令数目及复杂度,内存管理机制等相比保护模式下较为简单,且QEMU支持系统级的二进制翻译,借助QEMU动态翻译思想及TCG中间表示方法翻译执行固件中的可执行指令,所以本模块的实现通过继承利用QEMU动态翻译思想与实现机制完成固件代码翻译。其基本结构如图3所示。
二进制翻译模块300完成显卡初级初始化,为显卡驱动工作准备了前期基础。UEFI系统显卡的显示控制则由GOP协议完成。GOP协议的构建是UVBT驱动另外一个核心模块,为UEFI显示提供了统一的上层应用接口。
GOP(graphic output protocol)是图形显示控制的基础,图形输出控制协议中包含了QUERY_MODE、SET_MODE、BLT三种协议,及当前模式信息数据结构EFI_GRAPHICS_OUTPUT_PROTOCOL_MOD E,三种协议分别负责显卡模式查询,模式设置,及图形显示绘制。为实现GOP协议构建,需要完成以下功能包括:一是通过翻译技术执行0x10中断调取VESA扩展BIOS功能获取显卡固件所有支持的模式号及每个模式对应的分辨率信息,模式查询时依据模式号查询并返回显卡的分辨率参数信息;二是模式设置时依据模式号将对应的模式信息写入VGA的CRT控制寄存器;三是实现图形绘制,将CPU的显示控制内容传输到显示缓冲区。
本实施例的跨平台显卡固件翻译执行装置用于实现前述的跨平台显卡固件翻译执行方法,因此跨平台显卡固件翻译执行装置中的具体实施方式可见前文中的跨平台显卡固件翻译执行方法的实施例部分,例如,环境模拟模块100,识别模块200,二进制翻译模块300,GOP协议构建模块400,分别用于实现上述跨平台显卡固件翻译执行方法中步骤S101,S102,S103和S104,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。
参照图4本申请所提供的跨平台显卡固件翻译执行装置的框架图以及图5本申请所提供的跨平台显卡固件翻译执行装置的工作流程图,以预设平台为国产平台为例,下面对本申请所提供的跨平台显卡固件翻译执行装置的整体工作流程进行进一步详细阐述。
在DXE阶段加载驱动,通过Driver Binding Protocol协议的Supported函数进行驱动匹配过滤。打开EFI_PCI_IO_PROTOCOL协议获取PCI操作句柄,判断PciIO端口属性是否为VGA端口,然后读取设备上的PCI配置寄存器值,依据VendorId判断是否为Random显卡。探测设备的VendorID是否支持此驱动,其次判断PCI的端口是否是VGA的端口,若不符合返回EFI_UNSUPPORTED,否则将驱动加载到设备上并进行固件初始化,执行OPT二进制翻译系统的执行流程和GOP协议构建流程。
二进制翻译模块的主要作用是负责翻译执行显卡固件的指令,初始化显卡设备数据寄存器和控制寄存器,为GOP协议提供接口。其具体执行流程如下所示:
步骤S10:x86实模式环境模拟初始化操作,定义结构体x86CPUState记录x86实模式运行状态,申请1M内存空间并给与赋值,设置显存空间地址,中断向量入口地址,并将挂载在PCI上显卡option rom代码拷贝到这1M空间的VGA BIOS ROM地址,定义中断处理及IO输入输出helper函数,完成寄存器、存储、中断处理、IO空间到国产平台映射。
步骤S11:获取显卡固件的指令,查找当前基本块的PC指针是否已翻译,如果是,则进入步骤S12;如果否,则对所述当前基本块的PC指针进行翻译处理,进入步骤S13;
步骤S12:将基本块生成中间码,基于变量活性分析策略对所述中间码进行冗余指令删除;
步骤S13:将优化后的中间码翻译成本地码,完成基本块内的链接;
步骤S14:将翻译好的基本块指令存入T-cache,并更新Hash表;
步骤S15:执行当前基本块翻译生成的本地码;
步骤S16:取下一个基本块的PC指针,判断是否为退出指令,否则循环进入步骤S12,直到完成显卡固件所有指令的执行。
GOP协议的构建的主要作用是为UEFI上层应用提供控制接口,包括模式设置,模式查询,及图形绘制等基本操作函数。其构建过程如下分为三个步骤,第一步查询获取显卡支持的所有模式参数信息,第二步利用第一步获取到的显卡显示信息实现GOP协议的接口,最后安装协议接口。其具体执行流程如下所示:
步骤S21:定义数据结构体GOP_PRIVATE_DATA,申请内存空间并初始化。
步骤S22:检查显卡固件是否支持VESA。利用OPT二进制翻译器,传入AX寄存器值为0x4f00,模拟执行0x10中断查询获取VBEINFOBLOCK信息及支持的模式号,若查询失败或者VBE的签名信息和版本错误,则表明显卡不支持VESA功能扩展,只适用于标准VGA的BIOS功能,直接跳转到步骤S24,否则说明支持扩展的VESA功能,执行步骤S23。
步骤S23:利用OPT二进制翻译系统,AX寄存器传入0x4f15,执行0x10中断查询获取EDID(Extended Display Identification Data)扩展显示标识数据,包含头信息,颜色设置,制造日期,厂商预设置、EDID版本,厂商ID,产品ID,最大图像大小、频率范围的限制以及显示器名和序列号的字符串等基本信息,依靠步骤S22获取到的模式号,AX寄存器赋值为0x4f01模拟执行迭代获取模式号相应的详细参数信息,如分辨率、像素位数、颜色属性等,并保存到GOP_PRIVATE_DATA数据结构体。
步骤S24:设置最佳显示模式,并设为显卡默认模式。
步骤S25:最后安装GopDevicePath,GraphicsOutput,EdidDisco vered,EdidActive等协议。
此外,本申请还提供了一种跨平台显卡固件翻译执行设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述任一种所述的跨平台显卡固件翻译执行方法的步骤。
此外,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种所述的跨平台显卡固件翻译执行方法的步骤。
本实施例的跨平台显卡固件翻译执行设备以及计算机可读存储介质用于实现前述的跨平台显卡固件翻译执行方法,因此跨平台显卡固件翻译执行设备以及计算机可读存储介质中的具体实施方式可见前文中的跨平台显卡固件翻译执行方法的实施例部分,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。
本申请通过预先部署显卡固件的模拟执行环境;对显卡固件进行识别;采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令,初始化显卡设备数据寄存器和控制寄存器;构建GOP协议,基于GOP协议提供显示接口,实现显卡固件的翻译与执行。本申请通过借助二进制翻译技术,将显卡VBIOS代码翻译成非x86平台指令,例如申威国产平台,并基于GOP协议提供显示接口,实现基于UEFI的跨平台显卡固件翻译执行。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的跨平台显卡固件翻译执行方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (9)
1.一种跨平台显卡固件翻译执行方法,其特征在于,包括:
预先部署显卡固件的模拟执行环境;
对显卡固件进行识别;
采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令,初始化显卡设备数据寄存器和控制寄存器;
构建GOP协议,基于所述GOP协议提供显示接口,实现显卡固件的翻译与执行;
所述采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令包括:
步骤S11:获取显卡固件的指令,查找当前基本块的PC指针是否已翻译,如果是,则进入步骤S12;如果否,则对所述当前基本块的PC指针进行翻译处理,进入步骤S13;
步骤S12:将基本块生成中间码,基于变量活性分析策略对所述中间码进行冗余指令删除;
步骤S13:将优化后的中间码翻译成本地码,完成基本块内的链接;
步骤S14:将翻译好的基本块指令存入T-cache,并更新Hash表;
步骤S15:执行当前基本块翻译生成的本地码;
步骤S16:取下一个基本块的PC指针,判断是否为退出指令,否则循环进入步骤S12,直到完成显卡固件所有指令的执行。
2.如权利要求1所述的跨平台显卡固件翻译执行方法,其特征在于,所述预先部署显卡固件的模拟执行环境包括:
构建环境结构映射,部署显卡固件的模拟执行环境;
其中,所述环境结构映射用于描述寄存器映射、存储空间映射、IO空间映射、中断处理映射在x86实模式以及模拟执行环境下的对应关系。
3.如权利要求2所述的跨平台显卡固件翻译执行方法,其特征在于,所述对显卡固件进行识别包括:
判断加载硬件是否为显卡固件;
如果是,则获取所述显卡固件的设备信息。
4.如权利要求3所述的跨平台显卡固件翻译执行方法,其特征在于,所述采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令包括:
借助QEMU动态翻译思想及TCG中间表示方法翻译执行显卡固件中的可执行指令。
5.如权利要求1所述的跨平台显卡固件翻译执行方法,其特征在于,所述构建GOP协议,基于所述GOP协议提供显示接口,实现显卡固件的翻译与执行包括:
查询获取显卡支持的模式参数信息;
利用获取到的模式参数信息实现GOP协议的接口;
安装协议接口。
6.如权利要求5所述的跨平台显卡固件翻译执行方法,其特征在于,所述利用获取到的模式参数信息实现GOP协议的接口包括:
执行0x10中断调取VESA扩展BIOS功能,获取显卡固件所有支持的模式号及每个模式对应的分辨率信息;
模式设置时依据模式号将对应的模式信息写入VGA的CRT控制寄存器;
实现图形绘制,将CPU的显示控制内容传输到显示缓冲区。
7.一种跨平台显卡固件翻译执行装置,其特征在于,包括:
环境模拟模块,用于预先部署显卡固件的模拟执行环境;
识别模块,用于对显卡固件进行识别;
二进制翻译模块,用于采用二进制翻译技术将实模式显卡固件指令翻译为预设平台对应的指令,初始化显卡设备数据寄存器和控制寄存器;
GOP协议构建模块,用于构建GOP协议,基于所述GOP协议提供显示接口,实现显卡固件的翻译与执行;
所述二进制翻译模块具体用于执行如下步骤:
步骤S11:获取显卡固件的指令,查找当前基本块的PC指针是否已翻译,如果是,则进入步骤S12;如果否,则对所述当前基本块的PC指针进行翻译处理,进入步骤S13;
步骤S12:将基本块生成中间码,基于变量活性分析策略对所述中间码进行冗余指令删除;
步骤S13:将优化后的中间码翻译成本地码,完成基本块内的链接;
步骤S14:将翻译好的基本块指令存入T-cache,并更新Hash表;
步骤S15:执行当前基本块翻译生成的本地码;
步骤S16:取下一个基本块的PC指针,判断是否为退出指令,否则循环进入步骤S12,直到完成显卡固件所有指令的执行。
8.一种跨平台显卡固件翻译执行设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述跨平台显卡固件翻译执行方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述跨平台显卡固件翻译执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811383184.9A CN109471668B (zh) | 2018-11-20 | 2018-11-20 | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811383184.9A CN109471668B (zh) | 2018-11-20 | 2018-11-20 | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109471668A CN109471668A (zh) | 2019-03-15 |
CN109471668B true CN109471668B (zh) | 2021-11-26 |
Family
ID=65673003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811383184.9A Active CN109471668B (zh) | 2018-11-20 | 2018-11-20 | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109471668B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111752623B (zh) * | 2019-03-29 | 2023-05-16 | 龙芯中科技术股份有限公司 | 显示配置方法、装置、电子设备及可读存储介质 |
CN111552512B (zh) * | 2020-03-23 | 2021-05-28 | 中国人民解放军战略支援部队信息工程大学 | 磁盘阵列配置软件跨平台移植方法及装置 |
CN111930660B (zh) * | 2020-07-30 | 2022-04-15 | 长沙景嘉微电子股份有限公司 | Pcie通路配置方法、装置、终端和介质 |
CN112783562B (zh) * | 2021-01-15 | 2022-06-17 | 苏州浪潮智能科技有限公司 | 一种显示设备选择方法和装置 |
CN113505349A (zh) * | 2021-07-24 | 2021-10-15 | 山东三未信安信息科技有限公司 | 一种嵌入式uboot下Mini PCI-E密码卡运行方法 |
CN116149741A (zh) * | 2023-02-21 | 2023-05-23 | 摩尔线程智能科技(北京)有限责任公司 | 显卡驱动的配置方法、主机、显卡、电子设备及存储介质 |
CN117687704B (zh) * | 2024-02-02 | 2024-05-24 | 龙芯中科技术股份有限公司 | 显卡初始化方法、装置、设备及存储介质 |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706734A (zh) * | 2009-11-10 | 2010-05-12 | 中国科学院计算技术研究所 | 二进制翻译中间接跳转指令的翻译方法及其系统 |
CN102023889A (zh) * | 2010-11-04 | 2011-04-20 | 天津曙光计算机产业有限公司 | 一种实现x86 vbios在mips架构上运行的方法 |
CN102193788A (zh) * | 2010-03-12 | 2011-09-21 | 复旦大学 | 基于动态二进制翻译的跨平台驱动程序复用方法 |
CN102541607A (zh) * | 2011-12-31 | 2012-07-04 | 曙光信息产业股份有限公司 | 基于uefi框架的bios配置方法和装置 |
CN104301730A (zh) * | 2014-10-14 | 2015-01-21 | 河海大学常州校区 | 基于视频移动设备的双向视频编解码系统及其方法 |
CN104375879A (zh) * | 2014-11-26 | 2015-02-25 | 康烁 | 基于执行树深度的二进制翻译方法和装置 |
CN105260659A (zh) * | 2015-09-10 | 2016-01-20 | 西安电子科技大学 | 一种基于qemu的内核级代码重用型攻击检测方法 |
CN105912337A (zh) * | 2016-04-13 | 2016-08-31 | 浪潮集团有限公司 | 一种应用于国产非x86 平台上实现显卡初始化的方法 |
CN105954726A (zh) * | 2016-04-26 | 2016-09-21 | 南京鹏力系统工程研究所 | 基于gpu的无极缩放的多雷达站雷达视频绘制方法 |
CN106385547A (zh) * | 2016-09-06 | 2017-02-08 | 深圳市同为数码科技股份有限公司 | 一种切换模拟高清视频的系统 |
CN106909348A (zh) * | 2015-12-22 | 2017-06-30 | 中电科技(北京)有限公司 | 一种基于uefi固件的国产处理器平台下的显卡初始化方法 |
CN106909347A (zh) * | 2015-12-22 | 2017-06-30 | 中电科技(北京)有限公司 | 一种便携式计算机的uefi固件实现方法 |
CN106909349A (zh) * | 2015-12-22 | 2017-06-30 | 中电科技(北京)有限公司 | 一种基于服务器的uefi固件实现方法 |
CN107392025A (zh) * | 2017-08-28 | 2017-11-24 | 刘龙 | 基于深度学习的恶意安卓应用程序检测方法 |
CN107741863A (zh) * | 2017-10-08 | 2018-02-27 | 深圳市星策网络科技有限公司 | 一种显卡的驱动方法和装置 |
CN108110029A (zh) * | 2016-11-25 | 2018-06-01 | 乐金显示有限公司 | 显示装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110161620A1 (en) * | 2009-12-29 | 2011-06-30 | Advanced Micro Devices, Inc. | Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices |
US20160104080A1 (en) * | 2014-10-09 | 2016-04-14 | Wrap Media, LLC | Creating and delivering a wrapped package of cards as a digital companion to a movie release |
-
2018
- 2018-11-20 CN CN201811383184.9A patent/CN109471668B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706734A (zh) * | 2009-11-10 | 2010-05-12 | 中国科学院计算技术研究所 | 二进制翻译中间接跳转指令的翻译方法及其系统 |
CN102193788A (zh) * | 2010-03-12 | 2011-09-21 | 复旦大学 | 基于动态二进制翻译的跨平台驱动程序复用方法 |
CN102023889A (zh) * | 2010-11-04 | 2011-04-20 | 天津曙光计算机产业有限公司 | 一种实现x86 vbios在mips架构上运行的方法 |
CN102541607A (zh) * | 2011-12-31 | 2012-07-04 | 曙光信息产业股份有限公司 | 基于uefi框架的bios配置方法和装置 |
CN104301730A (zh) * | 2014-10-14 | 2015-01-21 | 河海大学常州校区 | 基于视频移动设备的双向视频编解码系统及其方法 |
CN104375879A (zh) * | 2014-11-26 | 2015-02-25 | 康烁 | 基于执行树深度的二进制翻译方法和装置 |
CN105260659A (zh) * | 2015-09-10 | 2016-01-20 | 西安电子科技大学 | 一种基于qemu的内核级代码重用型攻击检测方法 |
CN106909349A (zh) * | 2015-12-22 | 2017-06-30 | 中电科技(北京)有限公司 | 一种基于服务器的uefi固件实现方法 |
CN106909348A (zh) * | 2015-12-22 | 2017-06-30 | 中电科技(北京)有限公司 | 一种基于uefi固件的国产处理器平台下的显卡初始化方法 |
CN106909347A (zh) * | 2015-12-22 | 2017-06-30 | 中电科技(北京)有限公司 | 一种便携式计算机的uefi固件实现方法 |
CN105912337A (zh) * | 2016-04-13 | 2016-08-31 | 浪潮集团有限公司 | 一种应用于国产非x86 平台上实现显卡初始化的方法 |
CN105954726A (zh) * | 2016-04-26 | 2016-09-21 | 南京鹏力系统工程研究所 | 基于gpu的无极缩放的多雷达站雷达视频绘制方法 |
CN106385547A (zh) * | 2016-09-06 | 2017-02-08 | 深圳市同为数码科技股份有限公司 | 一种切换模拟高清视频的系统 |
CN108110029A (zh) * | 2016-11-25 | 2018-06-01 | 乐金显示有限公司 | 显示装置 |
CN107392025A (zh) * | 2017-08-28 | 2017-11-24 | 刘龙 | 基于深度学习的恶意安卓应用程序检测方法 |
CN107741863A (zh) * | 2017-10-08 | 2018-02-27 | 深圳市星策网络科技有限公司 | 一种显卡的驱动方法和装置 |
Non-Patent Citations (1)
Title |
---|
"图形绘制引擎的效率和跨平台研究";芦文峰 等;《计算机工程与设计》;20160516;第37卷(第5期);1400-1404 * |
Also Published As
Publication number | Publication date |
---|---|
CN109471668A (zh) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109471668B (zh) | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 | |
US7934209B2 (en) | Method for firmware variable storage with eager compression, fail-safe extraction and restart time compression scan | |
CN100504784C (zh) | 用于可选只读存储器表征的方法和装置 | |
EP1280058A2 (en) | Method and system for creating and employing an operating system having selected functionality | |
CN109936716B (zh) | 一种显示驱动的实现方法及系统 | |
CN113326105B (zh) | 基于主机迁移的硬件设备配置方法、装置及设备 | |
US20060129520A1 (en) | System and method for automatically updating a program in a computer | |
CN111857839B (zh) | 一种基于Linux的PXI/PXIe总线设备驱动系统 | |
US6963344B1 (en) | Method and system for utilizing graphics memory to provide storage for video BIOS initialization | |
US9317300B1 (en) | Assisting a Basic Input/Output System | |
US20220198112A1 (en) | Method, device, and storage medium for simulating a design | |
CN116048640A (zh) | 一种驱动计算机系统中iic设备正常工作的方法 | |
CN115664953A (zh) | 一种外接设备的资源分配方法及相关装置 | |
US11816058B2 (en) | Method for dynamically modifying PCH PCIE root port where onboard VGA is located | |
CN106294143B (zh) | 芯片的寄存器的调试方法及装置 | |
CN108037964A (zh) | 一种设置分辨率的方法、存储介质及智能设备 | |
US10657076B2 (en) | Electronic apparatus and method of extending peripheral device | |
CN109408407B (zh) | 显示内存的分配方法和装置 | |
CN114846451A (zh) | 用于替换装置中的值的方法、设备及系统 | |
CN111414211A (zh) | 在系统启动阶段显示图像的方法、装置、设备和存储介质 | |
CN112068713A (zh) | 事件处理方法、装置、电子设备及可读介质 | |
US6452599B1 (en) | Method and apparatus for generating a specific computer hardware component exception handler | |
US9779012B1 (en) | Dynamic and global in-system debugger | |
US7694301B1 (en) | Method and system for supporting input/output for a virtual machine | |
US20230205885A1 (en) | Operation method of a software program meeting specifications of unified extensible firmware interface for configuring a general-purpose input/output port |
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 |