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

显示器只是一个输出终端,计算机的核心输出设备是显卡。显卡厂商为了使自己的产品更容易销售,便做了一个叫做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为亮度值

Bios工程师手边事—IGD VBIOS相关推荐

  1. Bios工程师手边事—SBIOS添加EC功能

    在笔记本平台中,我们经常用到EC芯片.从BIOS角度来看,EC在平台中的地位和SuperIO,BMC没有什么不同:都是挂在LPC下面:所用IO端口都要解码至LPCbridge上:都要为ACPI OS提 ...

  2. Bios工程师手边事—HDA Audio

    目前正在做一款至强服务器平台,发现居然有接ALC282声卡.一个服务器要声卡做什么呢?百思不得其解.不过既然原理图都画出来了,BIOS就需要将其调试出来.毕竟BIOS就是不做它,也省不了啥成本. 我们 ...

  3. BIOS工程师手边事-题前话

    先感叹一下:"BIOS这个行业真是太窄了!"我刚入行的时候,我老大太忙了,我都不好意思占用我老大太多时间,只好在网上找教程.但网上谈这个的寥寥无几,幸好看到BINI大侠发的一系列文 ...

  4. Bios工程师手边事—ACPI电源管理

    ACPI是高级配置与电源接口(AdvancedConfiguration and Power Interface)的简称,它是1997年由Intel.Microsoft.Toshiba,HP,Phoe ...

  5. Bios工程师手边事—重启

    情景1:玩游戏久了,内存使用率噌噌地往上涨,太卡了.于上按下WINDOWS左下角开始菜单,点"重新启动"按钮,过一会重新进入OS,不卡了. 情景2:使用电脑时,经常遇到机器无法正常 ...

  6. BIOS工程师需要掌握的知识

    ACPI规范: ACPI Specification 概述(基于ACPI_Spec_6_4_Jan22)_anqi8955的专栏-CSDN博客 ​​​​​​ACPI Specification 第一章 ...

  7. AMI legacy BIOS里添加2个VBIOS的问题

    有时候需要同时支持3种类型以上的显示器输出,一个VBIOS无法同时支持这些设备时,就需要包两个VGA BIOS进去, 然后让用户根据显示器的类型来选择从哪一个VBIOS来启动. 在AMI legacy ...

  8. 2017年-Intel BIOS 工程师面试

    岗位需求:需要扎实的C,Python基础 面试地点:上海紫竹园(紫星路880号) 面试时间:2017年1月12日 面试总时间:1.5h 一面:9:00-9:30 问题:   1)C语言中结构体和联合体 ...

  9. 2022华为BIOS工程师笔试与面试

    一.笔试 平台: 牛客网带监控 1. 选择题单选+多选- 主要是C语言数组通常具有的两种基本操作是( )查找和修改查找和索引索引和修改建立和删除关于const char *p;中p的描述,正确是()指 ...

最新文章

  1. 行列式介绍及Eigen/OpenCV/C++的三种实现
  2. 深度学习与计算机视觉系列(8)_神经网络训练与注意点
  3. 计算机默认存储格式,office2007默认保存文件格式的修改方法
  4. postgreSQl pathman 用法语句总结
  5. [开源]jquery.ellipsis根据宽度(不是字数)进行内容截断,支持多行内容
  6. MAC下学习UNIX网络编程
  7. jenkins打包后文件通过ssh上传linux服务器配置
  8. AI 人工智能学习之泰勒公式与拉格朗日乘数法
  9. Android 融云即时通讯简单概述
  10. 阿里云服务器使用步骤详解
  11. 在浏览器输入URL,按下回车之后的流程?
  12. ios如何解除dns被劫持_mac dns被劫持如何修复-Mac DNS被劫持解决方法 - 河东软件园...
  13. python中的start_python中startx有什么用
  14. 勇敢猿猿不怕困难!为去大厂我把这个Java大厂面试真题刷了几十遍!(2021最新版)
  15. 分库分表就能无限扩容吗
  16. 【STL容器使用案例】雀魂启动 (map容器\[]重载)
  17. 百度之星初赛(A)——T6
  18. 关于DPABI头动参数问题
  19. 为淘宝网店免费使用流量统计教程
  20. python调用海康威视工业相机SDK实现图片采集

热门文章

  1. Storybook 完美组件开发工具
  2. 浏览器端 调用百度api定位
  3. BAT 程序员们常用的开发工具
  4. 洛克王国服务器维护中,洛克王国1月10日服务器更新公告 突破阻挠
  5. U盘启动proxmox ve
  6. Springboot+vue项目二手交易平台系统
  7. hge source explor 0x5 input module
  8. [转载]win7命令大全
  9. 蓝牙串口通信java_Java程序与串口通信的实现及通信原码-全网最详细,一步一步教会...
  10. 文献精讲-弱小目标检测-ADMD方法