基于系统管理总线接口对I2C存储器进行读写的方法与流程

文档序号:19879081发布日期:2020-02-08 06:46阅读:249来源:国知局
基于系统管理总线接口对I2C存储器进行读写的方法与流程

本发明涉及数据读写方法,特别是涉及一种基于系统管理总线接口对i2c存储器进行读写的方法。



背景技术:

现有技术中,基本输入输出系统(basicinputoutputsystem,bios)在系统启动过程中具有主控权,现有uefibios允许在上电自检(poweronselftest,post)过程和运行时(runtime)往bios的存储器nvram中读取或写入uefi变量来保存记录bios运行过程中的变量或是需要与操作系统(operatingsystem,os)进行交互的变量。

另外,由于bios在启动结束后会将由控制权交由os处理,故当系统发生错误如内存错误检查和纠正(errorcheckingandcorrecting,ecc)时,会触发系统进入系统管理模式(systemmanagementmode,smm)。此时,bios会短暂重新获得控制权,检视系统中相关的寄存器来定位发生错误的组件及位置,并经由智能平台管理接口(intelligentplatformmanagementinterface,ipmi)命令将相关信息发送给bmc来记录保存,以便于用户后续可通过ipmi命令查询相应的错误记录。

然而,上述做法存在着以下缺点:

(1)bios的存储器nvram空间是在biosrom芯片中预留的一部分空间,由于bios本身的代码部分已经相当大,导致存储器nvram的空间容量有限;

(2)当bios在进行升降级的时候,往往将整个biosrom全部擦除后进行烧写,之前保存的所有变量将会被全部清除;

(3)通过发送ipmi命令给bmc时,严重依赖bmc的运行状态,若此时bmc运行出错,则会出现无法记录发生的事件和错误情况,将直接导致服务器的可靠性下降。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于系统管理总线接口对i2c存储器进行读写的方法,在主从架构服务器中采用存储器来记录启动事件信息和系统错误信息,保证了数据的完整性和服务器的稳定性。

为实现上述目的及其他相关目的,本发明提供一种基于系统管理总线接口对i2c存储器进行读写的方法,包括:对所述i2c存储器进行写入操作时,将所述系统管理总线写命令的命令寄存器中写入所述i2c存储器的高八位地址,将系统管理总线写命令的第一数据寄存器中写入所述i2c存储器的低八位地址,将系统管理总线写命令的第二数据寄存器中写入待写入所述i2c存储器的字节数据;对所述i2c存储器进行读取操作时,发送系统管理总线接收字节命令至所述i2c存储器,并将从所述i2c存储器读取的数据写入在所述系统管理总线接收字节命令的数据寄存器中。

于本发明一实施例中,应用于主从架构服务器中,所述主从架构服务器包括主节点、多路选择模块和至少两个从节点;每个从节点均通过所述多路选择器与所述主节点相连;所述从节点包括从节点基本输入输出系统、从节点南桥芯片和从节点i2c存储器,所述主节点包括主节点基本输入输出系统、主节点南桥芯片、主节点i2c存储器和基板管理控制器;所述从节点南桥芯片通过系统管理总线接口与所述从节点i2c存储器相连;所述主节点南桥芯片通过系统管理总线接口与所述主节点i2c存储器相连。

于本发明一实施例中,所述从节点基本输入输出系统通过所述从节点南桥芯片将从节点信息记录在所述从节点i2c存储器中;所述主节点基本输入输出系统通过所述主节点南桥芯片将主节点信息通过记录在所述主节点i2c存储器中。

于本发明一实施例中,所述从节点信息包括启动事件信息和系统错误信息中的一种或多种组合。

于本发明一实施例中,所述主节点信息包括启动事件信息和系统错误信息中的一种或多种组合。

于本发明一实施例中,所述基板管理控制器通过所述多路选择器选择访问某一从节点的从节点i2c存储器。

于本发明一实施例中,所述主节点南桥芯片的通用输入输出端口与所述基板控制器的通用输入输出端口相连。

于本发明一实施例中,当通用输入输出端口信号为第一值时,所述主节点基本输入输出系统访问所述主节点i2c存储器;当所述通用输入输出端口信号为第二值时,所述基板管理控制器访问所述主节点i2c存储器。

于本发明一实施例中,所述基板管理控制器通过i2c总线与所述多路选择器相连。

于本发明一实施例中,所述多路选择器通过i2c总线与所述从节点i2c存储器相连。

如上所述,本发明的基于系统管理总线接口对i2c存储器进行读写的方法,具有以下有益效果:

(1)在主从架构服务器中采用存储器来记录启动事件信息和系统错误信息;

(2)扩充了bios中存储器nvram中变量的保存容量;

(3)在bios升级烧写过程中保证了数据的完整;

(4)无需依赖bmc的存在,即可自行记录运行过程中的事件和错误信息,提高了服务器的可靠性。

附图说明

图1显示为本发明的基于系统管理总线接口对i2c存储器进行读写的方法于一实施例中流程图;

图2显示为i2c存储器的比特写时序示意图;

图3显示为smbus接口的写命令的时序示意图;

图4显示为i2c存储器的当前地址读命令的时序示意图;

图5显示为smbus接口的接收比特命令的时序示意图;

图6显示为本发明的主从架构服务器于一实施例中的结构示意图;

图7显示为本发明的主节点于一实施例中的结构示意图;

图8显示为本发明的从节点于一实施例中的结构示意图。

元件标号说明

1主节点

11主节点bios

12主节点存储器

12主节点南桥芯片

14bmc

2多路选择器

3从节点

31从节点bios

32从节点存储器

33从节点南桥芯片

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

本发明的基于系统管理总线(systemmanagementbus,smbus)接口对i2c存储器进行读写的方法在主从架构服务器中采用存储器来记录启动事件信息和系统错误信息,其中通过smbus接口对i2c存储器进行数据读写,有效保证了数据的完整性和服务器的稳定性,实用性强。

根据smbusspec和i2cspec的协议规范,smbus在物理层上是完全兼容i2c信号的(二者均只有sda和sclk两根信号)。由于smbus在网络协议层对i2c的命令进行了升级和规范定义,通过smbus接口访问i2c存储器时必须按照存储器的读写时序进行访问,否则会导致存储器接收到的信号解析错误而无法进行读写。

如图1所示,于一实施例中,本发明的基于系统管理总线接口对i2c存储器进行读写的方法,包括:

步骤s1、对所述i2c存储器进行写入操作时,将所述系统管理总线写命令的命令寄存器中写入所述i2c存储器的高八位地址,将系统管理总线写命令的第一数据寄存器中写入所述i2c存储器的低八位地址,将系统管理总线写命令的第二数据寄存器中写入待写入所述i2c存储器的字节数据。

如图2和图3所示,将i2c写时序与smbus接口支持的协议写命令时序进行对比,可以发现使用smbus协议的写命令时序来模拟对i2c存储器eeprom的比特写命令时序。因此,根据上述操作时序和smbushostcontrollerprotocol的定义,对所述i2c存储器进行写入操作时,将所述smbus总线写命令的命令寄存器(commandcode)中写入所述i2c存储器的高八位地址,将所述smbus总线写命令的第一数据寄存器(databytelow)中写入所述i2c存储器的低八位地址,将所述smbus总线写命令的第二数据寄存器(databytehigh)中写入待写入所述i2c存储器的字节数据。故当所述i2c存储器接收到上述smbus总线写命令时,即可将所述第二数据寄存器的字节输入写入所述i2c存储器。

步骤s2、对所述i2c存储器进行读取操作时,发送系统管理总线接收字节命令至所述i2c存储器,并将从所述i2c存储器读取的数据写入在所述系统管理总线接收字节命令的数据寄存器中。

如图4和5所示,将i2c写时序与smbus接口支持的协议写命令时序进行对比,可以发现使用smbus协议的接收比特命令时序来模拟对i2c存储器eeprom的当前地址读命令命令时序。因此,根据上述操作时序和smbushostcontrollerprotocol的定义,对所述i2c存储器进行读取操作时,发送所述smbus总线接收字节命令至所述i2c存储器,所述i2c存储器将需要读取的数据写入所述所述smbus总线接收字节命令的数据寄存器(databytefromslave)中,同时无需填写命令寄存器(commandcode)。

于本发明一实施例中,上述基于系统管理总线接口对i2c存储器进行读写的方法应用于如图6所示的主从架构服务器中。所述主从架构服务器包括主节点1、多路选择器2和至少两个从节点3(即从节点1、从节点2…..从节点n-1和从节点n)。其中,所述主节点1通过所述多路选择器2与每个所述从节点3相连。

如图8所示,所述从节点3包括从节点bios31、从节点南桥芯片(pch)33和从节点i2c存储器32(如eeprom)。所述从节点bios31通过从节点南桥芯片33访问所述从节点存储器32。所述从节点南桥芯片33通过smbus接口与所述从节点存储器32相连。

如图7所示,所述主节点1包括主节点bios11、主节点南桥芯片13、主节点i2c存储器12(如eeprom)和bmc14。所述主节点南桥芯片13通过smbus接口与所述主节点i2c存储器12相连。

于本发明一实施例中,所述从节点bios31通过所述从节点南桥芯片33将从节点信息记录在所述从节点i2c存储器32中。其中,所述从节点信息包括从节点启动事件信息和从节点系统错误信息中的一种或多种组合。

于本发明一实施例中,所述主节点bios11通过所述主节点南桥芯片13将主节点信息通过记录在所述主节点i2c存储器12中。其中,所述主节点信息包括主节点启动事件信息和主节点系统错误信息中的一种或多种组合。所述bmc14通过所述多路选择器2选择访问某一从节点的从节点i2c存储器。

所述多路选择器2通过i2c总线所述bmc14相连,通过i2c总线与所述从节点存储器相连。

在访问i2c存储器时,bios和bmc必须是master身份才具有访问权限,而在i2c信号上是不存在master仲裁机制的。因此,在本发明中通过所述主节点南桥芯片与所述bmc之间连接的通用输入输出端口(generalpurposeinputoutput,gpio)对bios和bmc的访问进行切换控制。于本发明一实施例中,当gpio信号为第一值时,所述主节点bios访问所述主节点存储器;当所述gpio信号为第二值时,所述bmc访问所述主节点存储器。具体地,使用主节点南桥芯片上预留的gpio与bmc上的gpio相连;当gpio信号为低电平时,bios可以访问所述主节点存储器进行事件和错误记录,此时bmc处于等待轮循进程;待bios访问结束后,将gpio信号拉高,bmc检测到gpio信号为高电平时,具有访问权限,即可从所述主节点存储器中读取相应的事件和错误记录。

综上所述,本发明的基于系统管理总线接口对i2c存储器进行读写的方法在主从架构服务器中采用存储器来记录启动事件信息和系统错误信息;扩充了bios中存储器nvram中变量的保存容量;在bios升级烧写过程中保证了数据的完整;无需依赖bmc的存在,即可自行记录运行过程中的事件和错误信息,提高了服务器的可靠性。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1