1

即插即用 BIOS 规范说,如果您有 PnP BIOS,它可以配置硬件。

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

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

PnP BIOS(即存在 $PnP 结构)是否总是将资源(I/O 和内存地址)分配给主板上存在的所有设备(即嵌入式/集成在主板上)以及PCI 扩展卡上。

虽然 BIOS 可能不知道如何“配置”非嵌入式设备(即未嵌入主板上的设备),并且只会配置嵌入式/集成在主板上的设备,但它“应该”分配地址(I/O 和内存)和 irq 以避免在使用像 DOS 这样的非 PnP 操作系统时发生冲突。

我的问题是:

PnP BIOS 是否必须在 POST 期间(即在加载和将控制权转移到 OS bootlader 之前)将 I/O、内存地址和 irq 分配给PCI 扩展卡设备?所有 PnP BIOS 都是这样吗?

假设 [Plug-and-Play OS] 选项设置为No。即我们告诉 BIOS 我们没有 PnP 操作系统,而是像 DOS 这样的非 PnP 操作系统。

某些 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 “必须”配置系统以“既”即插即用感知,“以及”非即插即用操作system.* 在非即插即用环境中,“要么”系统 BIOS ,“要么适当的系统软件(设备驱动程序),“必须”配置“所有”设备(即插即用 ISA 卡、PCI 设备等)。这将允许所有环境“完全像在标准 PC 兼容系统上那样加载”。但是,在即插即用环境中,系统 BIOS 现在可以协助操作系统执行功能,例如系统板设备的运行时配置和系统板设备发生变化时的事件识别。

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

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

2012-08-04 更新:

查看Linux Device Drivers 3rd ed 的第 12 章。. 作者在很多地方明确指出,I/O 或内存地址和 IRQ 分配在 linux 内核开始执行时已经由 bios 完成,linux 内核可以根据需要定制分配。

可能是另一个提到我们想要达到的目标的参考。

4

2 回答 2

4

“PnP OS”选项仅与 ISA PnP 设备相关,如今这些设备几乎不存在。这就是为什么您不再看到该选项的原因。在没有 ISA 插槽的主板上,这基本上是无关紧要的。如果您可以将串行端口基地址设置为“自动”,则可能仍然具有一定的相关性。

BIOS 应始终配置 PCI BAR 和 INTx 到 IRQ 的映射。无论 PnP OS 选项如何,它都应该这样做。这包括板载 PCI 设备(例如集成以太网)和 PCI/PCIe 插槽板。我从未见过可以启动到 DOS 并且具有未配置的 BAR 的(工作)BIOS。

当 BIOS 设置 PCI 配置空间时,它会考虑 ISA PnP 信息。例如,如果它知道 ISA PnP 设备正在使用 IRQ 9,那么 PCI init 例程应该足够智能,不会将 IRQ 9 映射到任何 PCI INTx 行。

另外,请记住,当您的操作系统加载时,可以随意覆盖 BAR 和 IRQ 映射。Windows 通常在激活 APIC 和 ACPI 时重新执行 IRQ 映射。BAR 通常不会更改,尽管可能存在特殊情况,例如需要操作系统填充 BAR 的 PCIe 热插拔事件。

于 2012-07-31T15:06:13.420 回答
-1

“PnP OS”选项仅与 ISA PnP 设备相关,如今这些设备几乎不存在。- 错误的!这个选项对Windows OS中的中断分布有很大的影响!反驳上述说法的实验本身很简单!

于 2015-03-23T16:30:53.617 回答