Bios工程师手边事—IGD VBIOS
现代社会,是计算机技术高速发展的时代。计算机的发展,总是以人们生活的方便为目的。早期的计算机要想看到计算机的计算结果,要根据打孔的卡片来计算输出结果。而现在想看计算机的输出,就方便多了,一台显示器,男女老少皆能看懂。
显示器只是一个输出终端,计算机的核心输出设备是显卡。显卡厂商为了使自己的产品更容易销售,便做了一个叫做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相关推荐
- Bios工程师手边事—SBIOS添加EC功能
在笔记本平台中,我们经常用到EC芯片.从BIOS角度来看,EC在平台中的地位和SuperIO,BMC没有什么不同:都是挂在LPC下面:所用IO端口都要解码至LPCbridge上:都要为ACPI OS提 ...
- Bios工程师手边事—HDA Audio
目前正在做一款至强服务器平台,发现居然有接ALC282声卡.一个服务器要声卡做什么呢?百思不得其解.不过既然原理图都画出来了,BIOS就需要将其调试出来.毕竟BIOS就是不做它,也省不了啥成本. 我们 ...
- BIOS工程师手边事-题前话
先感叹一下:"BIOS这个行业真是太窄了!"我刚入行的时候,我老大太忙了,我都不好意思占用我老大太多时间,只好在网上找教程.但网上谈这个的寥寥无几,幸好看到BINI大侠发的一系列文 ...
- Bios工程师手边事—ACPI电源管理
ACPI是高级配置与电源接口(AdvancedConfiguration and Power Interface)的简称,它是1997年由Intel.Microsoft.Toshiba,HP,Phoe ...
- Bios工程师手边事—重启
情景1:玩游戏久了,内存使用率噌噌地往上涨,太卡了.于上按下WINDOWS左下角开始菜单,点"重新启动"按钮,过一会重新进入OS,不卡了. 情景2:使用电脑时,经常遇到机器无法正常 ...
- BIOS工程师需要掌握的知识
ACPI规范: ACPI Specification 概述(基于ACPI_Spec_6_4_Jan22)_anqi8955的专栏-CSDN博客 ACPI Specification 第一章 ...
- AMI legacy BIOS里添加2个VBIOS的问题
有时候需要同时支持3种类型以上的显示器输出,一个VBIOS无法同时支持这些设备时,就需要包两个VGA BIOS进去, 然后让用户根据显示器的类型来选择从哪一个VBIOS来启动. 在AMI legacy ...
- 2017年-Intel BIOS 工程师面试
岗位需求:需要扎实的C,Python基础 面试地点:上海紫竹园(紫星路880号) 面试时间:2017年1月12日 面试总时间:1.5h 一面:9:00-9:30 问题: 1)C语言中结构体和联合体 ...
- 2022华为BIOS工程师笔试与面试
一.笔试 平台: 牛客网带监控 1. 选择题单选+多选- 主要是C语言数组通常具有的两种基本操作是( )查找和修改查找和索引索引和修改建立和删除关于const char *p;中p的描述,正确是()指 ...
最新文章
- 行列式介绍及Eigen/OpenCV/C++的三种实现
- 深度学习与计算机视觉系列(8)_神经网络训练与注意点
- 计算机默认存储格式,office2007默认保存文件格式的修改方法
- postgreSQl pathman 用法语句总结
- [开源]jquery.ellipsis根据宽度(不是字数)进行内容截断,支持多行内容
- MAC下学习UNIX网络编程
- jenkins打包后文件通过ssh上传linux服务器配置
- AI 人工智能学习之泰勒公式与拉格朗日乘数法
- Android 融云即时通讯简单概述
- 阿里云服务器使用步骤详解
- 在浏览器输入URL,按下回车之后的流程?
- ios如何解除dns被劫持_mac dns被劫持如何修复-Mac DNS被劫持解决方法 - 河东软件园...
- python中的start_python中startx有什么用
- 勇敢猿猿不怕困难!为去大厂我把这个Java大厂面试真题刷了几十遍!(2021最新版)
- 分库分表就能无限扩容吗
- 【STL容器使用案例】雀魂启动 (map容器\[]重载)
- 百度之星初赛(A)——T6
- 关于DPABI头动参数问题
- 为淘宝网店免费使用流量统计教程
- python调用海康威视工业相机SDK实现图片采集