一种bmc固件启动方法及电路

文档序号:1888771 发布日期:2021-11-26 浏览:17次 >En<

阅读说明:本技术 一种bmc固件启动方法及电路 (BMC firmware starting method and circuit ) 是由 马永昊 于 2021-07-09 设计创作,主要内容包括:本申请公开了一种BMC固件启动方法及电路,包括:BMC利用与其连接的第一闪存中的固件启动;判断BMC是否启动成功;如果BMC启动失败,则FPGA控制切换开关断开BMC与第一闪存的连接,FPGA将与其连接的第二闪存中的固件通过通信串口发送至BMC,以使BMC利用第二闪存中的固件启动。本申请通过将第一闪存与第二闪存分别连接BMC与FPGA,对第一闪存与第二闪存进行了物理隔离,并且FPGA能够在第一闪存无法支持对BMC启动时,利用第二闪存中的固件辅助BMC启动,实现了冗余设计,确保在第一闪存遭到入侵后,能够继续依靠第二闪存启动,提高了可靠性,并且通过BMC启动状态判断第一闪存是否遭到入侵,判断结果可靠性也更高。(The application discloses a BMC firmware starting method and a circuit, which comprise: the BMC is started by using firmware in a first flash memory connected with the BMC; judging whether the BMC is started successfully; if the BMC is failed to be started, the FPGA controls the change-over switch to disconnect the BMC from the first flash memory, and the FPGA sends the firmware in the second flash memory connected with the FPGA to the BMC through the communication serial port so that the BMC can be started by using the firmware in the second flash memory. BMC and FPGA are connected respectively through first flash memory and second flash memory to this application, physical isolation has been carried out to first flash memory and second flash memory, and FPGA can&#39;t support when starting to BMC in first flash memory, utilize the supplementary BMC in the second flash memory to start, the redundant design has been realized, ensure to suffer after the invasion at first flash memory, can continue to rely on the second flash memory to start, the reliability has been improved, and judge through BMC start-up state whether first flash memory suffers the invasion, the judgement result reliability is also higher.)

一种BMC固件启动方法及电路

技术领域

本发明涉及计算机技术领域,特别涉及一种BMC固件启动方法及电路。

背景技术

随着信息技术的发展,服务器的应用越来越广泛。BMC(基板管理控制器)是服务器特有的,可以管控服务器的运行状态。BMC的固件一般会存储在FLASH中,实际根据需要会升级固件,以添加一些新的功能或解决问题,可以通过网络做带外升级,也可以用离线升级。

BMC的固件的安全性非常重要,如果遭到入侵将可能导致巨大的损失。虽然现在的一些方案已经采用了备用FLASH以及安装启动功能,但是FLASH都是挂到一个总线下面,一旦被入侵成功并改写固件,很难恢复状态。

在现有设计中,总结有以下缺点:1、参见图1所示,一般设置两个冗余FLASH挂在同一总线,一旦总线被入侵后,只要入侵设备仍在,总线上的FLASH都有被改写的风险。2、BMC的FLASH需要在BMC挂死时切换,这要求准确判定BMC的工作状态,现有方案使用看门狗等信号监控工作状态,这种监控状态不够全面。

为此,需要一种更为安全可靠的BMC固件启动方法。

发明内容

有鉴于此,本发明的目的在于提供一种BMC固件启动方法及电路,提高安全性和可靠性。其具体方案如下:

一种BMC固件启动方法,包括:

BMC利用与其连接的第一闪存中的固件启动;

FPGA判断所述BMC是否启动成功;

如果所述BMC启动失败,则所述FPGA控制切换开关断开所述BMC与所述第一闪存的连接,FPGA将与其连接的第二闪存中的固件通过通信串口发送至BMC,以使BMC利用所述第二闪存中的固件启动。

可选的,所述FPGA判断所述BMC是否启动成功的过程,包括:

所述FPGA判断所述BMC与所述FPGA之间的心跳信号和安全校验信号是否均正常;

如果均正常则启动成功,如果任一信号不正常则启动失败;

其中,所述安全校验信号为根据所述BMC对所述第一闪存中固件进行安全校验的结果生成的。

可选的,所述FPGA判断所述BMC是否启动成功的过程,包括:

所述FPGA判断所述BMC与所述FPGA之间的心跳信号和固定安全验证字符是否均正常;

如果均正常则启动成功,否则则启动失败;

其中,所述固定安全验证字符为所述BMC根据所述第一闪存中固件生成的预设字符。

可选的,所述FPGA判断所述BMC是否启动成功的过程,包括:

所述FPGA判断线路监测信号、心跳信号和/或安全验证信号是否均正常;

如果均正常则启动成功,否则则启动失败;

其中,所述心跳信号为所述BMC与所述FPGA之间的心跳信号,所述线路监测信号为所述FPGA监测所述BMC与所述第一闪存之间的通讯总线上异常信号的信号,安全验证信号为固定安全验证字符或安全校验信号,所述固定安全验证字符为所述BMC根据所述第一闪存中固件生成的预设字符,所述安全校验信号为根据所述BMC对所述第一闪存中固件进行安全校验的结果生成的。

可选的,还包括:

所述FPGA在所述BMC启动失败后,生成并发送BMC异常日志至所述BMC。

可选的,所述第二闪存具有写保护。

可选的,在所述BMC利用所述第二闪存中的固件启动成功后,还包括:

所述FPGA控制所述切换开关重新连接所述BMC与所述第一闪存的连接;

所述FPGA通过通讯串口利用所述第二闪存中的固件重置所述第一闪存中的固件。

本发明还公开了一种BMC固件电路,包括:FPGA、BMC、第一闪存、第二闪存和切换开关;

所述BMC通过SPI总线依次与所述切换开关和所述第一闪存连接,所述BMC与所述FPGA通过通信串口连接,所述FPGA分别与所述第二闪存和所述切换开关连接。

可选的,所述BMC通过USB接口单向与所述FPGA连接,用于将所述第一闪存中的固件通过所述FPGA备份至所述第二闪存。

本发明中,BMC固件启动方法,包括:BMC利用与其连接的第一闪存中的固件启动;判断BMC是否启动成功;如果BMC启动失败,则FPGA控制切换开关断开BMC与第一闪存的连接,FPGA将与其连接的第二闪存中的固件通过通信串口发送至BMC,以使BMC利用第二闪存中的固件启动。

本发明通过将第一闪存与第二闪存分别连接BMC与FPGA,对第一闪存与第二闪存进行了物理隔离,并且FPGA能够在第一闪存无法支持对BMC启动时,利用第二闪存中的固件辅助BMC启动,实现了冗余设计,确保在第一闪存遭到入侵后,能够继续依靠第二闪存启动,提高了可靠性,并且通过BMC启动状态判断第一闪存是否遭到入侵,判断结果可靠性也更高。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为现有技术的一种BMC固件启动电路拓扑图;

图2为本发明实施例公开的一种BMC固件启动方法流程示意图;

图3为本发明实施例公开的一种BMC固件启动电路示意图;

图4为本发明实施例公开的另一种BMC固件启动方法流程示意图;

图5为本发明实施例公开的一种BMC固件启动电路拓扑图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种BMC固件启动方法,参见图2和图3所示,该方法包括:

S11:BMC1利用与其连接的第一闪存2中的固件启动。

具体的,在默认情况下,第一闪存2中存储有BMC1启动过程中需要的固件,因此,BMC1需要利用利用与其连接的第一闪存2中的固件启动。

S12:FPGA3判断所述BMC1是否启动成功。

具体的,如果第一闪存2遭到入侵被改写,BMC1将无法利用第一闪存2中被改写的固件正常启动,因此,为了判断第一闪存2是否被入侵,需要判断BMC1是否启动成功,同时,通过判断BMC1是否启动成功,可以准确地判断第一闪存2是否被入侵修改,因为,一旦BMC1无法启动,极大概率是第一闪存2中的固件遭到入侵被修改,所以能够确保判断的准确性。

S13:如果所述BMC1启动失败,则FPGA3控制切换开关4断开所述BMC1与所述第一闪存2的连接,FPGA3将与其连接的第二闪存5中的固件通过通信串口发送至BMC1,以使BMC1利用所述第二闪存5中的固件启动。

具体的,如果BMC1启动失败,说明第一闪存2遭到入侵,其中存储的固件被修改,BMC1无法继续使用第一闪存2继续启动,因此,FPGA3在检测到BMC1启动失败后,立刻控制切换开关4断开BMC1与第一闪存2的连接,停止BMC1继续利用第一闪存2中错误的固件尝试启动,并且FPGA3同时将与其连接的第二闪存5中的固件通过通信串口发送至BMC1,以使BMC1利用所述第二闪存5中的固件启动,实现冗余设计,并且第一闪存2因为只与BMC1连接,所以即使第一闪存2被入侵,也不会影响到只与FPGA3连接的第二闪存5,确保了即使遭到入侵后,仍能够启动BMC1,提高了可靠性。

具体的,当然如果启动成功,则无需任何步骤,FPGA3和BMC1正常运行即可。

可见,本发明实施例通过将第一闪存2与第二闪存5分别连接BMC1与FPGA3,对第一闪存2与第二闪存5进行了物理隔离,并且FPGA3能够在第一闪存2无法支持对BMC1启动时,利用第二闪存5中的固件辅助BMC1启动,实现了冗余设计,确保在第一闪存2遭到入侵后,能够继续依靠第二闪存5启动,提高了可靠性,并且通过BMC1启动状态判断第一闪存2是否遭到入侵,判断结果可靠性也更高。

本发明实施例公开了一种具体的BMC1固件启动方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。参见图4所示,具体的:

S21:BMC1利用与其连接的第一闪存2中的固件启动;

S22:FPGA3判断所述BMC1是否启动成功。

具体的,S22FPGA3判断所述BMC1是否启动成功的过程可以包括多种判断方法,本发明实施例如下介绍具体三种判断方法。

具体的,第一种:FPGA3判断所述BMC1是否启动成功的过程,可以具体为FPGA3判断所述BMC1与所述FPGA3之间的心跳信号和安全校验信号是否均正常。

具体的,在FPGA3与BMC1之间建立心跳信号,只有在BMC1正常启动后才能够维持心跳信号,因此,在BMC1开始启动后一定时间内FPGA3未接收到BMC1传输的心跳信号,便可以认为BMC1启动失败,同时,还增设安全校验信号,BMC1内部可以设置安全校验模块,安全校验模块用于对第一闪存2中传输至BMC1的固件进行安全校验,如果第一闪存2中的固件遭到修改,将无法通过安全校验,此时安全校验信号将会反馈校验失败至FPGA3,FPGA3便可以得知BMC1启动失败,当然,如果安全校验成功,安全校验信号便可以反馈校验成功信号至FPGA3。

具体的,只有当心跳信号和安全校验信号均正常时,FPGA3才会认定BMC1成功启动,当任一信号不正常,则FPGA3认定BMC1启动失败。

其中,在安全校验通过时BMC1可以输出高电平信号表达安全校验信号中的安全校验通过至FPGA3指定端口,在安全校验未通过时BMC1可以输出低电平信号表达安全校验信号中的安全校验失败至FPGA3指定端口,以使FPGA3确认BMC1状态。

具体的,第二种:所述FPGA3判断所述BMC1是否启动成功的过程,可以具体为FPGA3判断所述BMC1与所述FPGA3之间的心跳信号和固定安全验证字符是否均正常。

具体的,BMC1中可以不设置安全校验模块,为此,则使用固定安全验证字符来代替,在第一闪存2中固件正确时,BMC1在利用第一闪存2中固件正常启动后,会持续发送预设的与第一闪存2中固件对应的固定安全验证字符至FPGA3,当FPGA3能够持续接收到固定安全验证字符时,便可以确定BMC1正常启动,一旦第一闪存2中的固件被修改,BMC1则无法利用第一闪存2中被修改的固件发送固定安全验证字符至FPGA3,FPGA3在BMC1尝试启动后长时间未接收到固定安全验证字符,便可以得知BMC1启动失败。

具体的,同样只有当心跳信号和固定安全验证字符均正常时,FPGA3才会认定BMC1成功启动,当任一信号不正常,则FPGA3认定BMC1启动失败。

具体的,第三种:FPGA3判断所述BMC1是否启动成功的过程,可以具体为所述FPGA3判断线路监测信号、心跳信号和/或安全验证信号是否均正常。

其中,安全验证信号为固定安全验证字符或安全校验信号。

具体的,FPGA3可以通过监测BMC1与所述第一闪存2之间的通讯总线上异常信号得到线路监测信号,当BMC1与所述第一闪存2之间的通讯总线遭到入侵,FPGA3便可以通过线路监测信号确认遭到入侵,一旦遭到入侵,FPGA3就可以认为BMC1无法正常启动。

具体的,线路监测信号、心跳信号和/或安全验证信号,三种信号可以自由组合和选用,实现对BMC1状态的判断。

S23:如果所述BMC1启动失败,则所述FPGA3控制切换开关4断开所述BMC1与所述第一闪存2的连接,FPGA3将与其连接的第二闪存5中的固件通过通信串口发送至BMC1,以使BMC1利用所述第二闪存5中的固件启动。

S24:所述FPGA3在所述BMC1启动失败后,生成并发送BMC1异常日志至所述BMC1。

具体的,为了方便运维人员查看故障FPGA3在所述BMC1启动失败后,生成并发送BMC1异常日志至所述BMC1,BMC1异常日志中记录本次启动失败,以便后续运维人员防止下次入侵。

S25:所述FPGA3控制所述切换开关4重新连接所述BMC1与所述第一闪存2的连接。

具体的,在BMC1成功启动后,BMC1就不再需要使用闪存中的固件,因此,FPGA3控制所述切换开关4重新连接所述BMC1与所述第一闪存2的连接,建立起FPGA3、BMC1与第一闪存2之间的通路,以便后续对第一闪存2做修改。

其中,S24与S25和S26之间并无先后顺序,可以同时执行也可以先后执行,例如,可以先执行S25和S26之后再执行S24,在此不做限定。

S26:所述FPGA3通过通讯串口利用所述第二闪存5中的固件重置所述第一闪存2中的固件。

具体的,在第一闪存2中的固件被修改后,FPGA3可以通过通讯串口将第二闪存5中正常的固件移入至第一闪存2中,替换第一闪存2中被修改的固件,重新使第一闪存2中的固件恢复正常状态。

需要说明的是,在正常情况下,第一闪存2和第二闪存5中的固件是相同的,因此,可以利用第二闪存5中的固件恢复第一闪存2中的固件。

进一步的,为了确保第二闪存5的安全,为所述第二闪存5设置写保护,第二闪存5保持只读状态,避免被修改。

此外,本发明实施例还公开了一种BMC1固件电路,参见图5所示,包括:FPGA3、BMC1、第一闪存2、第二闪存5和切换开关4;

所述BMC1通过SPI_1端口利用SPI总线依次与所述切换开关4和所述第一闪存2连接,所述BMC1与所述FPGA3通过通信串口(UART_BMC和UART_FPGA)连接,所述FPGA3分别与所述第二闪存5和所述切换开关4连接。

具体的,所述BMC1通过USB接口单向与所述FPGA3连接,用于将所述第一闪存2中的固件通过所述FPGA3备份至所述第二闪存5。

具体的,BMC1通过HB端口向FPGA3的GPIO1端口传输心跳信号,FPGA3通过GPIO2端口向BMC1的GPIO3端口传输BMC异常日志LOG,BMC1通过BMC_Ready端口向FPGA3的GPIO4端口传输安全校验信号,FPGA3通过SW端口控制切换开关4,FPGA3通过SPI_SPY端口监测BMC1与第一闪存2之间的SPI总线是否异常。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

以上对本发明所提供的技术内容进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:面向位翻转效应的基于SoC芯片可重构柔性化控制方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!