一种基于X86模拟器的国产平台BIOS显卡驱动方法与流程

文档序号:11199009阅读:749来源:国知局
一种基于X86模拟器的国产平台BIOS显卡驱动方法与流程

本本发明公开一种bios显卡驱动方法,涉及显卡驱动领域,具体地说是一种基于x86模拟器的国产平台bios显卡驱动方法。



背景技术:

显卡bios(即videobios,以下简称vbios),是pcie显卡提供的一段显卡控制程序,包含显卡的型号、规格及生产厂家等信息,并向bios或操作系统提供显卡初始化、字符输出、模式设定等编程接口。系统初始化时,bios通过pcie总线将vbios加载至内存,并执行vbios的入口函数完成显卡初始化,vbios入口函数执行结束后,会安装int10h中断,bios或操作系统可通过调用int10h中断实现字符输出、模式设定等功能。但vbios中的程序为x86处理器的二进制机器码,无法直接在非x86体系架构的国产平台下运行。

本发明针对国产处理器的bios进行设计,提供一种基于x86模拟器的国产平台bios显卡驱动方法,利用x86模拟器在非x86体系架构下,运行x86设计的程序,使国产平台bios显卡能进行驱动。

x86模拟器可以在现有的软件和硬件条件下,模拟x86架构的微处理器及符合x86输入输出规范的所有必备外设。



技术实现要素:

本发明针对现有技术存在的不足和问题,提供一种基于x86模拟器的国产平台bios显卡驱动方法,利用x86模拟器在非x86体系架构下,运行x86设计的程序,使国产平台bios显卡能进行驱动。

本发明提出的具体方案是:

一种基于x86模拟器的国产平台bios显卡驱动方法,利用x86模拟器读取pcie显卡中的vbios,加载至x86模拟器的模拟内存中,并执行vbios的入口函数完成显卡初始化,vbios入口函数执行结束后,x86模拟器向显示驱动提供int10h中断调用接口使vbios入口函数所安装的int10h中断实现自身功能。

所述的方法中x86模拟器读取显卡中的vbios,并对vbios进行校验,若校验正确,则申请存储空间存放模拟cpu寄存器,同时申请连续内存区域作模拟内存,存储vbios。

所述的方法中x86模拟器通过调用接口执行vbios入口函数,从模拟内存的特定地址读取并解析x86机器码,根据x86机器码的内容执行对应的操作。

所述的方法中x86模拟器根据所应用的国产平台处理器架构,对所读写的内存地址或io地址进行映射,可从物理内存或pcie设备中获得正确的数据。

一种x86模拟器,应用于所述的方法中,

包括模拟器初始化模块、x86机器码解码器、地址映射处理模块、pcie/io读写模块和int10h中断调用接口;

其中模拟器初始化模块读取显卡中的vbios,并对vbios进行校验,若校验正确,则申请存储空间存放模拟cpu寄存器,同时申请连续内存区域作模拟内存,存储vbios;同时调用x86机器码解码器提供的接口,执行vbios的入口函数;

x86机器码解码器从模拟内存的特定地址读取并解析x86机器码,根据x86机器码的内容执行对应的操作,并为其它模块提供x86机器码的执行接口;

地址映射处理模块根据所应用的国产平台处理器架构,对x86机器码解码器所读写的内存地址或io地址进行映射,可从物理内存或pcie设备中获得正确的数据;

pcie/io读写模块负责对模拟器初始化模块或地址映射模块给出的指定pcie或io地址进行读写;

int10h中断调用接口负责向显示驱动提供int10h中断调用接口使vbios入口函数所安装的int10h中断实现自身功能。

所述的x86模拟器中模拟器初始化模块将模拟内存中部分用于系统内存,部分用于smbios,部分用于存放vbios。

所述的x86模拟器中x86机器码解码器从模拟cpu寄存器的cs和ip寄存器中获取指令地址,并调用地址映射处理模块提供的接口,从指令地址读取指令,并根据指令内容修改模拟cpu寄存器。

所述的x86模拟器中x86机器码解码器从模拟cpu寄存器的cs和ip寄存器中获取指令地址,并调用地址映射处理模块提供的接口,从指令地址读取指令,若指令需要读写内存或io,则调用地址映射处理模块提供的接口进行处理。

所述的x86模拟器中pcie/io读写模块通过pcie内存存取接口、vgamemory存取接口、pcie配置空间存取接口和io存取接口来进行指定pcie或io地址读写。

所述的x86模拟器中int10h中断调用接口根据显示驱动设定的寄存器的值,初始化模拟cpu寄存器,随后将中断触发指令和中断号填入模拟内存的特定地址,最后调用x86机器码解码器跳转至该地址执行,触发vbios所安装的int10h中断。

本发明的有益之处是:

本发明提供一种基于x86模拟器的国产平台bios显卡驱动方法,利用x86模拟器读取pcie显卡中的vbios,加载至x86模拟器的模拟内存中,并执行vbios的入口函数完成显卡初始化,vbios入口函数执行结束后,x86模拟器向显示驱动提供int10h中断调用接口使vbios入口函数所安装的int10h中断实现自身功能;

利用本发明方法通过x86模拟器在非x86体系架构下,运行x86设计的程序,使得国产平台bios显卡能进行驱动。

附图说明

图1本发明x86模拟器的模块框架示意图;

图2本发明方法流程示意图。

具体实施方式

本发明提供一种基于x86模拟器的国产平台bios显卡驱动方法,利用x86模拟器读取pcie显卡中的vbios,加载至x86模拟器的模拟内存中,并执行vbios的入口函数完成显卡初始化,vbios入口函数执行结束后,x86模拟器向显示驱动提供int10h中断调用接口使vbios入口函数所安装的int10h中断实现自身功能。

同时提供一种x86模拟器,应用于所述的方法中,

包括模拟器初始化模块、x86机器码解码器、地址映射处理模块、pcie/io读写模块和int10h中断调用接口;

其中模拟器初始化模块读取显卡中的vbios,并对vbios进行校验,若校验正确,则申请存储空间存放模拟cpu寄存器,同时申请连续内存区域作模拟内存,存储vbios;同时调用x86机器码解码器提供的接口,执行vbios的入口函数;

x86机器码解码器从模拟内存的特定地址读取并解析x86机器码,根据x86机器码的内容执行对应的操作,并为其它模块提供x86机器码的执行接口;

地址映射处理模块根据所应用的国产平台处理器架构,对x86机器码解码器所读写的内存地址或io地址进行映射,可从物理内存或pcie设备中获得正确的数据;

pcie/io读写模块负责对模拟器初始化模块或地址映射模块给出的指定pcie或io地址进行读写;

int10h中断调用接口负责向显示驱动提供int10h中断调用接口使vbios入口函数所安装的int10h中断实现自身功能。

结合附图及具体实施,进一步说明本发明的技术方案。

利用本发明方法及x86模拟器,其中x86模拟器中模拟器初始化模块通过pcie总线,读取显卡中的vbios,并对vbios进行校验,若校验正确,则申请存储空间存放模拟cpu寄存器,同时16mb的连续内存区域作为模拟内存,其中:16mb模拟内存偏移为0x00000-0x10000的部分用于系统内存,偏移为0xc0000-0xf0000的部分用于存放vbios,偏移为0xf0000-0xfffff的部分用于smbios。随后,调用x86机器码解码器提供的接口,跳转至vbios入口函数运行;

x86机器码解码器从模拟cpu寄存器的cs和ip寄存器中获取指令地址,并调用地址映射处理模块提供的接口,从指令地址读取1条指令,并根据指令内容修改模拟cpu寄存器;若指令需要读写内存或io,则调用地址映射处理模块提供的接口进行处理。

地址映射处理模块向x86机器码解码器提供内存和io读写接口,根据所应用的国产平台处理器架构,对x86机器码解码器所读写的内存地址或io地址进行映射:若为内存读写且地址为0xa0000-0xb0000(即vgamemory),则根据宿主处理器的架构进行映射,调用pcie/io读写模块提供的pcie存取接口进行读写;若为内存读写且地址不是0xa0000-0xb0000,则从模拟内存的对应偏移地址读写数据;若为io读写且地址为0xcf8/0xcfc,则调用pcie/io读写模块提供的pcie存取接口读写pcie配置空间;若为io读写且地址不是0xcf8/0xcfc,则根据宿主处理器的架构进行映射,调用pcie/io读写模块提供的io存取接口进行读写;

pcie/io读写模块通过pcie内存存取接口、vgamemory存取接口、pcie配置空间存取接口和io存取接口来进行指定pcie或io地址读写;

int10h中断调用接口向显示驱动提供int10h中断的调用机制,根据显示驱动设定的ax、bx、cx等寄存器的值,初始化模拟cpu寄存器,随后将中断触发指令0xcd和中断号0x10填入模拟内存的特定地址,最后调用x86机器码解码器跳转至该地址执行,触发vbios所安装的int10h中断,实现int10h中断的字符输出、模式设定等功能。

利用本发明方法通过x86模拟器在非x86体系架构下,运行x86设计的程序,使得国产平台bios显卡能进行驱动。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1