2025年vga驱动是什么(vga驱动程序是什么)

vga驱动是什么(vga驱动程序是什么)每当被问到我是做什么的时候 我都会回答 嗯 算程序员吧 对方又问 什么类型的呢 一个电脑的开机程序 就是从按下电源键到看到屏幕 LOGO 这段时间跑的程序 BIOS 全称 basic input output system 即基本输入输出系统 它是 PC 主板上的固件 负责初始化硬件资源并引导启动 OS 可以说 BIOS 就是为了启动 OS 而生 实际上启动 OS 并不一定需要使用 BIOS 我们常见的嵌入式设备 如监控机 它们使用 BootLoader 来引导 OS 一般是指 Linux



每当被问到我是做什么的时候,我都会回答“嗯~ 算程序员吧”,对方又问:什么类型的呢?“一个电脑的开机程序,就是从按下电源键到看到屏幕LOGO这段时间跑的程序”

BIOS全称basic input output system,即基本输入输出系统,它是PC主板上的固件,负责初始化硬件资源并引导启动OS,可以说BIOS就是为了启动OS而生。

实际上启动OS并不一定需要使用BIOS,我们常见的嵌入式设备(如监控机),它们使用BootLoader来引导OS(一般是指Linux),BootLoader相当于BIOS的角色,负责初始化内存,加载OS内核等。由于嵌入式设备的硬件环境各不相同,没有统一的标准,所以在不同嵌入式硬件上运行OS每次都得修改配置BootLoader和内核,比较繁琐。传统的PC设备则不一样,整个硬件系统架构都是有标准的,早期由Intel,IBM,AMD等大厂制定,发展至今已成为一套成熟且统一的系统架构。同样的,既然硬件能统一,OS也可以做到一致。此时,要让OS可以在硬件工作起来,还需要一段引导程序,负责检初始化硬件(如初始化内存),检测硬件资源(如可否正常分配资源)等,前面这些都正常了,说明OS正常运行的条件满足了,此时做最后一步就是引导启动OS了,这一阶段的程序就称为BIOS。

BIOS存在的条件是统一的硬件,像嵌入式这种就完全没有必要了。

BIOS只是一段引导程序,早期由汇编语言编写的。经过多年的发展,硬件可用的资源越来越丰富,BIOS已经无法满足现有的硬件了,此时打造一种新的引导程序便迫在眉睫。2002年12月英特尔发布了一种新的引导程序规范,称为EFI(Extensible Firmware Interface),后交由Unified EFI Forum(统一可扩展固件接口论坛)来推广与发展,并更名UEFI,新的引导程序正式面世了!

UEFI是一套规范,阐述了UEFI需要实现哪些功能,这些功能该怎么实现,实现的时候需要使用什么名称。比如规范中有一个USB相关的定义,有一个USB Host Controller Protocol,用来控制USB控制器,这个Protocol需要由13个函数组成,如下:

每个函数都有详细注明了它的使用方法,传入传出参数,返回值等,但是具体函数内部具体如何实现是不做要求的,只要能实现对应的功能即可。

UEFI的规范可以当做是一套库函数,是用来被调用的,那要怎么去使用这些库呢?整套引导的代码该从哪里写起?这时候一份称为《Platform Initialization Specification》(简称PI Spec)的手册派上用场了。

PI手册定义了UEFI代码的各个启动阶段(除了SEC阶段)的流程,每个阶段需要做哪些操作。此外,还定义了启动过程中使用到的一些机制,如HOB,SMM,S3 Resume等。

UEFI和PI手册定义整个引导程序的启动过程,当进入OS后,UEFI便功成身退了,只留下一些Runtime Service可供OS使用。进入操作系统后,人不可能无时无刻都在使用,当出现空闲状态时还是一直运行或者玩个扫雷就性能全开,就显得有点浪费电量,特别是笔记本电脑,这样的话电池很快就会消耗完。因此,对电脑进行电源的管理是非常有必要的。1997年由Intel、Microsoft、Toshiba共同制定提供操作系统应用程序管理所有电源管理接口称为ACPI(Advanced Configuration and Power Interface),即高级配置与电源接口。目前ACPI手册版本已经更新到6.3了,功能也越来越丰富,现在已经不单单是一个关于如何省电的手册了。在ACPI中,定义了一种用来描述ACPI的语言ASL(ACPI Source Language),由ASL写成的文件是需要包到UEFI固件中的,它编译后会变成AML(ACPI Machine Language),由OS去解析并处理。

UEFI在初始化阶段,需要与整个硬件系统资源打交道,比如Memory,PCIE,ISA BUS等,它们也都有标准的手册。

整个X86的架构也是有定义的,目前比较权威且完善的就是Intel制定的IA32手册,它是基于Intel自家的产品来写,如果是其他的CPU,如AMD,可能有一些差异,但整体上是一致的。

至此,有了这些规格书,UEFI代码便可以实现了,EDK应运而生!目前最新的代码已经更名为EDK2,是目前所有UEFI固件的基础代码。

EDK2主要是实现手册所定义的各项基本功能,是一套通用的代码,并不能直接拿来使用,还需要根据各个平台的差异做修改或对功能进行扩充,此时就有了做这项工作UEFI代码厂商,他们会整合优化EDK2的基础代码和芯片厂商(Intel、AMD还有中国的龙芯,兆芯等)的核心代码,有些还会加进一些自家的特色功能,让代码使用起来更加便捷。AMI就是比较著名的厂家,他们的代码都进行了深度的定制,很多功能几乎只要改改enable跟disable就可以了。

为了能让普通用户能够对某些功能进行配置,UEFI提供了一个简单人机界面,称为“Setup界面”,也叫“BIOS Setup”。虽然BIOS退出舞台了,但由于习惯的原因,“BIOS”这个叫法一直存留至今。有了这个BIOS SETUP,用户便可以通过它了解一些基本的信息,如CPU,内存大小等,然后还可以设置启用禁用或启用一些功能,比如有些网吧的电脑会关掉USB接口,而普通用户则要启用,此时就可以对它进行配置。

UEFI代码编译后会生成一个二进制文件,它便是BIOS/UEFI固件。要让CPU可以执行固件,需要把它烧录在CPU或PCH中的SPI Flash(也称BIOS ROM)中,CPU启动的时候便会从Flash中读取固件,执行指令。

UEFI、ACPI和PI SPEC都可以在这里下载到:https://uefi.org/specifications/

EDK2项目地址:https://github.com/tianocore/edk2

Intel IA32手册:https://software.intel.com/content/www/us/en/develop/download/intel-64-and-ia-32-architectures-sdm-combined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4.html


编程小号
上一篇 2025-01-28 10:11
下一篇 2025-02-05 23:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/23337.html