BIOS 是否有某种通用的“驱动程序”

RJS*_*h92 23 bios boot drivers

BIOS 如何在没有任何形式的驱动程序的情况下控制 I/O 设备?

例如,如果 BIOS 没有任何显卡驱动程序,在计算机启动时如何显示图像。

是否有某种通用驱动程序是所有 BIOS 和硬件的标准,无论安装什么硬件,都允许 BIOS 执行基本功能。

任何帮助,将不胜感激。

谢谢。

Law*_*ceC 22

PC 中的 BIOS 旨在实现与 8 位 CP/M 系统中的 BIOS 类似的功能,在 80 年代中期 PC 接管之前流行。BIOS 旨在包含一个最小的引导加载程序和依赖于硬件的低级例程,以对少数设备(屏幕、磁盘、磁带、COM 端口)进行输入和输出。执行此操作的知识已内置于 ROM 中 - 无需驱动程序,当然,此 ROM 不支持其他硬件。(电源管理和 ACPI 之类的东西出现得更晚,在 90 年代,在 PC 将自己确立为一个无处不在的平台之后。)

(CP/M“文件系统”位于从磁盘加载的名为 BDOS 的组件中——同样,FAT 文件系统及其接口的知识位于(至少)两个隐藏文件 MSDOS.SYS 或 IO.SYS 中——不是一部分BIOS ROM。)

然而... PC BIOS 与CP/M 不同,确实支持可以包含在扩展卡中的“Option ROMS”的概念。所以至少有一个扩展 BIOS 的最小机制。以 CGA 开头的显卡(MDA,CGA 的前身,也可能已经这样做了)将有一个可选 ROM,可以将 I/O 功能扩展或添加到 BIOS 接口。(这就是为什么您会在 BIOS 启动之前看到 NVidia 消息。)硬控制器和 SCSI 卡也是如此。所有这些仍然如此。许多较旧的网卡都有一个用于引导 ROM 的插槽。

还要记住,在 80 年代兴起的 PC 克隆制造商很快决定不只提供兼容的 BIOS 接口,而是最终不得不复制整个 PC 平台,包括所有低级硬件,如定时器芯片、中断控制器等(这相对容易,因为它很少是 IBM 专有的。)这是因为 BIOS 做事很慢,程序员直接访问硬件,特别是对于游戏。

因此,在可选 ROM 和形成 PC 平台的标准硬件的这种共识之间,以及在整个 PC 的发展过程中它一直保持向后兼容的事实之间,希望在没有驱动程序的情况下使用显示器的东西可以:

  • 使用标准的 BIOS 接口,可能会被视频硬件中的选项 ROM “挂钩”
  • 或假设系统中有哪些硬件并直接访问基本硬件

所有 PC 显示硬件在启动时仍以“VGA 兼容”模式工作。最初的 IBM VGA 适配器具有与早期 EGA、CGA 和 MDA 卡兼容的模式。所有这一切意味着,从 BIOS 或操作系统外部运行的某些东西可以假设它现在仍然可以读写连接到显示器的相同内存,就像它在 1985 年一样,通过约定。


Syn*_*ech 14

BIOS 是否有某种通用的“驱动程序”

BIOS 如何在没有任何形式的驱动程序的情况下控制 I/O 设备?

标准。所有组件都实现一个基本接口,并且 BIOS 被编程为使用该接口。当然,因为它是一个基本接口(这就是 BIOS 中的“B”所代表的意思),它不能利用硬件的全部功能;这留给软件通过可以直接访问硬件的驱动程序来实现。

最初,BIOS 制造商创建了一组API,如果设备想要兼容,则希望设备使用这些API。他们通过“中断”来做到这一点,这是设备中断程序以使其知道发生了某些事情的一种方式,反之亦然。

例如,如果 BIOS 没有任何显卡驱动程序,在计算机启动时如何显示图像。

在预启动显示的情况下,视频适配器的固件实现了VESA(视频电子标准协会),该标准旨在简化对显示硬件的访问。BIOS 知道如何使用提供的标准功能访问视频硬件。这有点类似于 DirectX 如何实现为硬件的高级 API,因此程序员不必考虑每一个硬件配置。

是否有某种通用驱动程序可以跨所有 BIOS 和硬件,无论安装什么硬件,都允许 BIOS 执行基本功能。

有点。它不是一个驱动程序,而是一个标准的 API;一组编程函数,可用于执行基本操作,例如初始化设备或输入和输出数据。

如果制造商想要销售他们的产品,他们将需要确保他们至少实现了标准 API,以便它们兼容。这样,系统可以检测硬件,并且在启动关键设备的情况下,它们可以在基本级别访问它们,直到可以加载知道如何完全访问它们的软件驱动程序。