一种串口波特率配置方法及相关设备、系统
技术领域
本发明涉及计算机领域,尤其涉及一种串口波特率配置方法及相关设备、系统。
背景技术
在计算机中,业务系统的数据传输过程普遍如下:业务系统的数据先通过串口发送给串口网络重定向(Serial Over LAN,SOL)控制模块,再由SOL控制模块通过串口将接收到的数据发送至基板管理控制器(BaseboardManagement Controller,BMC),最后由BMC将接收到的数据发送至网络侧。
图1为现有的业务系统数据传输过程的示意图。如图1所示,业务系统数据通过业务系统串口发送给SOL控制模块的串口模块,再由SOL控制模块的串口模块将接收到的业务系统数据发送至BMC的通用异步收发(Universal Asynchronous Receiver/Transmitter,UART)串口,最后由BMC将接收到的业务系统数据发送至网络侧。在图1所示的传输过程中,业务系统串口波特率变化时,业务系统将其串口波特率写入SOL控制模块的串口参数寄存器,而BMC通过其外部存储器接口(External Memory Interface,EMI)可以查询SOL控制模块的串口参数寄存器,从而获得业务系统的串口波特率,并配置BMC串口波特率与业务系统的串口波特率一致,避免了BMC串口波特率与业务系统的串口波特率不一致而导致的业务系统数据发送错误。
实践中发现,业务系统主动将其串口波特率写入SOL控制模块的串口参数寄存器后,并没有等待BMC对其串口波特率作出响应,而是继续的发送数据,加大了数据发送错误(如数据丢失、乱码等)的风险。另外,BMC通过其EMI查询SOL控制模块的串口参数寄存器时普遍采用定时轮询方式进行查询,浪费了BMC信令资源。
发明内容
本发明实施例提供一种串口波特率配置方法及相关设备、系统,用于降低业务系统数据发送错误的风险,减少BMC信令资源的浪费。
一种串口波特率配置方法,包括:
串口网络重定向SOL控制模块识别业务系统当前串口波特率,并比较所述业务系统当前串口波特率与预先存储的业务系统串口波特率是否相同,若不相同,则将所述预先存储的业务系统串口波特率更新为所述业务系统当前串口波特率;
所述SOL控制模块缓存所述业务系统串口发送的业务系统数据;
所述SOL控制模块产生中断信号并发送至基板管理控制器,以及接收所述基板管理控制器发送的响应消息;若所述响应消息携带的信息表示所述基板管理控制器支持在所述业务系统当前串口波特率下接收业务系统数据,则所述SOL控制模块将缓存的所述业务系统数据发送给所述基板管理控制器;所述响应消息是所述基板管理控制器接收到所述中断信号,并获取所述SOL控制模块中存储的所述业务系统当前串口波特率,以及配置所述基板管理控制器串口波特率与所述业务系统当前串口波特率一致之后发送的。
一种串口波特率配置方法,包括:
基板管理控制器接收串口网络重定向SOL控制模块发送的中断信号,所述中断信号是所述SOL控制模块识别出业务系统当前串口波特率与预先存储的业务系统串口波特率不相同,并将所述预先存储的业务系统串口波特率更新为所述业务系统当前串口波特率,以及缓存所述业务系统串口发送的业务系统数据之后发送的;
所述基板管理控制器获取所述SOL控制模块中存储的所述业务系统当前串口波特率,以及配置所述基板管理控制器串口波特率与所述业务系统当前串口波特率一致;
所述基板管理控制器发送响应消息至所述SOL控制模块,所述响应消息携带的信息表示所述基板管理控制器支持在所述业务系统当前串口波特率下接收业务系统数据。
一种SOL控制模块,包括:
频率识别单元,用于识别业务系统当前串口波特率,并比较所述业务系统当前串口波特率与预先存储的业务系统串口波特率是否相同,若不相同,则将所述预先存储的业务系统串口波特率更新为所述业务系统当前串口波特率;
数据缓存单元,用于缓存所述业务系统串口发送的业务系统数据;
中断发生单元,用于产生中断信号并发送至基板管理控制器;
传输控制单元,用于接收所述基板管理控制器发送的响应消息;若所述响应消息携带的信息表示所述基板管理控制器支持在所述业务系统当前串口波特率下接收业务系统数据,则将缓存的所述业务系统数据发送给所述基板管理控制器;所述响应消息是所述基板管理控制器接收到所述中断信号,并获取所述SOL控制模块中存储的所述业务系统当前串口波特率,以及配置所述基板管理控制器串口波特率与所述业务系统当前串口波特率一致之后发送的。
一种基板管理控制器,包括:
中断控制器,用于接收SOL控制模块发送的中断信号,所述中断信号是所述SOL控制模块识别出业务系统当前串口波特率与预先存储的业务系统串口波特率不相同,并将所述预先存储的业务系统串口波特率更新为所述业务系统当前串口波特率,以及缓存所述业务系统串口发送的业务系统数据之后发送的;
频率获取单元,用于获取所述SOL控制模块中存储的所述业务系统当前串口波特率;
频率配置单元,用于根据所述频率获取单元获取的所述业务系统当前串口波特率,配置所述基板管理控制器串口波特率与所述业务系统当前串口波特率一致;
消息反馈单元,用于发送响应消息至所述SOL控制模块,所述响应消息携带的信息表示所述基板管理控制器支持在所述业务系统当前串口波特率下接收业务系统数据。
一种串口波特率配置系统,包括:
SOL控制模块和基板管理控制器,所述SOL控制模块和所述基板管理控制器之间以可通信方式连接;
所述SOL控制模块,包括:
频率识别单元,用于识别业务系统当前串口波特率,并比较所述业务系统当前串口波特率与预先存储的业务系统串口波特率是否相同,若不相同,则将所述预先存储的业务系统串口波特率更新为所述业务系统当前串口波特率;
数据缓存单元,用于缓存所述业务系统串口发送的业务系统数据;
中断发生单元,用于产生中断信号并发送至所述基板管理控制器;
传输控制单元,用于接收所述基板管理控制器发送的响应消息;若所述响应消息携带的信息表示所述基板管理控制器支持在所述业务系统当前串口波特率下接收业务系统数据,则将缓存的所述业务系统数据发送给所述基板管理控制器;
所述基板管理控制器,包括:
中断控制器,用于接收所述SOL控制模块发送的中断信号;
频率获取单元,用于获取所述SOL控制模块中存储的所述业务系统当前串口波特率;
频率配置单元,用于根据所述频率获取单元获取的所述业务系统当前串口波特率,配置所述基板管理控制器串口波特率与所述业务系统当前串口波特率一致;
消息反馈单元,用于发送响应消息至所述SOL控制模块,所述响应消息携带的信息表示所述基板管理控制器支持在所述业务系统当前串口波特率下接收业务系统数据。
本发明实施例提供的上述方案中,可以避免基板管理控制器串口波特率与业务系统的当前串口波特率不一致而导致的业务系统数据发送(如丢失、乱码等)错误,大大降低业务系统数据发送错误的风险。另外,基板管理控制器在SOL控制模块发送的中断信号触发下才获取SOL控制模块中存储的业务系统当前串口波特率,并配置其串口波特率与业务系统当前串口波特率一致,避免了采用定时轮询方式获取业务系统串口波特率,减少了基板管理控制器的信令资源浪费。
附图说明
为了更清楚地说明本发明实施例和现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有的业务系统数据传输过程的示意图;
图2为本发明实施例提供的串口波特率配置方法的实施例一的流程图;
图3为本发明实施例提供的串口波特率配置方法的实施例二的流程图;
图4为本发明实施例提供的串口波特率配置方法的实施例三的流程图;
图5为本发明实施例提供的基于Sandy Bridge 4P系统的串口波特率配置方法的实施例四的流程图;
图6为本发明实施例提供的一种中断消息的电平示意图;
图7a为本发明实施例提供的一种BMC控制流程在内核层中执行的部分流程图;
图7b为本发明实施例提供的一种BMC控制流程在用户层中执行的部分流程图;
图7c为本发明实施例提供的一种BMC控制流程全部在内核层运行的流程图;
图8为本发明实施例提供的一种SOL控制模块的结构示意图;
图9~图10为本发明实施例提供的一种BMC的结构示意图;
图11为本发明实施例提供的一种串口波特率配置系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的一种串口波特率配置方法及相关设备、系统,可以降低业务系统数据发送错误的风险,减少BMC信令资源的浪费。以下分别进行详细说明。
实施例一:
请参阅图2,图2为本发明实施例提供的一种串口波特率配置方法的流程图。如图2所示,该方法可以包括以下步骤:
201、SOL控制模块识别业务系统当前串口波特率。
一个实施例中,SOL控制模块内可以设置一频率识别单元,该频率识别单元可以用于识别业务系统当前串口波特率。
其中,频率识别单元识别业务系统当前串口波特率的具体实现过程是一种成熟的现有技术,属于本领域普通技术人员所公知的常识,本发明实施例不作详细介绍。
202、SOL控制模块比较业务系统当前串口波特率与预先存储的业务系统串口波特率是否相同,若不相同,则执行步骤203;若相同,则重新执行步骤201。
一个实施例中,SOL控制模块内设置的频率识别单元在识别出业务系统当前串口波特率后,可以比较业务系统当前串口波特率与频率识别单元预先存储的业务系统串口波特率是否相同。
其中,频率识别单元在识别业务系统当前串口波特率,并比较业务系统当前串口波特率与频率识别单元预先存储的业务系统串口波特率是否相同的过程中,不影响SOL控制模块通过其串口模块接收业务系统串口发送的业务系统数据的操作,即无论业务系统串口波特率变化与否,SOL控制模块都正常通过串口模块接收业务系统串口发送的业务系统数据。
本发明实施例中,SOL控制模块的串口模块与业务系统串口之间首次建立串口连接时,业务系统串口波特率可以看作由0到业务系统当前串口波特率的变化。
203、SOL控制模块将预先存储的业务系统串口波特率更新为业务系统当前串口波特率,缓存业务系统串口发送的业务系统数据。
一个实施例中,SOL控制模块内可以设置一数据缓存单元,SOL控制模块在比较出业务系统当前串口波特率与预先存储的业务系统串口波特率不相同时,可以将预先存储的业务系统串口波特率更新为业务系统当前串口波特率,以及利用该数据缓存单元缓存业务系统串口发送的业务系统数据,也就是说SOL控制模块暂停将接收到的业务系统数据通过其串口模块与BMC的UART串口之间的总线发送至BMC,避免BMC串口波特率(即UART串口波特率)与业务系统当前串口波特率不一致而导致业务系统数据接收错误(如丢失、乱码等)。
204、SOL控制模块产生中断信号并发送至BMC。
一个实施例中,SOL控制模块内可以设置一中断发生单元,该中断发生单元用于产生中断信号,并通过该中断发生单元与BMC的中断控制器之间的总线将产生的中断信号发送至BMC。其中,该中断信号用于触发BMC获取SOL控制模块中存储的业务系统当前串口波特率,并配置BMC串口波特率与业务系统当前串口波特率一致。
205、SOL控制模块接收BMC发送的响应消息,并判断该响应消息携带的信息是否表示BMC支持在业务系统当前串口波特率下接收业务系统数据,若是,则执行步骤206;若否,则执行步骤207。
一个实施例中,SOL控制模块内可以设置一传输控制单元,该传输控制单元用于接收BMC发送的响应消息,并判断该响应消息携带的信息是否表示BMC支持在业务系统当前串口波特率下接收业务系统数据。
一个实施例中,SOL控制模块内设置的传输控制单元可以通过该传输控制单元与BMC的外部存储器接口(EMI)之间的总线接收BMC发送的响应消息。其中,上述的响应消息是BMC接收到上述中断信号,并获取SOL控制模块中存储的业务系统当前串口波特率,以及配置BMC串口波特率与业务系统当前串口波特率一致之后发送的。
一个实施例中,BMC接收到上述中断信号后,可以通过其外部存储器接口(EMI)获取SOL控制模块中存储的业务系统当前串口波特率。
206、SOL控制模块将缓存的业务系统数据发送给BMC。
其中,SOL控制模块接收到BMC发送的响应消息,并根据该响应消息携带的信息判断出BMC支持在业务系统当前串口波特率下接收业务系统数据之后,可以将缓存的业务系统数据通过其串口模块与BMC的UART串口之间的总线发送至BMC,由BMC将该业务系统数据发送至网络侧,以实现对业务系统的监测。
其中,BMC串口波特率即为BMC的UART串口波特率。
207、SOL控制模块清除缓存的业务系统数据。
一个实施例中,SOL控制模块根据BMC发送的响应消息携带的信息判断出BMC不支持在业务系统当前串口波特率下接收业务系统数据时,可以由SOL控制模块内设置的传输控制单元清除SOL控制模块缓存的业务系统数据,从而避免了在BMC不支持在业务系统当前串口波特率下接收业务系统数据时,仍将业务系统数据发送至BMC而导致业务系统数据接收错误。
本实施例中,SOL控制模块主动地识别业务系统当前串口波特率,在业务系统当前串口波特率与预先存储的业务系统串口波特率不相同时,将预先存储的业务系统串口波特率更新为业务系统当前串口波特率,并缓存业务系统串口发送的业务系统数据,以及产生中断信号发送至BMC,触发BMC获取SOL控制模块中存储的业务系统当前串口波特率,并配置BMC串口波特率与业务系统当前串口波特率一致;SOL控制模块接收BMC发送的响应消息后,确定BMC支持在业务系统当前串口波特率下接收业务系统数据,将缓存的业务系统数据发送给BMC,由BMC将该业务系统数据发送至网络侧。其中,SOL控制模块在判断出业务系统当前串口波特率与预先存储的业务系统串口波特率不相同时,缓存业务系统串口发送的业务系统数据,即暂停将业务系统数据发送至BMC,等待BMC配置其串口波特率与业务系统当前串口波特率一致之后,再将业务系统数据发送至BMC,避免了BMC串口波特率与业务系统的当前串口波特率不一致而导致的业务系统数据发送(如丢失、乱码等)错误,大大降低业务系统数据发送错误的风险。另外,BMC在SOL控制模块发送的中断信号触发下才获取SOL控制模块中存储的业务系统当前串口波特率,并配置其串口波特率与业务系统当前串口波特率一致,避免了采用定时轮询方式获取业务系统串口波特率,减少了BMC的信令资源浪费。
实施例二:
上述的实施例一从SOL控制模块一侧详细描述了本发明实施例提供的串口波特率配置方法,下面进一步从BMC一侧详细描述了本发明实施例提供的串口波特率配置方法。请参阅图3,图3为本发明实施例提供的另一种串口波特率配置方法的流程图。如图3所示,该方法可以包括以下步骤:
301、BMC接收SOL控制模块发送的中断信号。
其中,该中断信号是SOL控制模块识别出业务系统当前串口波特率与预先存储的业务系统串口波特率不相同,并将预先存储的业务系统串口波特率更新为业务系统当前串口波特率,以及缓存业务系统串口发送的业务系统数据之后发送的,该中断信号用于触发BMC获取SOL控制模块中存储的业务系统当前串口波特率,并配置BMC串口波特率与业务系统当前串口波特率一致。
一个实施例中,BMC内可以设置一中断控制器,该中断控制器可以通过其与SOL控制模块内设置的中断发生单元之间的总线接收SOL控制模块内设置的中断发生单元发送的中断信号。
实际应用中,中断控制器可以结合BMC的中断请求(Interrupt Request,IRQ)引脚,从而实现中断信号的接收以及响应。
302、BMC获取SOL控制模块中存储的业务系统当前串口波特率,以及配置BMC串口波特率与业务系统当前串口波特率一致。
一个实施例中,BMC可以通过其外部存储器接口(EMI)与SOL控制模块的频率识别单元之间的总线获取SOL控制模块中存储的业务系统当前串口波特率。
其中,BMC在接收到SOL控制模块发送的中断信号后,停止当前业务处理,转入响应所述中断信号的处理操作,即BMC获取SOL控制模块中存储的业务系统当前串口波特率,以及配置基板管理控制器串口波特率与业务系统当前串口波特率一致。
其中,BMC获取SOL控制模块中存储的业务系统当前串口波特率后,配置BMC串口波特率与业务系统当前串口波特率一致的具体实现过程是本领域普通技术人员所公知的常识,本发明实施例不作详细介绍。
303、BMC发送响应消息至SOL控制模块,该响应消息携带的信息表示BMC支持在业务系统当前串口波特率下接收业务系统数据。
一个实施例中,BMC可以通过其外部存储器接口(EMI)与SOL控制模块的传输控制单元之间的总线发送响应消息至SOL控制模块,其中,该响应消息中携带的信息表示BMC支持在业务系统当前串口波特率下接收业务系统数据。例如,该响应消息中的某一比特位(该比特位由BMC与SOL控制模块协商决定)为1或0时,表示BMC支持在业务系统当前串口波特率下接收业务系统数据,本发明实施例不作具体限定。
一个实施例中,上述步骤302中BMC获取SOL控制模块中存储的业务系统当前串口波特率之后,可以先判断其硬件是否支持在业务系统当前串口波特率下接收业务系统数据,若其硬件支持,再行的配置BMC串口波特率与业务系统当前串口波特率一致的步骤;反之,若其硬件不支持,则可以发送错误消息至SOL控制模块,表示BMC不支持在业务系统当前串口波特率下接收业务系统数据,使SOL控制模块可以删除缓存的业务系统数据。
一个实施例中,BMC响应消息至SOL控制模块之后,可以接收SOL控制模块发送业务系统数据,并将该业务系统数据发送至网络侧。其中,BMC可以通过其UART串口与SOL控制模块的串行模块之间的总线接收SOL控制模块发送业务系统数据,并将该业务系统数据发送至网络侧。如前面所述的,BMC串口波特率即为BMC的UART串口波特率。
进一步地,本发明实施例中BMC配置BMC串口波特率(即UART串口波特率)与业务系统串口波特率一致后,BMC可以接收网络侧发送的数据,并通过其UART串口与SOL控制模块的串口模块之间的总线将网络侧发送的数据发送至SOL控制模块,再由SOL控制模块将网络侧发送的数据通过其串口模块发送至业务系统,以实现对业务系统的控制。
本实施例中,BMC接收SOL控制模块发送的中断信号后,获取SOL控制模块中存储的业务系统当前串口波特率,并配置BMC串口波特率与业务系统当前串口波特率一致,以及发送响应消息至SOL控制模块,该响应消息携带的信息表示BMC支持在业务系统当前串口波特率下接收业务系统数据,以使BMC接收SOL控制模块发送的业务系统数据并发送至网络侧。该技术方案可以避免BMC串口波特率与业务系统当前串口波特率不一致而导致的业务系统数据发送(如丢失、乱码等)错误,大大降低业务系统数据发送错误的风险。另外,BMC接收SOL控制模块发送的中断信号后才触发获取SOL控制模块中存储的业务系统当前串口波特率,并配置其串口波特率与业务系统当前串口波特率一致,避免了采用定时轮询方式获取业务系统串口波特率,减少了BMC的信令资源浪费。
通过上述实施例一、实施例二的描述可知,本发明实施例提供的串口波特率配置方法可以包括两部控制流程,即包括实施例一所描述的SOL控制模块的控制流程以及实施例二所描述的BMC控制流程。而实际应用中,SOL控制模块一般位于逻辑芯片上,其中,逻辑芯片可以包括但不限于现场可编程门阵列(Field Programmable Gate Array,FPGA)和复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)。因此,实施例一所描述的SOL控制模块的控制流程又可以称为逻辑芯片的控制流程。其中,逻辑芯片的控制流程是由SOL控制模块识别出业务系统当前串口波特率与预先存储的业务系统波特率不一致而触发的,而BMC控制流程是由BMC接收到SOL控制模块发送的中断信号而触发的。下面再通过一个实施例三来详细地描述逻辑芯片的控制流程和BMC控制流程之间是如何密切地配合,从而实现本发明实施例中提供的串口波特率配置方法的。相信通过实施例三的描述,本发明实施例中提供的串口波特率配置方法所具有的优点将更加明显。
实施例三:
请参阅图4,图4为本发明实施例提供的另一种串口波特率配置方法的流程图。如图4所示,该方法可以包括以下步骤:
401、SOL控制模块发现业务系统当前串口波特率与预先存储的业务系统串口波特率不相同,将预先存储的业务系统串口波特率更新为业务系统当前串口波特率。
具体来说,SOL控制模块识别业务系统当前串口波特率后,若比较出业务系统当前串口波特率与预先存储的业务系统串口波特率不相同,则可以将预先存储的业务系统串口波特率更新为业务系统当前串口波特率。
402、SOL控制模块缓存业务系统串口发送的业务系统数据。
也即是说,SOL控制模块暂停通过其串口模块与BMC的UART串口之间的总线将业务系统数据发送给BMC,避免BMC串口波特率与业务系统当前串口波特率不一致而导致业务系统数据发送(如丢失、乱码等)错误。
403、SOL控制模块产生中断信号并发送至BMC,以及执行步骤407。
如前面实施例所述,SOL控制模块可以通过其内置的中断发生单元产生中断信号,并通过该中断发生单元与BMC的中断控制器之间的总线将产生的中断信号发送至BMC。其中,该中断信号用于触发BMC获取SOL控制模块中存储的业务系统当前串口波特率,并配置BMC串口波特率与业务系统当前串口波特率一致。
404、BMC接收SOL控制模块发送的中断信号,获取SOL控制模块中存储的业务系统当前串口波特率。
如前面实施例所述,BMC可以通过其内置的中断控制器与SOL控制模块内设置的中断发生单元之间的总线接收SOL控制模块内设置的中断发生单元发送的中断信号。
如前面实施例所述,BMC可以通过其外部存储器接口(EMI)与SOL控制模块的频率识别单元之间的总线获取SOL控制模块中存储的业务系统当前串口波特率。
405、BMC配置BMC串口波特率与业务系统当前串口波特率一致。
也即是说,BMC配置BMC的UART串口波特率与业务系统当前串口波特率一致。
406、BMC发送响应消息至SOL控制模块,该响应消息携带的信息表示BMC支持在业务系统当前串口波特率下接收业务系统数据。
如前面实施例所述,BMC可以通过其外部存储器接口(EMI)与SOL控制模块的传输控制单元之间的总线发送响应消息至SOL控制模块,其中,该响应消息中携带的信息表示BMC支持在业务系统当前串口波特率下接收业务系统数据,也即是说,BMC允许SOL控制模块在业务系统当前串口波特率下将业务系统数据发送至BMC,不会出现因为BMC串口波特率与业务系统当前串口波特率不一致而导致的业务系统数据发送(如丢失、乱码等)错误。
407、SOL控制模块等待接收BMC发送的响应消息,如果未接收到BMC发送的响应消息,则继续执行步骤407,即继续等待接收BMC发送的响应消息;如果接收到BMC发送的响应消息,则执行步骤408。
如前面实施例所述,SOL控制模块可以通过其内置的传输控制单元与BMC的外部存储器接口(EMI)之间的总线接收BMC发送的响应消息。
408、SOL控制模块判断该响应消息携带的信息是否表示BMC支持在业务系统当前串口波特率下接收业务系统数据,若是,则执行步骤409;若否,则执行步骤410。
409、SOL控制模块将缓存的业务系统数据发送给BMC。
如前面实施例所述,SOL控制模块可以将缓存的业务系统数据通过其串口模块与BMC的UART串口之间的总线发送至BMC,使BMC可以将该业务系统数据发送至网络侧,以实现对业务系统的监测。
相应地,BMC还可以通过其UART串口与SOL控制模块的串行模块之间的总线接收SOL控制模块发送业务系统数据,并将该业务系统数据发送至网络侧。
410、SOL控制模块清除缓存的业务系统数据。
可见,逻辑芯片的控制流程由业务系统串口波特率发生变化触发(首次建立连接时本逻辑流程中理解为业务系统串口波特率由0到业务系统串口当前波特率的变化),先后经过缓存数据(即停止发送)、生成中断、等待BMC响应消息、判断BMC是否支持业务系统串口当前波特率、恢复数据发送等几个步骤。而BMC控制流程由中断信号触发,先后执行获取业务系统串口当前波特率、配置BMC串口波特率、发送响应消息至SOL控制模块以及接收业务系统数据等操作。
本实施例可以避免BMC串口波特率与业务系统的当前串口波特率不一致而导致的业务系统数据发送(如丢失、乱码等)错误,大大降低业务系统数据发送错误的风险。另外,BMC在SOL控制模块发送的中断信号触发下才获取SOL控制模块中存储的业务系统当前串口波特率,并配置其串口波特率与业务系统当前串口波特率一致,避免了采用定时轮询方式获取业务系统串口波特率,减少了BMC的信令资源浪费。
下面,本发明实施例进一步结合一个实施例四来详细描述逻辑芯片的控制流程(即SOL控制模块的控制流程),该逻辑芯片的控制流程可以实现本发明实施例中提供的串口波特率配置方法。其中,实施例四所描述的逻辑芯片的控制流程是以Sandy Bridge 4P系统为平台进行的。在实施例四中,逻辑芯片的控制流程是由逻辑芯片上的SOL控制模块识别出业务系统串口波特率发送变化而触发的。
实施例四:
请参阅图5,图5为本发明实施例提供的一种基于Sandy Bridge 4P系统的逻辑芯片的控制流程图。如图5所示,该逻辑芯片的控制流程可以包括以下步骤:
501、逻辑芯片的SOL控制模块识别业务系统串口比特率。
目前,串口波特率识别技术比较成熟,SOL控制模块识别业务系统串口波特率的过程中,不影响业务系统数据的接受操作,即无论业务系统串口波特率变化与否,业务系统数据都将被SOL控制模块接收。
502、逻辑芯片的SOL控制模块比较业务系统当前串口波特率与预先存储的业务系统串口波特率是否相同,如果相同,则返回步骤501;如果不相同,则执行步骤503。
503、逻辑芯片的SOL控制模块再次确认业务系统串口波特率是否发生变化,如果否,则返回步骤501;如果不相同,则执行步骤504。
其中,SOL控制模块执行步骤503可以进一步提高识别业务系统串口波特率变化的准确性。即在首次识别出业务系统串口波特率变化后,需要在此基础上加以确认,防止识别错误。
举例来说,如果SOL控制模块在执行上述步骤502的过程中首次发现业务系统串口波特率由A(即预先存储的业务系统串口波特率)变化至B(业务系统当前串口波特率),则如果SOL控制模块在执行上述步骤503的过程中发现业务系统当前串口波特率仍然为B或其他数值,则可以确定业务系统串口波特率发生变化;反之,如果SOL控制模块在执行上述的步骤503时发现业务系统当前串口波特率仍然为A,则可以确定业务系统串口波特率没有发生变化。
504、逻辑芯片的SOL控制模块将预先存储的业务系统串口波特率更新为业务系统当前串口波特率,缓存业务系统串口发送的业务系统数据,即暂停业务系统数据发送至BMC。
本实施例中,SOL控制模块可以对前一次识别到的业务系统串口波特率进行预先存储,并用于和业务系统当前串口波特率进行比较,若比较结果相同,则无需任何操作,继续执行步骤501;如果比较结果不相同,则立即暂停通过其串口模块与BMC的UART串口之间的总线将业务系统数据发送至BMC,将业务系统数据进行缓存。
505、逻辑芯片的SOL控制模块产生中断信号并发送至BMC。
实际应用中,SOL控制模块可以通过其内置的中断发生单元产生中断信号,并通过该中断发生单元与BMC的中断控制器之间的总线将产生的中断信号发送至BMC。如图6所示,SOL控制模块产生的中断信号可以是一个电平变化的电信号,用于触发BMC获取SOL控制模块中存储的业务系统当前串口波特率,并配置BMC串口波特率与业务系统当前串口波特率一致。
506、逻辑芯片的SOL控制模块等待BMC发送的响应消息,如果未接收到BMC发送的响应消息,则继续等待接收BMC发送的响应消息;如果接收到BMC发送的响应消息,则执行步骤507。
507、逻辑芯片的SOL控制模块判断该响应消息携带的信息是否表示BMC支持在业务系统当前串口波特率下接收业务系统数据,若是,则执行步骤508;若否,则执行步骤509。
508、逻辑芯片的SOL控制模块将缓存的业务系统数据发送给BMC。
509、逻辑芯片的SOL控制模块将缓冲的业务系统数据做丢弃处理。
本实施例中,逻辑芯片的SOL控制模块主动地识别业务系统当前串口波特率,在业务系统当前串口波特率与预先存储的业务系统串口波特率不相同时,将预先存储的业务系统串口波特率更新为业务系统当前串口波特率,并缓存业务系统串口发送的业务系统数据,以及产生中断信号发送至BMC,触发BMC获取SOL控制模块中存储的业务系统当前串口波特率,并配置BMC串口波特率与业务系统当前串口波特率一致;SOL控制模块接收BMC发送的响应消息后,确定BMC支持在业务系统当前串口波特率下接收业务系统数据,将缓存的业务系统数据发送给BMC,由BMC将该业务系统数据发送至网络侧。其中,逻辑芯片的SOL控制模块在判断出业务系统当前串口波特率与预先存储的业务系统串口波特率不相同时,缓存业务系统串口发送的业务系统数据,即暂停将业务系统数据发送至BMC,等待BMC配置其串口波特率与业务系统当前串口波特率一致之后,再将业务系统数据发送至BMC,避免了BMC串口波特率与业务系统的当前串口波特率不一致而导致的业务系统数据发送(如丢失、乱码等)错误,大大降低业务系统数据发送错误的风险。另外,BMC在SOL控制模块发送的中断信号触发下才获取SOL控制模块中存储的业务系统当前串口波特率,并配置其串口波特率与业务系统当前串口波特率一致,避免了采用定时轮询方式获取业务系统串口波特率,减少了BMC的信令资源浪费。
对应于上述实施例四所描述的逻辑芯片的控制流程,本发明实施例进一步结合一个实施例五来详细描述BMC控制流程,该BMC控制流程可以实现本发明实施例中提供的串口波特率配置方法。其中,BMC控制流程是由运行在BMC上的软件代码来实现的,该软件代码可以包括两个组成部分,一是运行在内核层的内核层中断响应代码,一是运行在用户层的用户层波特率控制代码。在实施例五中,BMC控制流程是由逻辑芯片上的SOL控制模块发送的中断信号触发的。
实施例五:
请一并参阅图7a和图7b,图7a为本发明实施例提供的一种BMC控制流程在内核层中执行的部分流程图,而图7b为本发明实施例提供的一种BMC控制流程在用户层中执行的部分流程图。如图7a所示,该BMC控制流程中内核层中断响应代码执行流程可以包括以下步骤:
701、获取逻辑芯片的SOL控制模块存储的业务系统当前串口波特率。
其中,BMC内核层中断响应代码可以为逻辑芯片的SOL控制模块发送的中断信号提供服务。一个实施例中,BMC内核层中断响应代码可以通过其外部存储器接口(EMI)与SOL控制模块的频率识别单元之间的总线获取SOL控制模块中存储的业务系统当前串口波特率。
702、唤醒用户层波特率控制代码。
其中,内核层中断响应代码唤醒用户层波特率控制代码后,由用户层波特率控制代码运行判断BMC硬件是否支持业务系统当前串口波特率,并将判断结果通知SOL控制控制。
实际应用中,为了降低系统运行开销,在业务系统串口波特率没有变化时,该用户层波特率控制代码处于睡眠状态,详细可见用户层函数功能介绍。
本实施例中,SOL控制模块发送的中断信号到达BMC后,BMC产生IRQ中断,BMC停止当前业务,内核层中断响应代码转入响应的中断处理操作,即内核层中断响应代码执行上述步骤701、702。
当内核层中断响应代码获取逻辑芯片的SOL控制模块存储的业务系统当前串口波特率,并唤醒用户层波特率控制代码后,用户层波特率控制代码的执行流程可以如图7b所示,包括以下步骤:
7011、判断BMC硬件是否支持业务系统当前串口波特率,如果是,则执行步骤7012;如果否,则执行步骤7014。
本实施例中,用户层波特率控制代码可以根据内核层转移过来的业务系统当前串口波特率,判断BMC硬件是否支持该业务系统当前串口波特率。
7012、配置BMC串口波特率与业务系统当前串口波特率,并执行步骤7013。
7013、通过EMI与逻辑芯片的SOL控制模块的传输控制单元之间的总线发送响应消息至逻辑芯片的SOL控制模块,该响应消息携带的信息表示BMC支持在业务系统当前串口波特率下接收业务系统数据。
7014、通过EMI与逻辑芯片的SOL控制模块的传输控制单元之间的总线发送错误消息至逻辑芯片的SOL控制模块,表示BMC不支持在业务系统当前串口波特率下接收业务系统数据。
其中,上述两个分支执行完后,用户层波特率控制代码将进入睡眠状态。
本实施例中,将BMC控制流程分别运行于用户层和内核层是因为用户层的操作更加灵活,方便实现更多的附加功能,为以后的扩展提供基础,而内核层则更加高效、直接。
当然,为追求更高效的BMC控制流程,也可以将BMC控制流程全部运行于内核层。请参阅图7c,图7c为本发明实施例中提供的一种BMC控制流程图。其中,图7c所示的BMC控制流程全部运行于内核层。如图7c所示,该用户层波特率控制代码的执行流程可以包括以下步骤:
70111、内核层中断响应代码获取逻辑芯片的SOL控制模块存储的业务系统当前串口波特率。
70112、内核层中断响应代码判断BMC硬件是否支持业务系统当前串口波特率,如果是,则执行步骤70113;如果否,则执行步骤70115。
70113、内核层中断响应代码配置BMC串口波特率与业务系统当前串口波特率,并执行步骤70114。
70114、内核层中断响应代码通过EMI与逻辑芯片的SOL控制模块的传输控制单元之间的总线发送响应消息至逻辑芯片的SOL控制模块,该响应消息携带的信息表示BMC支持在业务系统当前串口波特率下接收业务系统数据。
70115、内核层中断响应代码通过EMI与逻辑芯片的SOL控制模块的传输控制单元之间的总线发送错误消息至逻辑芯片的SOL控制模块,表示BMC不支持在业务系统当前串口波特率下接收业务系统数据。
其中,BMC控制流程全部在内核层实现,无需用户层波特率控制代码参与。这便形成一种自动化的操作模式,其优势在于整个控制流程的紧凑性,从串口波特率识别到中断,到配置BMC串口波特率完成一气呵成,不受外界干扰。
实施例六:
请参阅图8,图8为本发明实施例提供的一种SOL控制模块的结构示意图,用于实现本发明实施例提供的串口波特率配置方法。如图8所示,该SOL控制模块可以包括:
频率识别单元801,用于识别业务系统当前串口波特率,并比较业务系统当前串口波特率与预先存储的业务系统串口波特率是否相同,若不相同,则将预先存储的业务系统串口波特率更新为业务系统当前串口波特率;反之,若相同,则频率识别单元801继续识别业务系统当前串口波特率,并比较业务系统当前串口波特率与预先存储的业务系统串口波特率是否相同。
数据缓存单元802,用于缓存业务系统串口发送的业务系统数据。
也即是说,数据缓存单元802用于在业务系统当前串口波特率与预先存储的业务系统串口波特率不相同时,缓存业务系统串口发送的业务系统数据。
中断发生单元803,用于产生中断信号并发送至BMC。
传输控制单元804,用于接收BMC发送的响应消息;若该响应消息携带的信息表示BMC支持在业务系统当前串口波特率下接收业务系统数据,则将缓存的业务系统数据发送给BMC;其中,该响应消息是BMC接收到上述中断信号,并获取SOL控制模块中存储的业务系统当前串口波特率,以及配置BMC串口波特率与业务系统当前串口波特率一致之后发送的。
一个实施例中,中断发生单元802具体用于产生中断信号,并通过中断发生单元802与BMC的中断控制器之间的总线将中断信号发送至BMC。
一个实施例中,传输控制单元804接收BMC发送的响应消息的具体方式为:传输控制单元804通过其与BMC的外部存储器接口(EMI)之间的总线接收BMC发送的响应消息。
一个实施例中,SOL控制模块的传输控制单元804将缓存的业务系统数据发送给BMC的具体方式为:传输控制单元804通过SOL控制模块的串行模块与BMC的UART串口之间的总线将缓存的业务系统数据发送给BMC;其中,BMC串口波特率即为BMC的UART串口波特率。
上述提供的SOL控制模块可以避免BMC串口波特率与业务系统的当前串口波特率不一致而导致的业务系统数据发送(如丢失、乱码等)错误,大大降低业务系统数据发送错误的风险。另外,使BMC在SOL控制模块发送的中断信号触发下才获取SOL控制模块中存储的业务系统当前串口波特率,并配置其串口波特率与业务系统当前串口波特率一致,避免了BMC采用定时轮询方式获取业务系统串口波特率,减少了BMC的信令资源浪费。
实施例六:
请参阅图9,图9为本发明实施例提供的一种基板管理控制器的结构示意图,用于实现本发明实施例提供的串口波特率配置方法。如图9所示,该基板管理控制器90可以包括:
中断控制器901,用于接收SOL控制模块发送的中断信号,该中断信号是SOL控制模块识别出业务系统当前串口波特率与预先存储的业务系统串口波特率不相同,并将预先存储的业务系统串口波特率更新为业务系统当前串口波特率,以及缓存业务系统串口发送的业务系统数据之后发送的。
频率获取单元902,用于获取SOL控制模块中存储的业务系统当前串口波特率。
频率配置单元903,用于根据频率获取单元902获取的业务系统当前串口波特率,配置基板管理控制器串口波特率与业务系统当前串口波特率一致。
消息反馈单元904,用于发送响应消息至SOL控制模块,该响应消息携带的信息表示基板管理控制器支持在业务系统当前串口波特率下接收业务系统数据。
请一并参阅图10,图10为本发明实施例提供的另一种基板管理控制器的结构示意图,用于实现本发明实施例提供的串口波特率配置方法。如图10所示,该基板管理控制器在图9所示的基板管理控制器的基础上进一步包括:
判断单元905,用于判断基板管理控制器的硬件是否支持在频率获取单元获取902获取的业务系统当前串口波特率下接收业务系统数据,若支持,则通知频率配置单元904配置基板管理控制器串口波特率。
相应地,频率配置单元903具体用于根据判断单元905的通知以及频率获取单元902获取的业务系统当前串口波特率,配置基板管理控制器串口波特率与业务系统当前串口波特率一致。
如图10所示,该基板管理控制器还包括:
数据发送单元906,用于接收SOL控制模块发送业务系统数据,并将业务系统数据发送至网络侧。
一个实施例中,数据发送单元906具体用于通过基板管理控制器的UART串口与SOL控制模块的串行模块之间的总线接收SOL控制模块发送业务系统数据,并将业务系统数据发送至网络侧;其中,基板管理控制器串口波特率即为基板管理控制器的UART串口波特率。
一个实施例中,中断控制器901接收SOL控制模块发送的中断信号的具体方式为:中断控制器901通过中断控制器901与SOL控制模块的中断发生单元之间的总线接收SOL控制模块发送的中断信号。
一个实施例中,频率获取单元902获取SOL控制模块中存储的业务系统当前串口波特率的具体方式为:
频率获取单元902通过基板管理控制器的外部存储器接口(EMI)与SOL控制模块的频率识别单元之间的总线获取SOL控制模块中存储的业务系统当前串口波特率;
消息反馈单元904发送响应消息至SOL控制模块的具体方式为:
消息反馈单元904通过基板管理控制器的外部存储器接口(EMI)与SOL控制模块的传输控制单元之间的总线发送响应消息至SOL控制模块。
上述提供的BMC可以避免其串口波特率与业务系统的当前串口波特率不一致而导致的业务系统数据发送(如丢失、乱码等)错误,大大降低业务系统数据发送错误的风险。另外,BMC在SOL控制模块发送的中断信号触发下才获取SOL控制模块中存储的业务系统当前串口波特率,并配置其串口波特率与业务系统当前串口波特率一致,避免了BMC采用定时轮询方式获取业务系统串口波特率,减少了BMC的信令资源浪费。
请一并参阅图11,图11为本发明实施例提供的一种串口波特率配置系统的结构示意图,用于实现本发明实施例提供的串口波特率配置方法。如图11所示,串口波特率配置系统可以包括:
SOL控制模块1101和基板管理控制器1102,SOL控制模块1101和基板管理控制器1102之间以可通信方式连接;其中,SOL控制模块1101的结构与图8所示的SOL控制模块的结构相同,基板管理控制器1102的结构与图10所示的基板管理控制器的结构相同,本发明实施例不作复述。
上述提供的串口波特率配置系统可以避免BMC串口波特率与业务系统的当前串口波特率不一致而导致的业务系统数据发送(如丢失、乱码等)错误,大大降低业务系统数据发送错误的风险。另外,使BMC在SOL控制模块发送的中断信号触发下才获取SOL控制模块中存储的业务系统当前串口波特率,并配置其串口波特率与业务系统当前串口波特率一致,避免了BMC采用定时轮询方式获取业务系统串口波特率,减少了BMC的信令资源浪费。
综上所述,本发明实施例上述提供的方法及相关设备、系统至少具备以下优点:
1)SOL控制模块与业务系统首次串口建立连接或者业务系统串口波特率发生变化时,业务系统无需通知SOL控制模块串口波特率信息;
2)SOL控制模块不再被动等待业务系统串口波特率信息,消除等待延时;
3)SOL控制模块与业务系统首次串口建立连接或者业务系统串口波特率发生变化时,业务系统数据进行缓存,在等待BMC配置其串口波特率与业务系统当前串口波特率一致过程中不会出现丢失;
4)SOL控制模块与业务系统首次串口建立连接或者业务系统串口波特率发生变化时,业务系统数据暂停发送,不会导致乱码出现;
5)BMC获取业务系统串口波特率的不再以定时轮询方式获取,降低系统信令开销。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本发明实施例所提供的一种串口波特率配置方法及相关设备、系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。