读取DMI信息

DMI表包含系统硬件信息,如BIOS版本、OEM供应商信息和CPU、RAM等。在启动时,DMI表会被映射到内存中。本文介绍了如何通过查找字符串“_SM_”来确定DMI表地址,然后将指针转换为struct dmi_eps格式,进一步读取所需信息。在memtest86+4.20中,展示了读取DMI的代码实现,包括校验和检查、结构体遍历等步骤。
摘要由CSDN通过智能技术生成

DMI table 记录了系统硬体信息,比如BIOS version ,OEM vender info ,CPU  RAM 等。

系统在boot时会将DMI table map到 MEMORY中。程序从0x0000F000:0 位置开始查找string “_SM_”,确定地址后把指针格式化成struct dmi_eps

的格式,再读出需要的信息。

下面是memtest86+4.20里边open DMI的部分:

struct dmi_eps {
 uint8_t  anchor[4];
 int8_t   checksum;
 uint8_t  length;
 uint8_t  majorversion;
 uint8_t  minorversion;
 uint16_t maxstructsize;
 uint8_t  revision;
 uint8_t  pad[5];
 uint8_t  intanchor[5];
 int8_t   intchecksum;
 uint16_t tablelength;
 uint32_t tableaddress;
 uint16_t numstructs;
 uint8_t  SMBIOSrev;
} __attribute__((packed));

 

int open_dmi(void){
 char *dmi, *dmi_search_start, *dmi_start;
 int found=0;
 struct dmi_eps *eps;
 char *table_start;
 int tstruct_count=0;
 dmi_search_start = (char *)DMI_SEARCH_START;  /

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值