CN107220065A - 一种基于x86模拟器的国产平台bios显卡驱动方法 - Google Patents
一种基于x86模拟器的国产平台bios显卡驱动方法 Download PDFInfo
- Publication number
- CN107220065A CN107220065A CN201710507233.4A CN201710507233A CN107220065A CN 107220065 A CN107220065 A CN 107220065A CN 201710507233 A CN201710507233 A CN 201710507233A CN 107220065 A CN107220065 A CN 107220065A
- Authority
- CN
- China
- Prior art keywords
- vbios
- simulators
- memory
- pcie
- read
- 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.)
- Pending
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种基于X86模拟器的国产平台BIOS显卡驱动方法,涉及显卡驱动领域;利用X86模拟器读取PCIe显卡中的VBIOS,加载至X86模拟器的模拟内存中,并执行VBIOS的入口函数完成显卡初始化,VBIOS入口函数执行结束后,X86模拟器向显示驱动提供INT 10H中断调用接口使VBIOS入口函数所安装的INT 10H中断实现自身功能;利用本发明方法利用X86模拟器在非X86体系架构下,运行X86设计的程序,使得国产平台BIOS显卡能进行驱动。
Description
技术领域
本本发明公开一种BIOS显卡驱动方法,涉及显卡驱动领域,具体地说是一种基于X86模拟器的国产平台BIOS显卡驱动方法。
背景技术
显卡BIOS(即Video BIOS,以下简称VBIOS),是PCIe显卡提供的一段显卡控制程序,包含显卡的型号、规格及生产厂家等信息,并向BIOS或操作系统提供显卡初始化、字符输出、模式设定等编程接口。系统初始化时,BIOS通过PCIe总线将VBIOS加载至内存,并执行VBIOS的入口函数完成显卡初始化,VBIOS入口函数执行结束后,会安装INT 10H中断,BIOS或操作系统可通过调用INT 10H中断实现字符输出、模式设定等功能。但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模拟器向显示驱动提供INT 10H中断调用接口使VBIOS入口函数所安装的INT 10H中断实现自身功能。
所述的方法中X86模拟器读取显卡中的VBIOS,并对VBIOS进行校验,若校验正确,则申请存储空间存放模拟CPU寄存器,同时申请连续内存区域作模拟内存,存储VBIOS。
所述的方法中X86模拟器通过调用接口执行VBIOS入口函数,从模拟内存的特定地址读取并解析X86机器码,根据X86机器码的内容执行对应的操作。
所述的方法中X86模拟器根据所应用的国产平台处理器架构,对所读写的内存地址或IO地址进行映射,可从物理内存或PCIe设备中获得正确的数据。
一种X86模拟器,应用于所述的方法中,
包括模拟器初始化模块、X86机器码解码器、地址映射处理模块、PCIe/IO读写模块和INT 10H中断调用接口;
其中模拟器初始化模块读取显卡中的VBIOS,并对VBIOS进行校验,若校验正确,则申请存储空间存放模拟CPU寄存器,同时申请连续内存区域作模拟内存,存储VBIOS;同时调用X86机器码解码器提供的接口,执行VBIOS的入口函数;
X86机器码解码器从模拟内存的特定地址读取并解析X86机器码,根据X86机器码的内容执行对应的操作,并为其它模块提供X86机器码的执行接口;
地址映射处理模块根据所应用的国产平台处理器架构,对X86机器码解码器所读写的内存地址或IO地址进行映射,可从物理内存或PCIe设备中获得正确的数据;
PCIe/IO读写模块负责对模拟器初始化模块或地址映射模块给出的指定PCIe或IO地址进行读写;
INT 10H中断调用接口负责向显示驱动提供INT 10H中断调用接口使VBIOS入口函数所安装的INT 10H中断实现自身功能。
所述的X86模拟器中模拟器初始化模块将模拟内存中部分用于系统内存,部分用于SMBIOS,部分用于存放VBIOS。
所述的X86模拟器中X86机器码解码器从模拟CPU寄存器的CS和IP寄存器中获取指令地址,并调用地址映射处理模块提供的接口,从指令地址读取指令,并根据指令内容修改模拟CPU寄存器。
所述的X86模拟器中X86机器码解码器从模拟CPU寄存器的CS和IP寄存器中获取指令地址,并调用地址映射处理模块提供的接口,从指令地址读取指令,若指令需要读写内存或IO,则调用地址映射处理模块提供的接口进行处理。
所述的X86模拟器中PCIe/IO读写模块通过PCIe内存存取接口、VGA memory存取接口、PCIe配置空间存取接口和IO存取接口来进行指定PCIe或IO地址读写。
所述的X86模拟器中INT 10H中断调用接口根据显示驱动设定的寄存器的值,初始化模拟CPU寄存器,随后将中断触发指令和中断号填入模拟内存的特定地址,最后调用X86机器码解码器跳转至该地址执行,触发VBIOS所安装的INT 10H中断。
本发明的有益之处是:
本发明提供一种基于X86模拟器的国产平台BIOS显卡驱动方法,利用X86模拟器读取PCIe显卡中的VBIOS,加载至X86模拟器的模拟内存中,并执行VBIOS的入口函数完成显卡初始化,VBIOS入口函数执行结束后,X86模拟器向显示驱动提供INT 10H中断调用接口使VBIOS入口函数所安装的INT 10H中断实现自身功能;
利用本发明方法通过X86模拟器在非X86体系架构下,运行X86设计的程序,使得国产平台BIOS显卡能进行驱动。
附图说明
图1本发明X86模拟器的模块框架示意图;
图2本发明方法流程示意图。
具体实施方式
本发明提供一种基于X86模拟器的国产平台BIOS显卡驱动方法,利用X86模拟器读取PCIe显卡中的VBIOS,加载至X86模拟器的模拟内存中,并执行VBIOS的入口函数完成显卡初始化,VBIOS入口函数执行结束后,X86模拟器向显示驱动提供INT 10H中断调用接口使VBIOS入口函数所安装的INT 10H中断实现自身功能。
同时提供一种X86模拟器,应用于所述的方法中,
包括模拟器初始化模块、X86机器码解码器、地址映射处理模块、PCIe/IO读写模块和INT 10H中断调用接口;
其中模拟器初始化模块读取显卡中的VBIOS,并对VBIOS进行校验,若校验正确,则申请存储空间存放模拟CPU寄存器,同时申请连续内存区域作模拟内存,存储VBIOS;同时调用X86机器码解码器提供的接口,执行VBIOS的入口函数;
X86机器码解码器从模拟内存的特定地址读取并解析X86机器码,根据X86机器码的内容执行对应的操作,并为其它模块提供X86机器码的执行接口;
地址映射处理模块根据所应用的国产平台处理器架构,对X86机器码解码器所读写的内存地址或IO地址进行映射,可从物理内存或PCIe设备中获得正确的数据;
PCIe/IO读写模块负责对模拟器初始化模块或地址映射模块给出的指定PCIe或IO地址进行读写;
INT 10H中断调用接口负责向显示驱动提供INT 10H中断调用接口使VBIOS入口函数所安装的INT 10H中断实现自身功能。
结合附图及具体实施,进一步说明本发明的技术方案。
利用本发明方法及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(即VGA memory),则根据宿主处理器的架构进行映射,调用PCIe/IO读写模块提供的PCIe存取接口进行读写;若为内存读写且地址不是0xA0000-0xB0000,则从模拟内存的对应偏移地址读写数据;若为IO读写且地址为0xCF8/0xCFC,则调用PCIe/IO读写模块提供的PCIe存取接口读写PCIe配置空间;若为IO读写且地址不是0xCF8/0xCFC,则根据宿主处理器的架构进行映射,调用PCIe/IO读写模块提供的IO存取接口进行读写;
PCIe/IO读写模块通过PCIe内存存取接口、VGA memory存取接口、PCIe配置空间存取接口和IO存取接口来进行指定PCIe或IO地址读写;
INT 10H中断调用接口向显示驱动提供INT 10H中断的调用机制,根据显示驱动设定的AX、BX、CX等寄存器的值,初始化模拟CPU寄存器,随后将中断触发指令0xCD和中断号0x10填入模拟内存的特定地址,最后调用X86机器码解码器跳转至该地址执行,触发VBIOS所安装的INT 10H中断,实现INT 10H中断的字符输出、模式设定等功能。
利用本发明方法通过X86模拟器在非X86体系架构下,运行X86设计的程序,使得国产平台BIOS显卡能进行驱动。
Claims (10)
1.一种基于X86模拟器的国产平台BIOS显卡驱动方法,其特征是利用X86模拟器读取PCIe显卡中的VBIOS,加载至X86模拟器的模拟内存中,并执行VBIOS的入口函数完成显卡初始化,VBIOS入口函数执行结束后,X86模拟器向显示驱动提供INT 10H中断调用接口使VBIOS入口函数所安装的INT 10H中断实现自身功能。
2.根据权利要求1所述的方法,其特征是所述X86模拟器读取显卡中的VBIOS,并对VBIOS进行校验,若校验正确,则申请存储空间存放模拟CPU寄存器,同时申请连续内存区域作模拟内存,存储VBIOS。
3.根据权利要求1或2所述的方法,其特征是所述X86模拟器通过调用接口执行VBIOS入口函数,从模拟内存的特定地址读取并解析X86机器码,根据X86机器码的内容执行对应的操作。
4.根据权利要求3所述的方法,其特征是所述X86模拟器根据所应用的国产平台处理器架构,对所读写的内存地址或IO地址进行映射,可从物理内存或PCIe设备中获得正确的数据。
5.一种X86模拟器,其特征是应用于权利要求1-4任一所述的方法中,
包括模拟器初始化模块、X86机器码解码器、地址映射处理模块、PCIe/IO读写模块和INT 10H中断调用接口;
其中模拟器初始化模块读取显卡中的VBIOS,并对VBIOS进行校验,若校验正确,则申请存储空间存放模拟CPU寄存器,同时申请连续内存区域作模拟内存,存储VBIOS;同时调用X86机器码解码器提供的接口,执行VBIOS的入口函数;
X86机器码解码器从模拟内存的特定地址读取并解析X86机器码,根据X86机器码的内容执行对应的操作,并为其它模块提供X86机器码的执行接口;
地址映射处理模块根据所应用的国产平台处理器架构,对X86机器码解码器所读写的内存地址或IO地址进行映射,可从物理内存或PCIe设备中获得正确的数据;
PCIe/IO读写模块负责对模拟器初始化模块或地址映射模块给出的指定PCIe或IO地址进行读写;
INT 10H中断调用接口负责向显示驱动提供INT 10H中断调用接口使VBIOS入口函数所安装的INT 10H中断实现自身功能。
6.根据权利要求5所述的X86模拟器,其特征是所述模拟器初始化模块将模拟内存中部分用于系统内存,部分用于SMBIOS,部分用于存放VBIOS。
7.根据权利要求5或6所述的X86模拟器,其特征是所述X86机器码解码器从模拟CPU寄存器的CS和IP寄存器中获取指令地址,并调用地址映射处理模块提供的接口,从指令地址读取指令,并根据指令内容修改模拟CPU寄存器。
8.根据权利要求7所述的X86模拟器,其特征是所述X86机器码解码器从模拟CPU寄存器的CS和IP寄存器中获取指令地址,并调用地址映射处理模块提供的接口,从指令地址读取指令,若指令需要读写内存或IO,则调用地址映射处理模块提供的接口进行处理。
9.根据权利要求5、6或8所述的X86模拟器,其特征是所述PCIe/IO读写模块通过PCIe内存存取接口、VGA memory存取接口、PCIe配置空间存取接口和IO存取接口来进行指定PCIe或IO地址读写。
10.根据权利要求9所述的X86模拟器,其特征是所述INT 10H中断调用接口根据显示驱动设定的寄存器的值,初始化模拟CPU寄存器,随后将中断触发指令和中断号填入模拟内存的特定地址,最后调用X86机器码解码器跳转至该地址执行,触发VBIOS所安装的INT 10H中断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710507233.4A CN107220065A (zh) | 2017-06-28 | 2017-06-28 | 一种基于x86模拟器的国产平台bios显卡驱动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710507233.4A CN107220065A (zh) | 2017-06-28 | 2017-06-28 | 一种基于x86模拟器的国产平台bios显卡驱动方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107220065A true CN107220065A (zh) | 2017-09-29 |
Family
ID=59951013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710507233.4A Pending CN107220065A (zh) | 2017-06-28 | 2017-06-28 | 一种基于x86模拟器的国产平台bios显卡驱动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107220065A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783407A (zh) * | 2019-01-14 | 2019-05-21 | 武汉精立电子技术有限公司 | 一种基于fpga实现pc与显卡桥接的装置及方法 |
CN111752623A (zh) * | 2019-03-29 | 2020-10-09 | 龙芯中科技术有限公司 | 显示配置方法、装置、电子设备及可读存储介质 |
CN114153761A (zh) * | 2021-11-29 | 2022-03-08 | 中汽创智科技有限公司 | 一种外部设备互联总线接口设备的探测方法及系统 |
WO2022237098A1 (zh) * | 2021-05-14 | 2022-11-17 | 统信软件技术有限公司 | 一种异构程序执行方法、装置、计算设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023889A (zh) * | 2010-11-04 | 2011-04-20 | 天津曙光计算机产业有限公司 | 一种实现x86 vbios在mips架构上运行的方法 |
CN102023880A (zh) * | 2010-11-04 | 2011-04-20 | 天津曙光计算机产业有限公司 | 一种龙芯刀片bios |
CN103150188A (zh) * | 2013-03-19 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 非x86指令集计算机的x86兼容显卡快速初始化方法 |
CN105912337A (zh) * | 2016-04-13 | 2016-08-31 | 浪潮集团有限公司 | 一种应用于国产非x86 平台上实现显卡初始化的方法 |
CN106155689A (zh) * | 2016-07-02 | 2016-11-23 | 广东中兴新支点技术有限公司 | 基于非x86平台在Linux操作系统下显示的方法 |
-
2017
- 2017-06-28 CN CN201710507233.4A patent/CN107220065A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023889A (zh) * | 2010-11-04 | 2011-04-20 | 天津曙光计算机产业有限公司 | 一种实现x86 vbios在mips架构上运行的方法 |
CN102023880A (zh) * | 2010-11-04 | 2011-04-20 | 天津曙光计算机产业有限公司 | 一种龙芯刀片bios |
CN103150188A (zh) * | 2013-03-19 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 非x86指令集计算机的x86兼容显卡快速初始化方法 |
CN105912337A (zh) * | 2016-04-13 | 2016-08-31 | 浪潮集团有限公司 | 一种应用于国产非x86 平台上实现显卡初始化的方法 |
CN106155689A (zh) * | 2016-07-02 | 2016-11-23 | 广东中兴新支点技术有限公司 | 基于非x86平台在Linux操作系统下显示的方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783407A (zh) * | 2019-01-14 | 2019-05-21 | 武汉精立电子技术有限公司 | 一种基于fpga实现pc与显卡桥接的装置及方法 |
CN111752623A (zh) * | 2019-03-29 | 2020-10-09 | 龙芯中科技术有限公司 | 显示配置方法、装置、电子设备及可读存储介质 |
WO2022237098A1 (zh) * | 2021-05-14 | 2022-11-17 | 统信软件技术有限公司 | 一种异构程序执行方法、装置、计算设备及可读存储介质 |
CN114153761A (zh) * | 2021-11-29 | 2022-03-08 | 中汽创智科技有限公司 | 一种外部设备互联总线接口设备的探测方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107220065A (zh) | 一种基于x86模拟器的国产平台bios显卡驱动方法 | |
CN102169459B (zh) | 一种访问数据的方法、装置和智能卡 | |
US7234049B2 (en) | Computer system with NAND flash memory for booting and storage | |
CN102723099B (zh) | 包括用于处理多命令描述符块以便利用并发性的主机接口的闪存装置 | |
CN100495479C (zh) | 基于在线可编程逻辑器件的单片机教学实验装置 | |
CA2135505C (en) | Dma emulation for non-dma capable interface cards | |
Shanley et al. | ISA system architecture | |
US20120110242A1 (en) | Programmable memory controller | |
CN103092810A (zh) | 具有可编程虚拟端口的处理器 | |
US20150347151A1 (en) | System and method for booting from a non-volatile memory | |
CN104077166A (zh) | 基于fpga中ip核的epcs与epcq存储器在线升级方法 | |
CN109445691B (zh) | 一种提高ftl算法开发和验证效率的方法及装置 | |
CN101739289A (zh) | 一种在Linux虚拟机中设置显示模式的方法及装置 | |
CN103677885A (zh) | 一种arm flash简易程序烧写的方法 | |
KR20060122064A (ko) | 전자장치 및 그 부팅방법 | |
CN113868174B (zh) | 验证平台搭建方法、装置及存储介质 | |
CN115080478B (zh) | 嵌入式平台显示系统 | |
CN104461859A (zh) | 一种支持nvm软断点调试的仿真器和方法 | |
CN102902550A (zh) | 计算机系统及其操作系统载入方法 | |
JP2001134629A (ja) | シミュレーション方法およびシミュレーション装置 | |
US8117427B2 (en) | Motherboard, storage device and controller thereof, and booting method | |
CN101114230A (zh) | 自储存装置上读取选择只读存储器程序代码的方法 | |
US20080263264A1 (en) | Data access control system and method of memory device | |
Dice | Quick boot: a guide for embedded firmware developers | |
JP2007528050A5 (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170929 |
|
RJ01 | Rejection of invention patent application after publication |