更新smbios的方法和终端设备的制造方法_2

文档序号:8361261阅读:来源:国知局
>[0042]或者,在热拔硬件设备后,获取与SMB1S表对应的减少的硬件设备的信息。
[0043]可选地,作为另一实施例,在110之前,还包括:
[0044]将SMB1S表存储在内存中,其中,SMB1S表的地址空间为SMB1S结构表大小与缓冲区(Buffer)值之和。
[0045]应理解,Buffer值为系统SMB1S表(Table)值的最大值与该SMB1S表的差值。
[0046]具体地,图2是根据本发明另一实施例的更新SMB1S的方法的示意性流程图。如图2所示的方法包括:
[0047]230,将SMB1S表存储在内存中,其中,SMB1S表的地址空间为SMB1S结构表大小与缓冲区值之和。
[0048]210,在终端设备中热插或热拔硬件设备后,获取与SMB1S表对应的硬件设备的变化信息。
[0049]220,根据硬件设备的变化信息,更新SMB1S表。
[0050]具体地,终端设备在启动时,会建立SMB1S表;然后将SMB1S表存储在内存中,在终端设备中热插或热拔硬件设备后,获取与SMB1S表对应的硬件设备的变化信息;根据硬件设备的变化信息,更新SMB1S表。
[0051]因此,本发明实施例通过在终端设备中热插或热拔硬件设备后,获取与SMB1表对应的硬件设备的变化信息;根据硬件设备的变化信息,更新SMB1S表。本发明实施例方法无需重启,能够动态更新SMB10S,提升用户体验。
[0052]应理解,SMB1S结构表(SMB1S Type)也可以称为数据表结构,SMB1S表包括多个SMB1S结构表。例如,SMB1S表可以包括以下数据表结构:B10S信息(Type 0)、系统信息(Type I)、系统外围或底架(Type 3)、处理器信息(Type 4)、高速缓存信息(Type 7)、系统插槽(Type 9)、物理存储阵列(Type 16)、存储设备(Type 17)、存储阵列映射地址(Type19)和系统引导信息(Type 32)等。
[0053]应理解,210-220与110-120对应,为避免重复,不再赘述。
[0054]例如,系统正常开机时,即当用户按了电源按钮(power button)后,系统上电,B1S开始内存初始化及各种初始化,在进OS前生成SMB1S Table,最后进入OS。在OS下即在终端设备启动后,当有内存板热插时,会触发SMI中断,B1S对内存(热插的内存)进行初始化,按照格式搜集内存变化信息;之后,ACPI热添加,通知OS有新增内存可以使用;B1S根据初始化搜集的变化内存条信息,更新SMB1S Table类型(Type) 17。具体地,存储设备Type 17用于描述物理存储器阵列中的单个存储设备。在物理存储器阵列中的句柄、存储错误信息句柄、存储总宽度、数据宽度、存储容量、形体尺寸、设备集、设备定位器、记忆槽定位器、存储器类型、类型额外细节、速率、制造商、序列号、资产标签、部件号码、属性标志、已扩展的容量和已配置的存储时钟速率。其中,在本发明实施例中,B1S在对内存条进行初始化的时候,按照下面定义的结构体搜集信息:
[0055]typedef struct {
[0056]UINT8 Presence ;
[0057]UINT8 Attributes ;
[0058]UINT16 Totalffidth ;
[0059]UINT16 Dataffidth ;
[0060]UINT16 Size ;
[0061]UINT16 Speed ;
[0062]UINT16 ClockSpeed ;
[0063]UINT32 ExtendedSize ;
[0064]UINT8 ^DeviceLoc ;
[0065]UINT8 *String3 ;
[0066]UINT8 *String4 ;
[0067]UINT8 *String5 ;
[0068]UINT8 *String6 ;
[0069]}TYPE17_INF0_CHG。
[0070]之后,B1S根据初始化搜集的变化内存条信息,更新SMB1S Table Typel7?具体地,可以更新SMB1S table typel7中的属性标志(Attributes)、存储总宽度(Totalffidth)、数据宽度(Dataffidth)、形体尺寸(Size)、速率(Speed)、时钟速率(ClockSpeed)、已扩展的容量(ExtendedSize)、字符串 3 (String3)、字符串 4(String4)、字符串 5(String5)和字符串 6(String6)。
[0071]进一步地,本发明实施例将获取的SMB1S表存储在内存中,并设置SMB1S表的存储地址空间大于SMB1S表的大小,例如可以为SMB1S结构表大小与Buffer值之和,即为系统SMB1S Table (SMB1S表)值的最大值。本发明实施例通过设置较大的SMB1S的存储地址,在有硬件设备热插时,更新后的SMB1S表(大于更新前的SMB1S表)能够存储在设置的存储地址空间中,可以避免内存溢出。
[0072]可选地,作为另一实施例,在120中,根据硬件设备的变化信息,更新SMB1S表(table)中与硬件设备对应的数据表结构。
[0073]进一步地,作为另一实施例,在120中,
[0074]解锁存放SMB1S表的内存地址空间;根据设备变化信息,匹配与设备变化信息对应的数据表结构;根据数据表结构的变化情况,调整SMB1S table中其他数据表结构的地址;根据匹配结构和设备变化信息,更新SMB1S table中与硬件设备对应的数据表结构;更新 SMB1S 的入口点结构 Entry point structure,EPS)的结构表长度(Structure TableLength)和校验和(checkSUM);锁定存放SMB1S表的内存地址空间。
[0075]应理解,在热插设备时,将SMB1S table中其他数据表结构的地址调整(搬移)到高地址,在热拔设备时,将SMB1S table中其他数据表结构的地址调整(搬移)到低地iito
[0076]可选地,作为另一实施例,硬件设备为内存板,在120中,更新SMB1S table中与硬件设备对应的类型(Type) 17。
[0077]进一步地,作为另一实施例,在120中,更新Typel7中的属性标志、存储总宽度、数据宽度、形体尺寸、速率、时钟速率、已扩展的容量、字符串3、字符串4、字符串5和字符串6。
[0078]例如,在热插内存条后具体地更新SMB1S的过程为,首先解锁内存地址OxEOOOO?0xR)000,其中可以通过设置PAM0123和PAM456寄存器进行解锁;然后,B1S根据热插内存初始化搜集的TYPE17_INF0_CHG的信息中的DeviceLoc做匹配找到当前对应的Typel7 ;再后,根据需填充最新信息的Typel7大小与旧Typel7大小差异,在内存中调整其他SMB1S type的位置,由于本发明实施例中为热插内存条,所以往高地址搬移其他SMB1Stype的位置;再后,根据匹配关系,按照TYPE17_INF0_CHG更新Typel7 ;更新SMB1S入口点结构(Entry point structure,EPS)的结构表长度(Structure Table Length);更新SMB1S EPS的校验和(checksum);最后,锁定内存地址OxEOOOO?0xR)000,完成SMB1S的更新。
[0079]上文中,结合图1至图2描述了本发明实施例的更新SMB1S的方法,下面结合图3和图4的具体例子详细描述本发明实施例的更新SMB1S的方法。
[0080]图3是根据本发明另一实施例的更新SMB1S的方法的示意性流程图。图3所示的方法中为热插内存条时更新SMB1S的情形。具体地,如图3所示的方法,包括:
[0081]310,上电自检。
[0082]换句话说,系统正常开机时,系统上电,进行上电自检(Power On SelfTest, POST),或者为 B1S 启动(START UP)。
[0083]320,内存初始化。
[0084]具体地,B1S开始内存初始化及其他设备的初始化。
[0085]330,生成 SMB1S 表。
[0086]具体地,在初始化后,生成SMB1S表(SMB1S Table),并将SMB1S表存储在内存中,并设置SMB1S表的存储地址大于SMB1S Table的大小,例如可以为SMB1S Table大小与Buffer值之和,或者为系统SMB1S Table值的最大值。本发明实施例通过设置较大的SMB1S的存储地址,在有内存条热插时,更新后的SMB1S表(大于更新前的SMB1S)能够存储在设置的存储地址空间中,可以避免内存溢出。
[0087]340,进入操作系统。
[0088]具体地,在生成SMB1S Table之后,进如操作系统(Operat1n System,OS)。
[0089]350,内存板热插。
[0090]具体地,内存板热插,触发SMI中断,之后进行后续步骤。
[0091]360,上电,内存初始化。
[0092]具体地,热插的内存板上电,B1S对内存进行初始化,按照格式搜集内存变化信息。具体搜集SMB1S Typel7中的属性标志、存储总宽度、数据宽度、形体尺寸、速率、时钟速率、已扩展的容量、字符串3、字符串4、字符串5和字符串6。
[0093]370,高级配置和电源管理接口(Advanced Configurat1n and Power ManagementInterface,ACPI)热添加。
[0094]具体地,ACPI热添加,通知OS有新增内存可以使用。
[0095]380,SMB1S 更新。
[0096]具体地,B1S根据初始化搜集的变化内存条信息,更新SMB1S Table Typel7,具体更新SMB1S Type 17中的属性标志、存储总宽度、数据宽度、形体尺寸、速率、时钟速率、已扩展的容量、字符串3、字符串4、字符串5和字符串6。
[0097]进一步地,首先解锁内存地址OxEOOOO?0xR)000,其中可以通过设置PAM0123和PAM456寄存器进行解锁;然后,B1S根据热插内存初始化搜集的TYPE17_INF0_CHG的信息中的DeviceLoc做匹配找到当前对应的Typel7 ;再后,根据需填充最新信息的T
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1