CN102023889A - 一种实现x86 vbios在mips架构上运行的方法 - Google Patents
一种实现x86 vbios在mips架构上运行的方法 Download PDFInfo
- Publication number
- CN102023889A CN102023889A CN2010105366158A CN201010536615A CN102023889A CN 102023889 A CN102023889 A CN 102023889A CN 2010105366158 A CN2010105366158 A CN 2010105366158A CN 201010536615 A CN201010536615 A CN 201010536615A CN 102023889 A CN102023889 A CN 102023889A
- Authority
- CN
- China
- Prior art keywords
- bios
- video
- simulator
- vbios
- vga
- 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.)
- Withdrawn
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了了一种实现X86VBIOS在MIPS架构上成功运行的方法。包含以下步骤:vga_bios_init(void)函数读取video-bios,送入X86模拟器;X86模拟器模拟显存地址0xa0000;X86模拟器模拟显卡bios地址0xc0000;X86模拟器模拟X86CPU寄存器及指令;X86模拟器模拟INT10中断向量;X86模拟器模拟sys bios。本发明很好的实现了龙芯刀片所要求的显示需求。
Description
技术领域
本发明提供了一种VBIOS移植的方法,具体提供了一种实现X86 VBIOS在MIPS架构上运行的方法。
背景技术
在x86的传统Bios下,处理器工作在实模式,最大寻址空间为1MB,典型的内存布局如图1所示。其中video-bios是一段二进制代码,是各显卡厂商提供的用于初始化显示卡控制器的代码,存放在显卡的ROM里,被BIOS读到0xC0000开始的地方。需要注意的是:这段代码是x86指令的二进制代码,同时是工作在实模式下的。而我们要采用的是龙芯处理器或者其它的非X86处理器,显卡厂商也不会提供基于mips的二进制,这样就对开发带来了困难。
在x86的传统bios下,利用上面的video-bios正确初始化显卡并利用int10中断设置了显卡的工作模式后,程序只要将显示的字符或像素值送入固定的VRAM区即可。
这段VRAM区域如下图2所示。
每个部分的解释如下:
●0xB0000-0XB8000 单色字符模式
放入的是1字节的字符ascii码
CRT索引寄存器端口0x3b4,CRT数据寄存器端口0x3b5
●0xB8000-0XC0000 彩色字符模式
放入的是1字节的字符ascii码+1字节的颜色属性
这时CRT索引寄存器端口0x3d4,CRT数据寄存器端口0x3d5
●0xA0000-0XB0000 图形模式
放入的最小单位是像素,不再是字符
通过上面的介绍我们知道,真正意义上的显卡驱动是由video-bios去实现的,由它来初始化显卡。
绝大部分显卡通过执行存储在VGA ROM里的x86二进制代码来进行显卡初始化。在非x86平台上,处理器不能直接运行该代码,显卡一般不能被正确初始化而导致不可用。
发明内容
本发明的目的在于克服现有技术的缺点和不足而提供一种采用x86模拟器去模拟传统VBIOS需要的运行环境,并解释x86二进制代码。
一种实现X86VBIOS在MIPS架构上运行的方法,在PMON基础上扩展了X86模拟器模拟传统VGA BIOS的运行环境,并解释X86代码,包含以下步骤:
A、vga_bios_init(void)函数读取video-bios,送入X86模拟器;
B、X86模拟器模拟显存地址0xa0000;
C、X86模拟器模拟显卡bios地址0xc0000;
D、X86模拟器模拟X86 CPU寄存器及指令;
E、X86模拟器模拟INT10中断向量;
F、X86模拟器模拟sys bios。
本发明的一种优选方式在于:所述步骤A中的读取过程有两种方式,一种是直接从VGA的rom区域读取二进制代码,另一种是事先将video-bios二进制文件做成数组写死在程序里。
本发明的最优选方式在于:所述步骤A的读取过程如下:
A1、申请内存并初始化,若申请失败则报错;
A2、从显卡的rom中读取或从静态数组中读取video-bios;
A3、判断读取格式是否正确;
A4、设置显示模式。
本发明具有如下有益效果:
1.本发明的核心是采用一种X86模拟器来实现传统VBIOS需要完成的工作。
2.本发明可以很好的解决传统VBIOS不公开的弊端。
3、本发明可以实现灵活的设计,开发成本也能得到降低。
4.本发明很好的实现了龙芯刀片所要求的显示需求。
附图说明
图1是典型的内存布局图。
图2是VRAM区域图。
图3是启动时BIOS调用模拟器的步骤。
具体实施方式
龙芯BIOS在PMON的基础上扩展了VGA BIOS模拟器,模拟显卡BIOS运行环境,达到正确初始化显卡的目的。
vga_bios_init()函数就是读取video-bios,并运行x86模拟器来解释执行的。
既可以从vga的rom区域里读取二进制代码,也可以事先将video-bios二进制文件做成数组写死在程序里。代码的大致流程如下:
int vga_bios_init(void){
…
pInt=(xf86Int10InfoPtr)mailoc(sizeof(xf86Int10InfoRec));
memset(pInt,0,sizeof(xf86Int10InfoRec));
/*建立int10运行环境*/
if(!xf86Int10ExecSetup(pInt))
goto error0;
…
/*可以直接从显卡的ROM里面读*/
romaddress=_pci_conf_read(pdev->pa.pa_tag,0x30);
romaddress&=(~1);
/*enable rom address decode*/
_pci_conf_write(pdev->pa.pa_tag,0x30,romaddress | 1);
#if defined(VESAFB)
{
extern unsigned char vgarom[];
unsigned char *tmp;
/*也可以将video-bios二进制文件做成静态数组*/
romaddress=(unsigned long)vgarom;
}
#endif
printk(″Rom base addr:%lx\n″,romaddress);
magic[0]=readb(romaddress);
magic[1]=readb(romaddress+1);
/*判断格式是否正确*/
if(magic[0]==0x55 && magic[1]==0xaa){
printk(″VGA bios found\n″);
…
}
….
/*设置为彩色字符模式*/
printf(″setting text mode...\n″);
pInt->BIOSseg=V_BIOS>>4;
pInt->num=0x10;
pInt->ax=0x0003;
xf86ExecX86int10(pInt);
}
VGA BIOS模拟包括以下几个部分:显存地址0xa0000模拟,显卡BIOS地址0xc0000模拟,x86CPU寄存器及指令模拟,中断向量主要是INT10模拟和sys BIOS模拟等。
Claims (3)
1.一种实现X86VBIOS在MIPS架构上运行的方法,其特征在于:在PMON基础上扩展了X86模拟器模拟传统VGA BIOS的运行环境,并解释X86代码,包含以下步骤:
A、vga_bios_init(void)函数读取video-bios,送入X86模拟器;
B、X86模拟器模拟显存地址0xa0000;
C、X86模拟器模拟显卡bios地址0xc0000;
D、X86模拟器模拟X86 CPU寄存器及指令;
E、X86模拟器模拟INT10中断向量;
F、X86模拟器模拟sys bios。
2.如权利要求1所述的一种实现X86 VBIOS在MIPS架构上运行的方法,其特征在于:所述步骤A中的读取过程有两种方式,一种是直接从VGA的rom区域读取二进制代码,另一种是事先将video-bios二进制文件做成数组写死在程序里。
3.权利要求1所述的一种实现X86 VBIOS在MIPS架构上运行的方法,其特征在于:所述步骤A的读取过程如下:
A1、申请内存并初始化,若申请失败则报错;
A2、从显卡的rom中读取或从静态数组中读取video-bios;
A3、判断读取格式是否正确;
A4、设置显示模式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105366158A CN102023889A (zh) | 2010-11-04 | 2010-11-04 | 一种实现x86 vbios在mips架构上运行的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105366158A CN102023889A (zh) | 2010-11-04 | 2010-11-04 | 一种实现x86 vbios在mips架构上运行的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102023889A true CN102023889A (zh) | 2011-04-20 |
Family
ID=43865211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105366158A Withdrawn CN102023889A (zh) | 2010-11-04 | 2010-11-04 | 一种实现x86 vbios在mips架构上运行的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102023889A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184122A (zh) * | 2011-05-16 | 2011-09-14 | 曙光信息产业股份有限公司 | 一种龙芯CPU主板bios及中断的实现方法 |
CN102331819A (zh) * | 2011-07-07 | 2012-01-25 | 曙光信息产业股份有限公司 | 一种基于龙芯cpu刀片的集成显卡实现方法 |
CN102799407A (zh) * | 2012-07-11 | 2012-11-28 | 曙光信息产业(北京)有限公司 | 基于基板管理控制器进行显示的方法和装置 |
CN103294526A (zh) * | 2012-02-27 | 2013-09-11 | 联想(北京)有限公司 | 电子设备的硬件配置方法、装置及电子设备 |
CN104360860A (zh) * | 2014-11-17 | 2015-02-18 | 长城信息产业股份有限公司 | 一种国产自主嵌入式计算机系统及其显卡驱动方法 |
CN105912337A (zh) * | 2016-04-13 | 2016-08-31 | 浪潮集团有限公司 | 一种应用于国产非x86 平台上实现显卡初始化的方法 |
CN106155689A (zh) * | 2016-07-02 | 2016-11-23 | 广东中兴新支点技术有限公司 | 基于非x86平台在Linux操作系统下显示的方法 |
CN106909348A (zh) * | 2015-12-22 | 2017-06-30 | 中电科技(北京)有限公司 | 一种基于uefi固件的国产处理器平台下的显卡初始化方法 |
CN107220065A (zh) * | 2017-06-28 | 2017-09-29 | 山东超越数控电子有限公司 | 一种基于x86模拟器的国产平台bios显卡驱动方法 |
CN109471668A (zh) * | 2018-11-20 | 2019-03-15 | 南方电网科学研究院有限责任公司 | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 |
CN111752623A (zh) * | 2019-03-29 | 2020-10-09 | 龙芯中科技术有限公司 | 显示配置方法、装置、电子设备及可读存储介质 |
CN113254093A (zh) * | 2021-07-06 | 2021-08-13 | 西安芯瞳半导体技术有限公司 | 自适应系统架构的gpu初始化方法、装置及计算机存储介质 |
-
2010
- 2010-11-04 CN CN2010105366158A patent/CN102023889A/zh not_active Withdrawn
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184122A (zh) * | 2011-05-16 | 2011-09-14 | 曙光信息产业股份有限公司 | 一种龙芯CPU主板bios及中断的实现方法 |
CN102331819A (zh) * | 2011-07-07 | 2012-01-25 | 曙光信息产业股份有限公司 | 一种基于龙芯cpu刀片的集成显卡实现方法 |
CN103294526B (zh) * | 2012-02-27 | 2017-11-28 | 联想(北京)有限公司 | 电子设备的硬件配置方法、装置及电子设备 |
CN103294526A (zh) * | 2012-02-27 | 2013-09-11 | 联想(北京)有限公司 | 电子设备的硬件配置方法、装置及电子设备 |
CN102799407A (zh) * | 2012-07-11 | 2012-11-28 | 曙光信息产业(北京)有限公司 | 基于基板管理控制器进行显示的方法和装置 |
CN104360860A (zh) * | 2014-11-17 | 2015-02-18 | 长城信息产业股份有限公司 | 一种国产自主嵌入式计算机系统及其显卡驱动方法 |
CN104360860B (zh) * | 2014-11-17 | 2018-02-16 | 长城信息产业股份有限公司 | 一种国产自主嵌入式计算机系统及其显卡驱动方法 |
CN106909348A (zh) * | 2015-12-22 | 2017-06-30 | 中电科技(北京)有限公司 | 一种基于uefi固件的国产处理器平台下的显卡初始化方法 |
CN105912337A (zh) * | 2016-04-13 | 2016-08-31 | 浪潮集团有限公司 | 一种应用于国产非x86 平台上实现显卡初始化的方法 |
CN106155689B (zh) * | 2016-07-02 | 2019-04-12 | 广东中兴新支点技术有限公司 | 基于非x86平台在Linux操作系统下显示的方法 |
CN106155689A (zh) * | 2016-07-02 | 2016-11-23 | 广东中兴新支点技术有限公司 | 基于非x86平台在Linux操作系统下显示的方法 |
CN107220065A (zh) * | 2017-06-28 | 2017-09-29 | 山东超越数控电子有限公司 | 一种基于x86模拟器的国产平台bios显卡驱动方法 |
CN109471668A (zh) * | 2018-11-20 | 2019-03-15 | 南方电网科学研究院有限责任公司 | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 |
CN109471668B (zh) * | 2018-11-20 | 2021-11-26 | 南方电网科学研究院有限责任公司 | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 |
CN111752623A (zh) * | 2019-03-29 | 2020-10-09 | 龙芯中科技术有限公司 | 显示配置方法、装置、电子设备及可读存储介质 |
CN113254093A (zh) * | 2021-07-06 | 2021-08-13 | 西安芯瞳半导体技术有限公司 | 自适应系统架构的gpu初始化方法、装置及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102023889A (zh) | 一种实现x86 vbios在mips架构上运行的方法 | |
CN105205249B (zh) | 一种soc调试验证系统及其软硬件协同方法 | |
US7765500B2 (en) | Automated generation of theoretical performance analysis based upon workload and design configuration | |
CN105283858A (zh) | 可执行近似计算指令的处理器 | |
US20160188451A1 (en) | Software testing | |
CN109471668B (zh) | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 | |
CN105701298A (zh) | 基于PowerPC SoC架构的仿真平台设计方法 | |
KR20220096099A (ko) | 지식 증류에서 총 cam 정보를 이용한 교사 지원 어텐션 전달의 학습 방법 및 장치 | |
CN101261783B (zh) | 一种《计算机组成原理》仿真实验系统 | |
CN111353263A (zh) | 软硬件设计与验证平台系统 | |
CN110637521B (zh) | 一种基于模型仿真的数据实时存储方法和系统 | |
CN107220065A (zh) | 一种基于x86模拟器的国产平台bios显卡驱动方法 | |
CN105308555A (zh) | 具有近似计算功能单元的处理器 | |
CN106155689B (zh) | 基于非x86平台在Linux操作系统下显示的方法 | |
US7830386B1 (en) | Register transfer level simulation using a graphics processor | |
Talton et al. | Teaching graphics with the OpenGL shading language | |
CN109840172A (zh) | 一种基于SoC主控芯片的Nand闪存分析装置及方法 | |
CN108549548A (zh) | 一种基于飞腾平台amd显卡系统logo提前显示的实现方法、装置、设备及存储介质 | |
CN107329869B (zh) | 一种片上系统的仿真方法及装置 | |
CN105068908B (zh) | 一种用于kvm asic的功能验证平台的搭建方法 | |
US20220066911A1 (en) | Virtual machine for developing and testing target code for hardware designs | |
CN102799407A (zh) | 基于基板管理控制器进行显示的方法和装置 | |
CN205353863U (zh) | 一种应用于学生教学、学习及实验的64位元电脑 | |
CN106781862A (zh) | 微机原理实验系统 | |
CN104657180B (zh) | 一种检测移动终端问题类型的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C04 | Withdrawal of patent application after publication (patent law 2001) | ||
WW01 | Invention patent application withdrawn after publication |
Open date: 20110420 |