基于BMC芯片实现控制器接口拓展的方法及系统技术方案

技术编号:38023435 阅读:12 留言:0更新日期:2023-06-30 10:50
本发明专利技术公开了一种基于BMC芯片实现控制器接口拓展的方法及系统,本发明专利技术提出的基于BMC芯片实现控制器接口拓展的方法,对Linux内核层而言,所有驱动符合Linux标准的设备、总线、驱动的匹配机制,可以在设备树中定义拓展接口的节点,以及拓展接口所挂外设驱动的节点,所有驱动均可以以内核模块的方式进行加载。对Linux应用层而言所有外部设备拥有单独的设备节点,所有的设备节点符合标准的Linux设备节点定义,无论是本地接口还是逻辑外拓接口以及虚拟设备驱动层的节点对应用程序而言都是一致的,故完全兼容第三方应用对外拓接口的使用。用。用。

【技术实现步骤摘要】
基于BMC芯片实现控制器接口拓展的方法及系统


[0001]本专利技术涉及BMC
,具体涉及一种基于BMC芯片实现控制器接口拓展的方法及系统。

技术介绍

[0002]服务器的BMC(Baseboard Management Controller,基板管理控制器系统),是部署于服务器的具有独立供电、独立IO接口的控制单元,用于实现对服务器的运行状态进行监控,可执行获取服务器详细运行信息、软硬件资源控制、网络配置、软件部署、用户管理、安全管理等功能和控制操作。
[0003]BMC需要丰富的外围接口满足对服务器主板的监测功能的需求,而目前通用BMC芯片难以满足不同服务器所需接口数量以及种类的要求;故现有的接口拓展方案中,各设备接口需要在Linux应用层构建接口对应的协议以区分拓展的总线与外部设备的类型,即对每一个外拓总线上的设备无法单独提供一个标准的Linux外设驱动节点,也就无法兼容第三方应用程序对外拓接口的使用。

技术实现思路

[0004]本专利技术的主要目的是提供一种基于BMC芯片实现控制器接口拓展的方法及系统,旨在现有的接口拓展方案中,对每一个外拓总线上的设备无法单独提供一个标准的Linux外设驱动节点,也就无法兼容第三方应用程序对外拓接口的使用的问题。
[0005]本专利技术提出的技术方案为:一种基于BMC芯片实现控制器接口拓展的方法,所述方法应用于接口扩展系统;所述系统包括服务器、BMC模块和FPGA模块;BMC模块部署于服务器;FPGA模块与BMC模块通过SPI总线通信连接;BMC模块包括Linux应用层、Linux内核层和SPI主控制器接口;Linux内核层设置有Linux内核和SPI主控制器驱动;FPGA模块设置有SPI从控制器接口、SPI从控制器驱动、逻辑外拓接口驱动和多个逻辑外拓接口;逻辑外拓接口用于通信连接外部设备;所述方法,包括:当需要发送数据给指定外部设备,且接口扩展系统满足第一条件时,BMC模块获取需要发送的数据,并标记为第一数据,其中,第一条件为:SPI主控制器驱动之上构建并注册有虚拟总线控制器驱动,以使虚拟总线控制器驱动与逻辑外拓接口一一对应,且虚拟总线控制器驱动之上还构建并注册有虚拟设备驱动层;虚拟总线控制器驱动获取与指定外部设备对应的通信协议,并标记为目标协议,并采用目标协议对第一数据进行解析并附加私有化协议段,然后提交给SPI主控制器驱动;SPI主控制器驱动将第一数据从SPI主控制器接口通过SPI总线发送至SPI从控制器接口;FPGA模块通过SPI从控制器接口获取第一数据,并对第一数据进行协议解析后发送至SPI从控制器驱动;
SPI从控制器驱动通过逻辑外拓接口驱动将第一数据经过对应的逻辑外拓接口发送至指定外部设备。
[0006]优选的,所述SPI从控制器驱动通过逻辑外拓接口驱动将第一数据经过对应的逻辑外拓接口发送至指定外部设备,之后还包括:当指定外部设备响应第一数据的请求时,FPGA模块基于逻辑外拓接口驱动从对应的逻辑外拓接口中获取响应数据,并标记为第二数据,然后对第二数据进行协议打包;SPI从控制器驱动将第二数据从SPI从控制器接口通过SPI总线发送至SPI主控制器接口;SPI主控制器驱动从SPI主控制器接口接收第二数据,并将第二数据提交给虚拟总线控制器驱动进行私有数据协议解析并封装成对应的虚拟设备驱动层所需数据格式,然后返回给对应的虚拟设备驱动层。
[0007]优选的,所述FPGA模块还设置有逻辑控制核心层;所述方法,还包括:FPGA模块将每一个逻辑外拓接口抽象为初始化、发送和接收数据的结构,以注册控制器核心层;当FPGA模块上电后,逻辑控制核心层对FPGA模块进行初始化;SPI主控制器驱动将第一数据从SPI主控制器接口通过SPI总线发送至SPI从控制器接口,之后还包括:逻辑控制核心层调用SPI从控制器驱动获取第一数据,然后基于目标协议,对第一数据进行解析,并根据目标协议创建数据处理线程;数据处理线程将第一数据分发到指定外部设备对应的逻辑外拓接口驱动;逻辑外拓接口驱动对第一数据进行私有化处理,并通过逻辑外拓接口发送至指定外部设备。
[0008]优选的,所述逻辑外拓接口驱动对第一数据进行私有化处理,并通过逻辑外拓接口发送至指定外部设备,之后还包括:当指定外部设备响应第一数据的请求时,FPGA模块基于逻辑外拓接口驱动从对应的逻辑外拓接口中获取响应数据,并标记为第三数据,然后对第三数据进行协议打包;逻辑控制核心层将打包后的第三数据提交给响应队列,并监听不同响应队列的第三数据以将第三数据通过SPI总线异步发送至BMC模块。
[0009]优选的,还包括:当需要发送数据给指定外部设备,且接口扩展系统不满足第一条件时,BMC模块获取需要发送的数据,并标记为第四数据;Linux应用层将第四数据经过协议打包后发送至到Linux内核层的SPI主控制器驱动;SPI主控制器驱动将第四数据从SPI主控制器接口通过SPI总线发送至SPI从控制器接口;FPGA模块通过SPI从控制器接口获取第四数据,并对第四数据进行协议解析后发送至SPI从控制器驱动;SPI从控制器驱动通过逻辑外拓接口驱动将第四数据经过对应的逻辑外拓接口发送至指定外部设备;
当指定外部设备响应第四数据的发送请求并发出响应数据时,FPGA模块基于逻辑外拓接口驱动从对应的逻辑外拓接口中获取响应数据,并标记为第五数据,然后对第五数据进行协议打包;SPI从控制器驱动将第五数据从SPI从控制器接口通过SPI总线发送至SPI主控制器接口;SPI主控制器驱动通过Linux内核将第五数据发送至Linux应用层;Linux应用层对第五数据进行协议解包处理。
[0010]优选的,所述BMC模块采用龙芯2K0500作为处理芯片;所述FPGA模块采用高云GW2R作为处理芯片;所述逻辑外拓接口包括SPI接口、GPIO接口、UART接口、PWM接口、TACH接口、IIC接口和ADC接口;所述外部设备包括温度传感器、电压传感器、风扇转速传感器、服务器的BIOS模块、服务器主板和BMC模块的看门狗模块;所述FPGA模块的软核端运行有基于FreeRtos的实时系统;所述FPGA模块的软核端的程序存储于FPGA模块的SPIFlash中。
[0011]优选的,虚拟总线控制器驱动用于定义不同总线传输方法函数集合;SPI主控制器驱动用于通过设备树匹配不同的SPI主控制器接口;逻辑控制核心层用于统一接收来自SPI从控制器接口的数据,并调用不同的逻辑端的控制器驱动以完成数据传输;逻辑外拓接口驱动用于向逻辑控制核心层注册驱动;所述虚拟设备驱动层设置有hwmon_ops接口和IIC驱动;所述方法,还包括:hwmon_ops接口通过调用IIC核心层的i2c_master_send接口,以找到虚拟总线控制器驱动的i2c_adapt结构体并调用其传输接口以进行数据读取和数据写入;IIC驱动注册IIC核心层;IIC驱动触发probe初始化驱动,以注册 hwmon驱动。
[0012]优选的,所述虚拟总线控制器驱动设置有i2c_adapter本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于BMC芯片实现控制器接口拓展的方法,其特征在于,所述方法应用于接口扩展系统;所述系统包括服务器、BMC模块和FPGA模块;BMC模块部署于服务器;FPGA模块与BMC模块通过SPI总线通信连接;BMC模块包括Linux应用层、Linux内核层和SPI主控制器接口;Linux内核层设置有Linux内核和SPI主控制器驱动;FPGA模块设置有SPI从控制器接口、SPI从控制器驱动、逻辑外拓接口驱动和多个逻辑外拓接口;逻辑外拓接口用于通信连接外部设备;所述方法,包括:当需要发送数据给指定外部设备,且接口扩展系统满足第一条件时,BMC模块获取需要发送的数据,并标记为第一数据,其中,第一条件为:SPI主控制器驱动之上构建并注册有虚拟总线控制器驱动,以使虚拟总线控制器驱动与逻辑外拓接口一一对应,且虚拟总线控制器驱动之上还构建并注册有虚拟设备驱动层;虚拟总线控制器驱动获取与指定外部设备对应的通信协议,并标记为目标协议,并采用目标协议对第一数据进行解析并附加私有化协议段,然后提交给SPI主控制器驱动;SPI主控制器驱动将第一数据从SPI主控制器接口通过SPI总线发送至SPI从控制器接口;FPGA模块通过SPI从控制器接口获取第一数据,并对第一数据进行协议解析后发送至SPI从控制器驱动;SPI从控制器驱动通过逻辑外拓接口驱动将第一数据经过对应的逻辑外拓接口发送至指定外部设备。2.根据权利要求1所述的一种基于BMC芯片实现控制器接口拓展的方法,其特征在于,所述SPI从控制器驱动通过逻辑外拓接口驱动将第一数据经过对应的逻辑外拓接口发送至指定外部设备,之后还包括:当指定外部设备响应第一数据的请求时,FPGA模块基于逻辑外拓接口驱动从对应的逻辑外拓接口中获取响应数据,并标记为第二数据,然后对第二数据进行协议打包;SPI从控制器驱动将第二数据从SPI从控制器接口通过SPI总线发送至SPI主控制器接口;SPI主控制器驱动从SPI主控制器接口接收第二数据,并将第二数据提交给虚拟总线控制器驱动进行私有数据协议解析并封装成对应的虚拟设备驱动层所需数据格式,然后返回给对应的虚拟设备驱动层。3.根据权利要求2所述的一种基于BMC芯片实现控制器接口拓展的方法,其特征在于,所述FPGA模块还设置有逻辑控制核心层;所述方法,还包括:FPGA模块将每一个逻辑外拓接口抽象为初始化、发送和接收数据的结构,以注册控制器核心层;当FPGA模块上电后,逻辑控制核心层对FPGA模块进行初始化;SPI主控制器驱动将第一数据从SPI主控制器接口通过SPI总线发送至SPI从控制器接口,之后还包括:逻辑控制核心层调用SPI从控制器驱动获取第一数据,然后基于目标协议,对第一数据进行解析,并根据目标协议创建数据处理线程;数据处理线程将第一数据分发到指定外部设备对应的逻辑外拓接口驱动;逻辑外拓接口驱动对第一数据进行私有化处理,并通过逻辑外拓接口发送至指定外部
设备。4.根据权利要求3所述的一种基于BMC芯片实现控制器接口拓展的方法,其特征在于,所述逻辑外拓接口驱动对第一数据进行私有化处理,并通过逻辑外拓接口发送至指定外部设备,之后还包括:当指定外部设备响应第一数据的请求时,FPGA模块基于逻辑外拓接口驱动从对应的逻辑外拓接口中获取响应数据,并标记为第三数据,然后对第三数据进行协议打包;逻辑控制核心层将打包后的第三数据提交给响应队列,并监听不同响应队列的第三数据以将第三数据通过SPI总线异步发送至BMC模块。5.根据权利要求1所述的一种基于BMC芯片实现控制器接口拓展的方法,其特征在于,还包括:当需要发送数据给指定外部设备,且接口扩展系统不满足第一条件时,BMC模块获取需要发送的数据,并标记为第四数据;Linux应用层将第四数据经过协议打包后发送至到Linux内核层的SPI主控制器驱动;SPI主控制器驱动将第四数据从SPI主控制器接口通过SPI总线发送至SPI从控制器接口;FPGA模块通过SPI从控制器接口获取第四数据,并对第四数据进行协议解析后发送至SPI从控制器驱动;SPI从控制器驱动通过逻辑外拓接口驱动将第四数据经过对应的逻辑外拓接口发送至指定外部设备;当指定外部设备响应第四数据的发送请求并发出响应数据时,FPGA模块基于逻辑外拓接口驱动从对应的逻辑外拓接口中获取响应数据,并标记为第五数据,然后对第五数据进行协议打包...

【专利技术属性】
技术研发人员:江旭
申请(专利权)人:湖南博匠信息科技有限公司
类型:发明
国别省市:

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

1