在研究 PCI 固件规范和查看 PXE 引导代理的现有实现期间,我对它应该如何工作存在误解。
根据 PCI 固件规范,在 POST 过程中,BIOS 应该将 Option ROM 映射到 UMB 内存(0xC000-0xF000),然后通过偏移量 0x3 调用“Init”入口点,然后 BIOS 可以禁用 Option ROM。
PXE oprom 二进制文件由三部分组成:“初始化代码”、“基本代码”和“UNDI 代码”。BIOS 仅加载到 UMB 中的“初始化代码”。基本代码和 UNDI 代码稍后通过直接从闪存(从 PCI 闪存 BAR(BAR1,根据英特尔规范)复制)加载到内存中。
问题:需要这种工作算法的原因是什么?为什么供应商不使用 BIOS 机制,也不将整个 Extension ROM 加载到内存中(而是从 Flash BAR 复制)?