选装件 PXE设计

问题描述 投票:2回答:1

在研究PCI固件规范和查看现有的PXE Boot Agents的实现过程中,我对这个问题有一个误解。

根据PCI固件规范,在POST过程中,BIOS应该将Option ROM映射到UMB内存中(0xC000-0xF000),然后通过偏移量0x3调用 "Init "入口点,之后BIOS可以禁用Option ROM。

PXE oprom二进制由三部分组成。"Initialization code"、"Base code "和 "UNDI code".BIOS只将 "Initialization code "加载到UMB中。BIOS只将 "初始化代码 "加载到UMB中,而基础代码和UNDI代码则是通过直接从闪存中复制而加载到内存中的(根据Intel的规格,是从PCI闪存BAR(BAR1)中复制的)。

问题是:需要这样的工作算法的原因是什么?为什么厂商不使用BIOS机制,不将整个Extension ROM加载到内存中(而是从Flash BAR中复制)?

bios pci nic option-rom
1个回答
0
投票

单片式的PXE选项ROM是一个单一的单元,但现在大多数PXE选项ROM都是分体式架构(分为UNDI选项ROM和BC选项ROM)。虽然,BC ROM通常嵌入在BIOS中,甚至可能不会作为一个选项ROM出现。

现在的网卡只有一个选项ROM,即UNDI选项ROM。

Option ROM Header: 0x000DA000
55 AA 08 E8 76 10 CB 55 BC 01 00 00 00 00 00 00 U...v..U........
00 00 00 00 00 00 20 00 40 00 60 00             ...... .@.`.    
  Signature 0xAA55
  Length    0x08 (4096 bytes)
  Initialization entry  0xCB1076E8 //call then far return 
  Reserved  0x55 0xBC 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
  Reserved  0x00 0x00 0x00 0x00 0x00 
  PXEROMID Offset  0x0020 //RWEverything didn't pick it up as a separate field and made it part of the reserved section so I separated it.
  PCI Data Offset   0x0040  
  Expansion Header Offset   0x0060

UNDI ROM ID Structure: 0x000DA020  //not recognised by RW Everything so I parsed it myself
55 4E 44 49 16 08 00 00 01 02 32 0D 00 08 B0 C4  UNDI......2...
80 46 50 43 49 52                                ¦-ÇFPCIR
  Signature  UNDI
  StructLength  0x16
  Checksum  0x08  
  StructRev  0x00
  UNDIRev 0x00 0x01 0x02
  UNDI Loader Offset 0x0D32
  StackSize 0x0800
  DataSize 0xC4B0
  CodeSize 0x4680
  BusType PCIR

PCI Data Structure: 0x000DA040
50 43 49 52 EC 10 68 81 00 00 1C 00 03 00 00 02 PCIR..h.........
08 00 01 02 00 80 08 00                         ........        
  Signature PCIR
  Vendor ID 0x10EC - Realtek Semiconductor
  Device ID 0x8168
  Product Data  0x0000
  Structure Length  0x001C
  Structure Revision    0x03
  Class Code    0x00 0x00 0x02
  Image Length  0x0008
  Revision Level    0x0201
  Code Type 0x00
  Indicator 0x80
  Reserved  0x0008

PnP Expansion Header: 0x000DA060
24 50 6E 50 01 02 00 00 00 D7 00 00 00 00 AF 00 $PnP............
92 01 02 00 00 E4 00 00 00 00 C1 0B 00 00 00 00 ................
  Signature $PnP
  Revision  0x01
  Length    0x02 (32 bytes)
  Next Header   0x0000
  Reserved  0x00
  Checksum  0xD7
  Device ID 0x00000000
  Manufacturer  0x00AF - Intel Corporation
  Product Name  0x0192 - Realtek PXE B02 D00
  Device Type Code  0x02 0x00 0x00
  Device Indicators 0xE4
  Boot Connection Vector    0x0000
  Disconnect Vector 0x0000
  Bootstrap Entry Vector    0x0BC1 // will be at 0xDABC1
  Reserved  0x0000
  Resource info. vector 0x0000
© www.soinside.com 2019 - 2024. All rights reserved.