BIOS入知识枝桠——SMBIOS

OVERVIEW

SMBIOS全拼System Management BIOS, 是通过系统固件传递管理信息的标准。应用在PC上,即是主板或系统制造厂商以标准格式显示产品信息所遵循的统一规范。

主板厂商或OEM厂商生产的PC,出厂前都会按照SMBIOS标准将相关信息写入BIOS中。比如OEM客制化信息等。
SMBIOS信息也会记录很多硬件信息, 比如CPU型号, 缓存, 内存大小等等

  • SMBIOS由DMTF组织管理和维护。DMTF是一个工业化组织,通过与领先科技公司的开放与协作简化网络访问技术的可管理性。DMTF创建和推动全球采用互操作管理标准,并且提供实施使得管理各种传统的和新兴的技术,包括云、虚拟化、网络及基础设施。其组织成员包括Intel、AMD、Cisco、Dell、Microsoft、HP、Lenovo等。
  • SMBIOS最初的设计是采用英特尔®处理器架构系统,然而现在SMBIOS支持IA32(X86)、x64(x86-64、Intel64、AMD64EM64T)、Intel® Itanium® architecture、32-bit ARM(Aarch32)及64-bit ARM(Aarch64)等。

在这里插入图片描述

BIOS的访问

目前主流的访问方式都是基于表结构的访问方式。基于表结构访问SMBIOS的过程是先找到 Entry Point Structure (EPS)表,然后通过Entry Point Structure (EPS)表的数据找到SMBIOS结构表。

EPS分为两种:Original SMBIOS 2.1(32-bit) entry point / SMBIOS 3.0(64-bit) entry point

为了兼容已经存在的SMBIOS解析器,目前pc都会提供32-bit entry point,SMBIOS 2.1(32-bit) Entry Point查询方式:(软件为RW-Everything)

  • Non-UEFI系统,在物理内存地址空间000F0000h-000FFFFFh,搜索关键字“SM”,其后16个byte是关键字“DMI”,得到EPS表。
  • UEFI系统,在EFI Configuration Table中搜索EPS table。
    #define SMBIOS_TABLE_GUID { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
    在这里插入图片描述
    EPS offset 0x18是Structure Table Address, 这个地址开始存放structure table。
    在这里插入图片描述

Entry Point Structure:
SMBIOS结构表的起始地址、总长度、个数都可以从EPS中获取到。每个表都有一个相同的4个byte的header格式,如下。
每个结构都分为格式区域和字符串区域,格式区域就是一些本结构的信息,字符串区域是紧随在格式区域后的一个区域。结构01h处标识的结构长度仅是格式区域的长度,字符串区域的长度是不固定的。每个字符串以00h结束,整个字符区域也以00h结束。
SMBIOS包含多个表结构,每个表的意义不同。从SMBIOS version 2.3开始要求包含一些基本的表结构,如Type0 BIOS Information、Type1 System Information、Type3 System Enclosure、Type4 Processor Information等。具体的structures和data,参见SMBIOS spec。

SMBIOS 3.0 (64-bit) Entry Point Structure

位置名称长度描述
00H关键字5Byte“_SM3_指定为五个ASCII字符(5F 53 4D 33 5F)。”
05H校验和1Byte用于校验数据,对于入口点长度字节,EPS中的值从偏移量00h开始求和。
06H表结构长度1Byte入口点结构的长度,从锚定字符串字段开始,以字节为单位,目前为18h
07HMajor 版本号1Byte用于判断SMBIOS版本
08HMinor 版本号1Byte用于判断SMBIOS 版本
09H表结构大小2Byte用于即插即用接口方法获得数据表结构长度
0AH入口点修改1Byte在该结构中实现的EPS修订,并确定了0Bh及以上偏移量的格式如下:01h入口点基于SMBIOS 3.0定义;02h-FFh根据本规范保留分配 每修订01h定义偏移0Ch-17h
0B预留区域1Byte根据该规范保留为赋值,设置为0
0CH结构表最大尺寸DWORDSMBIOS结构表的最大大小,由结构表地址指向,以字节为单位。实际大小保证小于或等于最大大小。
10H结构表地址QWORD只读SMBIOS结构表的64位物理起始地址,可以从任何64位地址开始。此区域包含全部打包在一起的SMBIOS结构。

Required structures and data

Type类型名称含义
Type 0BIOS 信息结构表中只有一个结构。BIOS Version和BIOS Release Date字符串是非空的;日期字段使用4位数字的年份(例如,1999)。所有其他字段反映完整的BIOS支持信息。
Type 1系统信息制造商和产品名称字符串是非空的。UUID字段标识系统的非零UUID值。“唤醒类型”字段标识唤醒源,不能为“未知”。结构表中只有一个结构。
Type 2基板或模块单元信息制造商、产品名、版本、序列号、资产标签、特征标志、基板在底架上的位置、底架句柄、基板类型、包含的对象句柄个数、包含的个各对象句柄。
Type 3系统外围或底架制造商、类型、版本、序列号、资产标签号、启动状态、供电电源状态、热量状态、安全状态、 OEM 定义信息、高度、电源线个数、包含的单元个数、包含的单元记录长度、包含的各个单元、 SKU 号。
Type 4处理器信息插座指示、处理器类型、处理器家族、制造商、 ID 、版本、电压伏特数、外部时钟频率 (MHz) 、最大速率 (MHz) 、当前速率、状态、处理器升级、 L1 级缓存信息结构的句柄、 L2 级缓存信息结构的句柄、 L3 级缓存信息结构的句柄、序列号、资产标签、部件号码、内核个数、激活的内核个数、线程个数、处理器特征、处理器家族 2 。
Type 7高速缓存信息插座指示、缓存配置、最大缓存容量、已安装的容量、支持的 SRAM 类型、当前 SRAM 类型、缓存速率、纠错类型、系统缓存类型、关联性。
Type 8端口连接器信息例如并口、串口、键盘、鼠标器端口等都属于端口连接器。包含的信息有内部引用指示符、内部连接器类型、外部引用指示符、外部引用类型、端口类型。
Type 9系统插槽插槽指示符、插槽类型、插槽数据总线宽度、当前是否在使用、插槽长度、插槽 ID 、插槽特征 1 、插槽牲 2 、段组编号、总线编号、设备 / 函数编号。
Type 11OEM 字符串由 OEM 指定的描述字符串。
Type 12系统配置选项用来配置基板跳线和开关的信息字符串。
Type 13BIOS 语言信息可安装的语言、标志位字节、保留的 15 字节、当前语言。这里的语言是指英语、法语、汉语等国家语言,而不是计算机编程语言。
Type 14组相联组名、本项的类型、本结构的句柄。级相联用于指明某些部件的布局或层次,例如指明两个 CPU 共享一个外部缓存系统。
Type 15系统事件日志事件日志存放在非易失性的存储单元中,占据固定长度的区域, 以 一个固定长度(和特定于厂商)的头部开始,后跟一个或多个可变长度的日志记录。应用程序可以通过周期性地读取系统事件日志结构(通过它的句柄)并在日志改 变标记中搜索日志的更新,以实现事件日志改变通知。
Type 16物理存储器阵列位置(系统板卡或附加板卡上)、存储功能、内存纠错、最大容量、存储错误信息句柄、存储设备数目、已扩展的最大容量。
Type 17存储设备用于描述物理存储器阵列中的单个存储设备。在物理存储器阵列中的句柄、存储错误信息句柄、存储总宽度、数据宽度、存储容量、形体尺寸、设备集、设备定位 器、记忆槽定位器、存储器类型、类型额外细节、速率、制造商、序列号、资产标签、部件号码、属性标志、已扩展的容量、已配置的存储时钟速率。
Type 1832-bit 错误信息错误类型、错误粒度、错误操作、特定于制造商的错误表现、存储阵列错误地址、设备错误地址、错误解析。
Type 19存储阵列映射地址起始地址、结束地址、存储阵列句柄、分区宽度、已扩展的起始地址、已扩展的结束地址。
Type 20存储设备映射地址起始地址、结束地址、存储设备句柄、存储阵列映射地址句柄、分区行位置、交叉位置、交叉的数据深度、已扩展的起始地址、已扩展的结束地址。
Type 21内置指针设备指针设备类型、接口类型、按钮个数。
Type 22智能电池位置、制造商、制造日期、序列号、设备名、设备化学属性、设计容量、设计电压伏特数、 SBDS 版本号、电池数据的最大错误百分比、 SBDS 序列号、 SBDS 制造日期、 SBDS 设备化学属性、设计容量倍增因子、特定于 OEM 的信息。
Type 32系统引导信息保留域 (00h) 、引导状态描述 (10 字节 ) 。引导状态描述主要有“没有检测到错误”、“没有可引导的媒介”、“操作系统载入失败”、“ BIOS 硬件检测失败”、“操作系统硬件检测失败”、“用户请求引导(通过一个按键)”、“违反系统安全”、“预先请求映像(通过 PXE 引导)”、“系统监控记时器激活,导致系统重启”,特定于厂商引导状态描述等。
Type 38IPMI 设备信息BMC 接口类型、 IPMI 规范修改版本、 I2C 从地址、 NV 存储设备地址、基地址、基地址修饰符 / 中断信息、中断号。
Type 126不活动指示用来表明某个 SMBIOS 结构当前不活动,因此不应用被上层的软件使用。它没有字符串区域,只有结构头部(即三个头部域类型、长度、句柄)。
Type 127表格结束指示表示整个 SMBIOS 结构表的结束。它也只有结构头部,没有字符串区域。

BIOS Information (Type 0) structure

位置名称长度描述
00HTYPE号1Byte结构的TYPE号,此处是0
01H长度1ByteTYPE 0格式区域长度,一般为14H,也有13H
02H句柄2Byte本结构的句柄,一般为0000H
04HBIOS厂商信息1Byte此处是BIOS卖方信息,可能是OEM厂商名,一般为01H,代表紧随格式区域后的字符串区域的第二个字符串
05HBIOS版本1ByteBIOS版本号,一般为02H,代表字符串区域的第二个字符
06HBIOS开始地址段2Byte用于计算机常驻BIOS镜像大小计算,方法为 (10000H-BIOS开始地址段) * 16
08HBIOS发布日期1Byte一般为03H,表示字符区第三个字符串表示字符区第三个字符串
09HBIOS rom size1Byte计算方法为(n +1 )*64K ,n 为此处读出数值为(n +1 )×64K ,n 为此处读出数值
0AHBIOS 特征8ByteBios 的功能支持特征,如PCI,PCMCIA,FLASH 等
12HBIOS 特征扩展不定为将来支持的功能预留的可选空间。当前的扩展字节数由偏移量1 - 12h中的长度表示。
14HBIOS 版本主号1Byte标识系统BIOS的主要版本;每次发布给定系统的System BIOS更新时,此字段或System BIOS Minor Release字段或两者都会更新。
15HBIOS 版本从号1Byte标识系统BIOS的小版本;例如,版本10.22的值是16h,版本2.1的值是01h。
16H内置控制器固件的版主号1Byte确定嵌入式控制器固件的主要版本;例如,对于修订10.22,该值为0Ah,对于修订2.1,该值为02h。
17H内置控制器固件的版从号1Byte如果系统没有可现场升级的嵌入式控制器固件,则取值为0FFh。

UEFI code中提供一个SmbiosDxe driver,为SMBIOS table提供接口函数,包括add、update、remove等function。Locate protocol后可以对SMBIOS table进行操作。

/**

  Driver to produce Smbios protocol and pre-allocate 1 page for the final SMBIOS table.

  @param ImageHandle     Module's image handle
  @param SystemTable     Pointer of EFI_SYSTEM_TABLE

  @retval EFI_SUCCESS    Smbios protocol installed
  @retval Other          No protocol installed, unload driver.

**/
EFI_STATUS
EFIAPI
SmbiosDriverEntryPoint (
  IN EFI_HANDLE           ImageHandle,
  IN EFI_SYSTEM_TABLE     *SystemTable
  )
{
  EFI_STATUS            Status;

  mPrivateData.Signature                = SMBIOS_INSTANCE_SIGNATURE;
  mPrivateData.Smbios.Add               = SmbiosAdd;
  mPrivateData.Smbios.UpdateString      = SmbiosUpdateString;
  mPrivateData.Smbios.Remove            = SmbiosRemove;
  mPrivateData.Smbios.GetNext           = SmbiosGetNext;
  mPrivateData.Smbios.MajorVersion      = (UINT8) (PcdGet16 (PcdSmbiosVersion) >> 8);
  mPrivateData.Smbios.MinorVersion      = (UINT8) (PcdGet16 (PcdSmbiosVersion) & 0x00ff);

  InitializeListHead (&mPrivateData.DataListHead);
  InitializeListHead (&mPrivateData.AllocatedHandleListHead);
  EfiInitializeLock (&mPrivateData.DataLock, TPL_NOTIFY);

  //
  // Make a new handle and install the protocol
  //
  mPrivateData.Handle = NULL;
  Status = gBS->InstallProtocolInterface (
                  &mPrivateData.Handle,
                  &gEfiSmbiosProtocolGuid,
                  EFI_NATIVE_INTERFACE,
                  &mPrivateData.Smbios
                  );

  return Status;
}

  Status = gBS->LocateProtocol (&gEfiSmbiosProtocolGuid, NULL, (VOID **) &mSmbios);
  ASSERT_EFI_ERROR (Status);
  DEBUG ((DEBUG_INFO, "The Smbios Table Version: %x.%x\n", mSmbios->MajorVersion, mSmbios->MinorVersion));

  if (mSmbios->MajorVersion < 2 || (mSmbios->MajorVersion == 2 && mSmbios->MinorVersion < 7)){
    mMaxLen = SMBIOS_STRING_MAX_LENGTH;
  } else if (mSmbios->MajorVersion < 3) {
    //
    // Reference SMBIOS 2.7, chapter 6.1.3, it will have no limit on the length of each individual text string.
    // However, the length of the entire structure table (including all strings) must be reported
    // in the Structure Table Length field of the SMBIOS Structure Table Entry Point,
    // which is a WORD field limited to 65,535 bytes.
    //
    mMaxLen = SMBIOS_TABLE_MAX_LENGTH;
  } else {
    //
    // SMBIOS 3.0 defines the Structure table maximum size as DWORD field limited to 0xFFFFFFFF bytes.
    // Locate the end of string as long as possible.
    //
    mMaxLen = SMBIOS_3_0_TABLE_MAX_LENGTH;
  }

UEFI spec在其配置表中提供了SMBIOS EPS table。通过在EFI Configuration Table中搜索SMBIOS_TABLE_GUID可以方便的得到EPS table,进而查找SMBIOS表。

  for (Index = 0; Index < gST->NumberOfTableEntries; Index++) {
    if (CompareGuid (TableGuid, &(gST->ConfigurationTable[Index].VendorGuid))) {
      *Table = gST->ConfigurationTable[Index].VendorTable;
      return EFI_SUCCESS;
    }
  }
System Management BIOS (SMBIOS) Reference 6 Specification 7 Supersedes: 3.1.1 8 Document Class: Normative 9 Document Status: Published 10 Document Language: en-US 11System Management BIOS (SMBIOS) Reference Specification DSP0134 2 Published Version 3.2.0 12 Copyright Notice 13 Copyright © 2000, 2002, 2004–2016 Distributed Management Task Force, Inc. (DMTF). All rights 14 reserved. 15 DMTF is a not-for-profit association of industry members dedicated to promoting enterprise and systems 16 management and interoperability. Members and non-members may reproduce DMTF specifications and 17 documents, provided that correct attribution is given. As DMTF specifications may be revised from time to 18 time, the particular version and release date should always be noted. 19 Implementation of certain elements of this standard or proposed standard may be subject to third party 20 patent rights, including provisional patent rights (herein "patent rights"). DMTF makes no representations 21 to users of the standard as to the existence of such rights, and is not responsible to recognize, disclose, 22 or identify any or all such third party patent right, owners or claimants, nor for any incomplete or 23 inaccurate identification or disclosure of such rights, owners or claimants. DMTF shall have no liability to 24 any party, in any manner or circumstance, under any legal theory whatsoever, for failure to recognize, 25 disclose, or identify any such third party patent rights, or for such party’s reliance on the standard or 26 incorporation thereof in its product, protocols or testing procedures. DMTF shall have no liability to any 27 party implementing such standard, whether such implementation is foreseeable or not, nor to any patent 28 owner or claimant, and shall have no liability or responsibility for costs or losses incurred if a standard is 29 withdrawn or modified after publication, and shall be indemnified and held harmless by any party 30 implementing the standard from any and all claims of infringement by a patent owner for such 31 implementations. 32 For information about patents held by third-parties which have notified the DMTF that, in their opinion, 33 such patent may relate to or impact implementations of DMTF standards, visit 34 http://www.dmtf.org/about/policies/disclosures.php. 35 This document’s normative language is English. Translation into other languages is permitted.DSP0134 System Management BIOS (SMBIOS) Reference Specification Version 3.2.0 Published 3 36 CONTENTS 37 Foreword ....................................................................................................................................................... 9 38 Introduction.................................................................................................................................................. 10 39 Document conventions........................................................................................................................ 10 40 Typographical conventions ....................................................................................................... 10 41 Document version number conventions ................................................................................... 10 42 1 Scope .................................................................................................................................................. 13 43 1.1 Supported processor architectures........................................................................................... 13 44 2 Normative references .......................................................................................................................... 13 45 3 Terms and definitions .......................................................................................................................... 15 46 4 Symbols and abbreviated terms.......................................................................................................... 15 47 5 Accessing SMBIOS information .......................................................................................................... 21 48 5.1 General ..................................................................................................................................... 21 49 5.2 Table convention....................................................................................................................... 21 50 5.2.1 SMBIOS 2.1 (32-bit) Entry Point.................................................................................. 22 51 5.2.2 SMBIOS 3.0 (64-bit) Entry Point.................................................................................. 23 52 6 SMBIOS structures.............................................................................................................................. 24 53 6.1 Structure standards................................................................................................................... 24 54 6.1.1 Structure evolution and usage guidelines.................................................................... 25 55 6.1.2 Structure header format............................................................................................... 26 56 6.1.3 Text strings .................................................................................................................. 26 57 6.2 Required structures and data ................................................................................................... 27 58 6.3 SMBIOS fields and CIM MOF properties.................................................................................. 28 59 7 Structure definitions............................................................................................................................. 29 60 7.1 BIOS Information (Type 0)........................................................................................................ 29 61 7.1.1 BIOS Characteristics.................................................................................................... 31 62 7.1.2 BIOS Characteristics Extension Bytes......................................................................... 32 63 7.2 System Information (Type 1) .................................................................................................... 33 64 7.2.1 System — UUID........................................................................................................... 34 65 7.2.2 System — Wake-up Type............................................................................................ 35 66 7.3 Baseboard (or Module) Information (Type 2) ........................................................................... 35 67 7.3.1 Baseboard — feature flags .......................................................................................... 36 68 7.3.2 Baseboard — Board Type ........................................................................................... 37 69 7.4 System Enclosure or Chassis (Type 3) .................................................................................... 37 70 7.4.1 System Enclosure or Chassis Types........................................................................... 39 71 7.4.2 System Enclosure or Chassis States........................................................................... 40 72 7.4.3 System Enclosure or Chassis Security Status ............................................................ 41 73 7.4.4 System Enclosure or Chassis — Contained Elements................................................ 41 74 7.5 Processor Information (Type 4) ................................................................................................ 42 75 7.5.1 Processor Information — Processor Type................................................................... 45 76 7.5.2 Processor Information — Processor Family ................................................................ 46 77 7.5.3 Processor ID field format ............................................................................................. 52 78 7.5.4 Processor Information — Voltage................................................................................ 52 79 7.5.5 Processor Information — Processor Upgrade............................................................. 53 80 7.5.6 Processor Information — Core Count.......................................................................... 55 81 7.5.7 Processor Information — Core Enabled...................................................................... 55 82 7.5.8 Processor Information — Thread Count...................................................................... 56 83 7.5.9 Processor Characteristics............................................................................................ 56 84 7.6 Memory Controller Information (Type 5, Obsolete) .................................................................. 57 85 7.6.1 Memory Controller Error Detecting Method................................................................. 58 86 7.6.2 Memory Controller Error Correcting Capability............................................................ 58 87 7.6.3 Memory Controller Information — Interleave Support................................................. 58System Management BIOS (SMBIOS) Reference Specification DSP0134 4 Published Version 3.2.0 88 7.6.4 Memory Controller Information — Memory Speeds .................................................... 59 89 7.7 Memory Module Information (Type 6, Obsolete) ...................................................................... 59 90 7.7.1 Memory Module Information — Memory Types .......................................................... 60 91 7.7.2 Memory Module Information — Memory Size ............................................................. 60 92 7.7.3 Memory subsystem example ....................................................................................... 61 93 7.8 Cache Information (Type 7) ...................................................................................................... 63 94 7.8.1 Cache Information — Maximum Cache Size and Installed Size ................................. 65 95 7.8.2 Cache Information — SRAM Type .............................................................................. 65 96 7.8.3 Cache Information — Error Correction Type ............................................................... 66 97 7.8.4 Cache Information — System Cache Type ................................................................. 66 98 7.8.5 Cache Information — Associativity.............................................................................. 66 99 7.9 Port Connector Information (Type 8) ........................................................................................ 67 100 7.9.1 Port Information example............................................................................................. 68 101 7.9.2 Port Information — Connector Types .......................................................................... 68 102 7.9.3 Port Types.................................................................................................................... 69 103 7.10 System Slots (Type 9)............................................................................................................... 70 104 7.10.1 System Slots — Slot Type ........................................................................................... 71 105 7.10.2 System Slots — Slot Data Bus Width.......................................................................... 73 106 7.10.3 System Slots — Current Usage................................................................................... 74 107 7.10.4 System Slots — Slot Length ........................................................................................ 74 108 7.10.5 System Slots — Slot ID ............................................................................................... 74 109 7.10.6 Slot Characteristics 1................................................................................................... 75 110 7.10.7 Slot Characteristics 2................................................................................................... 75 111 7.10.8 Segment Group Number, Bus Number, Device/Func
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值