CN102023889A - 一种实现x86 vbios在mips架构上运行的方法 - Google Patents

一种实现x86 vbios在mips架构上运行的方法 Download PDF

Info

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
Application number
CN2010105366158A
Other languages
English (en)
Inventor
李丰旺
郑臣明
李永成
尹宁宁
吕民强
邵宗有
刘新春
方信我
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TIANJIN SUGON COMPUTER INDUSTRY Co Ltd
Original Assignee
TIANJIN SUGON COMPUTER INDUSTRY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by TIANJIN SUGON COMPUTER INDUSTRY Co Ltd filed Critical TIANJIN SUGON COMPUTER INDUSTRY Co Ltd
Priority to CN2010105366158A priority Critical patent/CN102023889A/zh
Publication of CN102023889A publication Critical patent/CN102023889A/zh
Withdrawn legal-status Critical Current

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

一种实现X86 VBIOS在MIPS架构上运行的方法
技术领域
本发明提供了一种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、设置显示模式。
CN2010105366158A 2010-11-04 2010-11-04 一种实现x86 vbios在mips架构上运行的方法 Withdrawn CN102023889A (zh)

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)

* Cited by examiner, † Cited by third party
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初始化方法、装置及计算机存储介质

Cited By (16)

* Cited by examiner, † Cited by third party
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