2006/10/01

(Note)FreeVGA:Architecture Independent Video Graphis Initialization for LinuxBIOS

Li-Ta Lo et al

LinuxBIOS广泛使用于集群计算的应用,当前它也受到网络设备、桌面和虚拟应用开发者的关注。网络设备、桌面和虚拟应用需要支持多种多样的VGA硬件设备,而LinuxBIOS并不支持多样的VGA硬件。为解决该问题,本文提出了一个处于LinuxBIOS和VGA BIOS之间的兼容层,以来模拟VGA BIOS运行时需要的环境。该兼容层是以x86emu为基础的x86模拟器。

使用非传统方法初始化VGA显卡的方法:

  1. SVGLib:一个提供支持老款VGA显卡通用接口的库。使用x86处理器的vm86模式来执行VGA BIOS,vm86模式下运行32位的程序没异样,但运行16位的代码时它就像是运行在传统8086CPU上。缺点是不可移植,难以调试。[http://www.svgalib.org]
  2. ADLO:在LinuxBIOS中增加一个BOCH BIOS,LinuxBIOS加载BOCH BIOS和VGA BIOS,并跳到BOCH BIOS执行,BOCH BIOS提供传统BIOS的环境并执行VGA BIOS。缺点是难以调试。[Adam Agnew, Adam Sulmicki, Ronald minnich, Willian Arbaugh. Flexibility in ROM: A stackable open source bios. In 2003 USENIX Annual Techinical Conference]
  3. VIA/EPIA Port:实现一个跳板(trampoline)以在16位和32位模式之间切换,运行VGA BIOS直接在16位模式运行,但使用32位C代码来模拟标准的BIOS回调功能。缺点是不可移植,难以调试。
  4. XFree86:为了支持多体系结构(但使用的仍是x86的显卡),在LinuxBIOS中加入一个x86模拟器x86emu,将VGA BIOS rom中的代码拷到内存有x86的模拟器执行。缺点是VGA硬件的初始化比较晚。[http://www.xfree86.org]
  5. FreeVGA:和XFree86类似,但对硬件的初始化比较早,并且使用以x86emu为基础的x86模拟器。

相关文章:
* AMD. BIOS and Kernel Developer's Guide forAMD Athlon 64 and AMD Opteron
Processors, May 2003.
* Richard F. Ferraro. Programmer's Guide to theEGA, VGA, and Super VGA Cards. Addison
Wesley,1994. [EGA 与 VGA 程式设计指南 ISBN 957-652-320-6 -- 黄三益,许锦松 译 儒林出版社]
* Ron Minnich, James Hendricks, and Dale Webster.The Linux BIOS. In Proceedings of the
Fourth AnnualLinux Showcase and Conference, Atlanta, GA,October 2000.
* Gregory R. Watson, Matthew J. Sottile, Ronald G.Minnich, Erik A. Hendriks, and Sung-Eun
Choi.Pink: A 1024-node single-system image linux cluster.In Proceedings of HPC Asia
2004, Toyko,Japan, July 2004.

0 Comments:

发表评论

<< Home