一种基于串口管理IPMI的方法技术

技术编号:14995617 阅读:81 留言:0更新日期:2017-04-04 01:11
本发明专利技术公开了一种基于串口管理IPMI的方法,该方法通过设备文件/dev/ttyS对linux应用层串口进行读写,将16进制数据先加上字符0X0D作为边界限定再转换成ASCII文本,该ASCII文本在BMC上转换成相应的16进制数据;反之,BMC的回应数据也需要做类似的编码转换,再通过串口发送到linux应用层;其中,ASCII文本通讯协议采用IPMI协议规范。此外,linux应用层采用select函数对打开的串口文件句柄进行异步读写。本发明专利技术中串口采用ASCII文本进行数据通讯,可以采用字符回车来限制数据的边界,具备可读性强的优点。

【技术实现步骤摘要】

本专利技术涉及计算机领域,具体是指一种基于串口管理IPMI的方法
技术介绍
IPMI是智能型平台管理接口(IntelligentPlatformManagementinterface)。用户可以利用IPMI监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应以及机箱入侵等。IPMI的核心是一个专用芯片/基板管理控制器(BaseboardManagementController,BMC),它是独立于CPU、BIOS和OS,所以用户无论在开机还是关机的状态下,只要接通电源就可以实现对服务器的监控。IPMI是一种规范的标准,由美国英特尔、惠普(Hewlett-Packard)、NEC、美国戴尔电脑和SuperMicro等公司制定,其最新的版本是IPMI2.0。传统的ipmi在linux下的实现由以下几个内核模块组成:ipmi_msghandler,ipmi_devintf,ipmi_serial和ipmi_serial_codec。这几个内核模块分别负责不同的功能,它们互相协作完成ipmi的功能。同时linux应用层进程通过设备文件/dev/ipmi0对上述内核模块进行通讯。上述通讯方法比较复杂,涉及多个内核模块,内核模块之间的交互关系也非常多,不利于应用开发和故障定位,而且异常往往会导致内核崩溃。
技术实现思路
为克服现有技术存在的缺陷,本专利技术提供一种基于串口管理IPMI的方法,这种方法中linux应用层与BMC直接通过串口进行通讯,无需通过linux内核来驱动IPMI,克服现有技术中串口上线路规程复杂等缺陷。为实现上述目的,本专利技术采用以下技术方案:本专利技术一种基于串口管理IPMI的方法,linux应用层与BMC之间直接通过串口进行通讯;其中,linux应用层与BMC通讯包括以下步骤:1)设备文件/dev/ttyS读写linux应用层串口的16进制数据;2)16进制数据转换为ASCII文本,串口采用ASCII文本协议将ASCII文本发送到BMC;3)BMC将ASCII文本转换成16进制数据;反之,BMC与linux应用层通讯包括以下步骤:a)BMC将16进制数据转换成ASCII文本;b)串口采用ASCII文本协议将ASCII文本发送到linux应用层;c)linux应用层将ASCII文本转换成16进制数据;在所述步骤2)或步骤b)中,ASCII文本协议采用IPMI规范。在所述步骤1)中,设备文件/dev/ttyS采用open或read或write函数读写linux应用层串口的16进制数据。在所述步骤2)或步骤a)中,16进制数据先加上回车字符0X0D作为边界限定再转换为ASCII文本,BMC或linux应用层收到ASCII文本后以回车字符\\r作为此段数据结束的标记。在所述步骤1)中,linux应用层采用select函数对打开的串口文件句柄进行异步读写。本专利技术的有益效果在于:其一,本专利技术中linux应用层与BMC之间直接通过串口进行通讯,无需通过linux内核来驱动IPMI,克服现有技术中串口上线路规程复杂等缺陷;其二,本专利技术中linux应用层进程通过串口与BMC进行通讯,串口采用ASCII文本进行数据通讯,可以采用字符回车来限制数据的边界,实现对数据进行划分,具备可读性强的优点;其三,本专利技术中16进制数据采用IPMI规范所规定的CRC校验,这样确保数据传输的完整性。附图说明图1为本专利技术实施例提供的整个模块基于串口管理IPMI方法的示意图;图2为本专利技术实施例提供的16进制数据转换为ASCII文本的实现示例流程图;图3为本专利技术实施例提供的ASCII文本转换为16进制数据的实现示例流程图。具体实施方式以下结合附图和具体实施例对本专利技术作进一步的详细描述,但该实施例不应该理解为对本专利技术的限制。本专利技术提供的一种基于串口管理IPMI的方法,linux应用层与BMC之间直接通过串口进行通讯。其中,linux应用层与BMC通讯包括以下步骤:1)设备文件/dev/ttyS采用open或read或write函数读写linux应用层串口的16进制数据,其中linux应用层采用select函数对打开的串口文件句柄进行异步读写;2)16进制数据先加上回车字符0X0D作为边界限定再转换为ASCII文本,串口采用ASCII文本协议将ASCII文本发送到BMC;3)BMC收到ASCII文本后以回车字符\\r作为此段数据结束的标记,并将ASCII文本转换成16进制数据。反之,BMC与linux应用层通讯包括以下步骤:a)BMC先将16进制数据加上回车字符0X0D作为边界限定再转换为ASCII文本;b)串口采用ASCII文本协议将ASCII文本发送到linux应用层;c)linux应用层收到ASCII文本后以回车字符\\r作为此段数据结束的标记,并将ASCII文本转换成16进制数据;在上述步骤2)或步骤b)中,ASCII文本协议采用IPMI规范。16进制数据在传输过程中采用IPMI规范所规定的CRC校验(环冗余校验),这样确保数据传输的完整性。图1为本专利技术实施例提供的整个模块基于串口管理IPMI方法的示意图,详述如下:在步骤S101中,注册命令处理函数;在步骤S102中,设备文件/dev/ttyS打开linux应用层的串口并设置其属性;在步骤S103中,判断打开串口和设置属性是否成功,是则执行步骤S104,否则结束;在步骤S104中,select函数监听数据;在步骤S105中,判断是否有数据,是则执行步骤S106,超时则执行步骤S112;在步骤S106中,解码数据;在步骤S107中,判断是否进行正确性检查,是则执行步骤S108,否则返回步骤S104;在步骤S108中,判断数据是请求还是答应状态,是请求状态则执行步骤S109,是答应状态则执行步骤S111;在步骤S109中,调用和命令相关回调函数,编码并发送,记录状态放入消息队列;在步骤S110中,更新状态机,返回步骤S104;在步骤S111中,从消息队列中取出发送状态,调用回应回调函数,返回步骤S110;在步骤S112中,从消息队列中取出发送状态,调用超时回调函数,返回步骤S110。其中,消息队列包含超时回调函数和回应回调函数。图2为本专利技术实施例提供的16进制数据本文档来自技高网...

【技术保护点】
一种基于串口管理IPMI的方法,其特征在于,linux应用层与BMC之间直接通过串口进行通讯;其中,linux应用层与BMC通讯包括以下步骤:1)设备文件/dev/ttyS读写linux应用层串口的16进制数据;2)16进制数据转换为ASCII文本,串口采用ASCII文本协议将ASCII文本发送到BMC;3)BMC将ASCII文本转换成16进制数据;反之,BMC与linux应用层通讯包括以下步骤:a)BMC将16进制数据转换成ASCII文本;b)串口采用ASCII文本协议将ASCII文本发送到linux应用层;c)linux应用层将ASCII文本转换成16进制数据;在所述步骤2)或步骤b)中,ASCII文本协议采用IPMI规范。

【技术特征摘要】
1.一种基于串口管理IPMI的方法,其特征在于,linux应用层与BMC
之间直接通过串口进行通讯;
其中,linux应用层与BMC通讯包括以下步骤:
1)设备文件/dev/ttyS读写linux应用层串口的16进制数据;
2)16进制数据转换为ASCII文本,串口采用ASCII文本协议将ASCII
文本发送到BMC;
3)BMC将ASCII文本转换成16进制数据;
反之,BMC与linux应用层通讯包括以下步骤:
a)BMC将16进制数据转换成ASCII文本;
b)串口采用ASCII文本协议将ASCII文本发送到linux应用层;
c)linux应用层将ASCII文本转换成16进制数据;
在所述步骤2)或步骤b)中,ASCI...

【专利技术属性】
技术研发人员:王乾马红兵
申请(专利权)人:南京贝伦思网络科技股份有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1