【问题标题】:Option rom: PXE design选项 rom:PXE 设计
【发布时间】:2018-03-06 22:13:46
【问题描述】:

在研究 PCI 固件规范和查看 PXE 引导代理的现有实现期间,我对它应该如何工作存在误解。

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

PXE oprom 二进制文件由三部分组成:“初始化代码”、“基本代码”和“UNDI 代码”。 BIOS 仅加载到 UMB 中的“初始化代码”。基本代码和 UNDI 代码稍后通过直接从闪存(从 PCI 闪存 BAR(BAR1,根据 Intel 规范)复制)加载到内存中。

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

【问题讨论】:

    标签: bios pci nic option-rom


    【解决方案1】:

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

    现在网卡只有一个可选ROM,UNDI option 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-12
      • 2012-07-24
      • 2021-06-28
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      相关资源
      最近更新 更多