通过即插即用 BIOS 分配 PCI 扩展卡资源

通过即插即用 BIOS 分配 PCI 扩展卡资源

即插即用 BIOS 规范规定,如果你有一个 PnP BIOS,它可以配置硬件。

这意味着你的 BIOS 会读取所有设备的资源需求并对其进行配置(为它们分配总线资源)。

PnP 是否总是为主板上嵌入/集成的设备分配资源(即分配 I/O 或内存地址和中断请求)?

是否存在 PnP BIOS(即存在 $PnP 结构),总是分配资源(I/O 和内存地址)全部主板上存在的设备(即主板上嵌入/集成的设备)在 PCI 扩展卡上。

尽管 BIOS 可能不知道如何“配置”非嵌入式设备(即未嵌入主板的设备),并且只会配置主板本身上嵌入/集成的设备,但它'应该'分配地址(PCI BAR 中的 I/O 和内存)和 irq,以避免在使用非 PnP OS(如 DOS)时发生冲突。

我的问题是:

PnP BIOS必须在 POST 期间(即在加载并将控制权移交给 OS 引导加载程序之前)将 I/O、内存地址和 irq 分配给 PCI 扩展卡设备?全部PnP BIOS ?

假设 [即插即用操作系统] 选项设置为否。即我们告诉 BIOS 我们不要有一个 PnP 操作系统,但是有一个非 PnP 操作系统,例如 DOS。

有些 BIOS 没有此选项。它们是否始终将资源分配给所有设备(即嵌入式设备和扩展槽上的设备)?

2012-08-01更新:

PnP BIOS 规范 v1a 中标题为“系统 BIOS POST 要求”的第 2.1 节指出:

(我只提到了与这篇文章相关的 3 点。标有 (*) 的信息是我的标准声明的解释。)

为了实现即插即用的目标,系统 BIOS POST负责任的为了满足下列要求:

  1. 全部配置'静止的'设备已知至系统 BIOS:

    '最低限度', 这包括系统板设备。 它'能'还包括“即插即用 ISA 卡”位于EISA,ISA上的设备,PCI,或任何其他可用的静态总线架构。

    *实际上,上述陈述表明,设备“嵌入/集成”在系统板上的任何静态总线(例如 PCI、ISA 或 EISA)。)'必须'由 BIOS 配置,因为 *BIOS 知道'全部'作为设计的一部分,嵌入在主板上的设备。*系统 BIOS 编程器必须已将配置主板上嵌入的设备的规定作为系统设计的一部分。

    这是否还包括‘安装在 PCI/ISA/EISA 卡槽中的卡’?这正是我感到困惑的地方。

  2. BIOS POST 资源仲裁:系统 BIOS 现在必须了解系统资源的使用情况。使用通过运行时服务提供的信息(后面部分将介绍)以及系统 BIOS 已知的资源信息,可以避免关键资源冲突。“在禁用冲突设备的情况下加载操作系统比引起资源冲突和可能的系统故障要好。”

    *这似乎适用于嵌入/集成在主板或 ISA/EISA 扩展卡插槽上的 ISA/EISA 设备。 由于 PCI 设备的资源不能冲突就 I/O(或内存)地址分配而言(因为地址是不是 PCI 设备的硬连线,因此在BIOS 的“手”分配非冲突地址。)和 irq 分配(因为 PCI 中断在设计上是可共享的),所以这意味着“所有” PCI 设备(嵌入式或非嵌入式)都将被初始化/分配内存或 I/O 地址和 irq 分配。

  3. 支持即插即用和非即插即用操作系统:即插即用系统 BIOS POST'必须'将系统配置为同时运行即插即用和非即插即用操作系统。*在非即插即用环境中,'任何一个'系统 BIOS'或者'适当的系统软件(设备驱动程序)‘必须’配置‘所有’设备(即插即用 ISA 卡、PCI 设备等)。这将允许所有环境“像在标准 PC 兼容系统上一样加载”。然而,在即插即用环境中,系统 BIOS 现在可以协助操作系统执行诸如系统板设备的运行时配置和系统板设备发生变化时的事件识别等功能。

**规范中的所有这 3 条陈述似乎都表明,如果要启动非 PnP 操作系统(例如 DOS),则系统 BIOS“必须”配置(或至少分配地址和中断)“所有” PCI 设备,无论是否嵌入/集成在主板上。对于 ISA 和 EISA 设备,BIOS“不得”为这些 ISA/EISA 设备(无论是嵌入式还是非嵌入式)启用/分配资源,否则会导致资源分配冲突。*

我是否可以正确地得出这样的结论:“如果 BIOS 必须启动非 PnP 操作系统,则它必须启用(即启用即分配资源)“每个” PCI 设备(无论是嵌入在主板上还是 PCI 扩展卡插槽上)在系统中,以便操作系统和应用程序可以使用它们”?

至少在以下情况下必须如此:[即插即用操作系统]选项设置为即我们告诉 BIOS 我们不要有一个 PnP 操作系统,但是非即插即用操作系统,如 DOS

答案1

如果您在 BIOS 中将 PnP OS 设置为 no,它将为所有设备分配资源。如果您在 BIOS 中将 PnP OS 设置为 yes,它将只为启动操作系统可能需要的设备或操作系统在其 PnP 引擎运行之前可能需要访问的设备分配资源。

相关内容