技术领域
本发明涉及计算机技术,具体的说是一种通过ipmi协议获取CPU寄存器信息的方法。
背景技术:
CPU寄存器是中央处理器内的组成部分,可以同时被内部电路和外部电路或软件访问,作为软硬件的接口,为广泛的通用编程用户所熟知。寄存器是有限存贮容量的高速存贮部件,拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。CPU寄存器可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。
在服务器调试或者维护过程中,工程师们往往需要收集相关的寄存器数值,根据数值进行判断问题根源,但是每次收集寄存器信息时,都需要进行大量的操作,并且需要浪费大量时间,去将数值与spec进行一一对应,浪费了大量的时间和人力成本,并且很容易出现人为错误。
本发明提出了一种基于IPMI协议获取CPU寄存器信息的方法。IPMI(Intelligent Platform Management Interface,智能平台管理接口)是一种开放标准的硬件管理接口规格,定义了嵌入式管理子系统进行通信的特定方法。IPMI 信息通过基板管理控制器 (BMC)进行交流,使用低级硬件智能管理而不使用操作系统进行管理,具有两个主要优点:1、允许进行带外服务器管理;2、操作系统不必负担传输系统状态数据的任务。
技术实现要素:
本发明针对目前技术发展的需求和不足之处,提供一种通过ipmi协议获取CPU寄存器信息的方法。
本发明所述一种通过ipmi协议获取CPU寄存器信息的方法,解决上述技术问题采用的技术方案如下:所述一种通过ipmi协议获取CPU寄存器信息的方法,基于批处理脚本,利用ipmi协议访问cpu寄存器,获取cpu寄存器数值后,将所有寄存器的数值进行格式化保存,再对获取的寄存器信息进行spec校验并输出结果信息。
优选的,利用批处理脚本对获取的寄存器信息进行spec对应,得到当前寄存器异常位置,并进行简单转换说明,输出格式化标准的校验结果。
优选的,所述通过IPMI协议获取寄存器数值,包括设定协议链接密钥,以及设定ipmi命令参数两部分。
本发明所述一种通过ipmi协议获取CPU寄存器信息的方法与现有技术相比具有的有益效果是:本发明通过ipmi协议获取寄存器信息,并进行格式化保存,并对寄存器进行分析,通过批处理脚本对寄存器数值进行spec对应,并给出格式化标准的校验结果;大大节省了人力以及时间成本,并且减少了人为操作可能带来的错误,操作简单,为工程师进行信息收集以及debug提供了极大的便利。
附图说明
附图1为所述通过ipmi协议获取CPU寄存器信息的方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,对本发明所述一种通过ipmi协议获取CPU寄存器信息的方法进一步详细说明。
实施例:
本实施例一种通过ipmi协议获取CPU寄存器信息的方法,基于批处理脚本,利用ipmi协议访问cpu寄存器,获取cpu寄存器数值后,将所有寄存器的数值进行格式化保存,再对获取的寄存器信息进行spec校验,并输出结果信息。
所述对获取的寄存器信息进行spec校验并输出结果信息,其内容包括:利用批处理脚本对获取的寄存器信息进行spec对应,得到当前寄存器异常位置,并进行简单转换说明,输出格式化标准的校验结果。
附图1为所述通过ipmi协议获取CPU寄存器信息的方法的流程图,如附图1所示,该方法的具体实现过程如下:首先运行批处理脚本,并通过IPMI协议以及相应命令获取寄存器数值;然后将寄存器数值进行格式化保存,并通过批处理脚本对寄存器数值进行spec对应,并转换异常结果;最后输出分析结果。
其中,所述通过IPMI协议获取寄存器数值,包括设定协议链接密钥,以及设定ipmi命令参数两部分;主要代码如下:
设定协议链接密钥
set BMC_IP=
set BMC_U=admin
set BMC_P=admin
设定ipmi命令参数
set /a NM_TARGET=0x2c
set /a NM_CHANNEL=0x06
set /a SOCKET_NUM=4
set /a NM_TARGET=%4
set /a NM_CHANNEL=%5
set /a SOCKET_NUM=%6
set TYPE=%7
:: Register definition
set REG_DEF_FILE=%8
@REM
@REM Process command line parameters
@REM
set IPMI_BMC_CMD=ipmitool -I lanplus -H %BMC_IP% -U %BMC_U% -P %BMC_P%
set IPMI_NM_CMD=%IPMI_BMC_CMD% -t %NM_TARGET% -b %NM_CHANNEL%
set PECI_RAW_CMD=%IPMI_NM_CMD% raw 0x2e 0x40 0x57 0x01 0x00
if "%TYPE%" == "csr" (
call :ProcessCSR %SOCKET_NUM% %REG_DEF_FILE%
goto :End
)
if "%TYPE%" == "msr" (
call :ProcessMSR %SOCKET_NUM% %REG_DEF_FILE%
goto :End
)
goto :End。
上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。