Bios工程师手边事—IGD VBIOS

本文从BIOS工程师的角度介绍了如何处理INTEL的IGD VBIOS,包括VBIOS的客制化以适应平台,将其集成到BIOS ROM,以及执行切屏和调整亮度的操作。内容涉及LVDS和DisplayPort配置,VBIOS在BIOS ROM中的打包过程,以及在不同操作系统下的屏幕切换和亮度控制方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    现代社会,是计算机技术高速发展的时代。计算机的发展,总是以人们生活的方便为目的。早期的计算机要想看到计算机的计算结果,要根据打孔的卡片来计算输出结果。而现在想看计算机的输出,就方便多了,一台显示器,男女老少皆能看懂。

    显示器只是一个输出终端,计算机的核心输出设备是显卡。显卡厂商为了使自己的产品更容易销售,便做了一个叫做VBIOS的东西。它使得我们底层系统BIOS开发者可以不必知道显卡的具体初始化细节,我们只需要找到它执行它,然后再往显存里写数据,显示器便会神奇地显示我们的想要的结果。

    作为BIOS工程师,需要对VBIOS做哪些事情呢?笔者现在从INTEL IGD VBIOS的角度来谈一下:

1, 客制化VBIOS,使其适合我们自己的平台。

2, 将VBIOS包入我们的BIOS ROM中。

3, 切屏和调整亮度。

 

1,客制化BIOS,使其适合我们自己的平台。

INTEL的VBIOS,是以二进制的方式提供给各个主板厂商,并且提供了BMP工具以方便我们对显示接口进行配置。

         想要配置VBIOS,先打开BMP(如果你够牛,可以不用BMP遍历VBT区来修改各项值)。然后用BMP加载两个文件,一个是我们的VBIOS数据文件,另一个是脚本配置文件。打开后,我们需要调整的一般也就只有两块,LVDS屏的配置和几个数字PORT的配置。

         LVDS:

         屏的规格书一般都写有屏的分辨率和屏的色深。我们需要根据这几个值,来选择我们的LVDS屏号,并在Panel Color Depth一栏选择正确的值。

 图1,Panel No.



如果主板和LVDS屏上都没有EDID ROM,那么BIOS工程师就需要在EDID SUPPORT一栏选择Disabled。并且要根据屏的Timing Characteristics来配置DTD Timing。

 

图2,TimingCharacteristics



图3,DTD Timings



DisplayPort:

根据主板需求,开关一些数字显示接口。很多工程师看到Device1,Device2就对应上了DisplayPortB,DisplayPortC。其实Device1,Device2都是针对设备接口来描述的,并不需要一定要和哪个数字显示接口相对应。DisplayPort口比LVDS的配置简单多了,只要认真看仔细,就不会出错。

 

 

 

2, 将VBIOS包入我们的BIOS ROM中。

(1)      包INTEL IGD VBIOS时,我们先要确保我们的VBIOS将会被GenFW,并且会被包到最终的ROM中。EDK和EDK2的具体做法有所不同,但目的都是一致的。

(2)      在第一步中,我们需要建一个GUID来代表VBIOS。在代码中,我们同样需要建立相应的GUID,然后加入我们的代码中,此时要填好正确的VID和DID。

       做完以上两步后,Kernel代码会帮我们完成这个功能。

MRC代码执行后。VBIOS会随着BIOS代码被解压至内存的高端地址。在BDS阶段,PCI扫描过后,BiosVideo驱动将会被执行,BIOSVideo会将VBIOS从高端地址拷贝到C段地址起始处。根据PCI OptionROM的结构找到其EntryPoint,切换至实模式执行此EntryPoint。VBIOS执行完后,我们在1中的设定才真正实现了。

 

3, 切屏和调整亮度。

显示相关功能都交给VBIOS和显卡驱动来做了。系统BIOS能做的功能不多,但终端用户经常使用的功能:切屏和调整亮度却需要我们来触发。在ACPI OS下,我们需要通知驱动执行相关功能,在非ACPI OS环境下,我们要借助INT 10H来执行相应功能。

总结起来如下所示:

 

表1,切屏和调整亮度

功能

ACPI OS

非ACPI OS

切屏

GHDS()

INT10(AX=5F64H,BX=0401H),注:BL为VBIOS Toggle表。

亮度加

BRTN(0x86)

INT10(AX=5F61H,BX=08XXH),注XX为亮度值

亮度减

BRTN(0x87)

INT10(AX=5F61H,BX=08XXH),注XX为亮度值

 


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值