CPLD在线升级方法、装置及系统与流程

文档序号:19673639发布日期:2020-01-10 22:59阅读:2120来源:国知局
CPLD在线升级方法、装置及系统与流程

本发明实施例涉及cpld升级技术领域,特别是涉及一种cpld在线升级方法、装置及系统。



背景技术:

cpld(complexprogrammablelogicdevice,复杂可编程逻辑器件)作为一种用户可根据自身需要自行构造逻辑功能的大规模数字集成电路,广泛应用于存储控制系统中。举例来说,cpld在存储控制器中实现很多功能,如系统所有芯片的电源开关控制,电源上下电的时序,系统芯片的复位时序,实现一些如iic、spi、lpc等低速总线的master或者slave,解析sgpio点亮hdd指示灯,作为bmc掌控主板的一个辅助设备等等。

不可避免的,cpld在使用过程中需要升级逻辑代码设计。传统升级方式为利用bmc(baseboardmanagementcontroller,基板管理控制器)在控制器电源不断电的情况下对cpld在线升级。但是,cpld在升级过程中,极有可能导致存储主控器出现断电后在上电的现象,而断电是不允许出现在存储业务中的。

举例来说,请参阅图1,cpld在复位信号有效之后,其逻辑状态机代码进入“状态1”,如果满足“条件1”和“条件2”,则状态机跳转至“状态3”。相应的,每个状态都需要执行特定任务,比如“状态1”执行“打开芯片a的电源”任务,当状态机处于“状态3”时,逻辑代码已经执行完成“打开芯片a的电源”,“打开芯片b的电源”,“打开芯片c的电源”三个操作。当老代码的状态机处于“状态3”时,系统执行了cpld逻辑代码的在线升级。升级完成后,新的代码复位信号有效之后,从“状态1”开始运行,而不是从老代码的断点“状态3”运行。原来老代码做完的事情“打开芯片a的电源”,“打开芯片b的电源”,“打开芯片c的电源”新的代码需要重新去做。如果芯片b是cpu,那如此操作将会造成存储控制器的主系统(如centos)断电又上电的现象。

而相关技术为了解决上述问题,通常会采用background模式进行cpld升级。background模式为指在下载刷新的几秒内,老代码不停止运行,直到刷新完成的时刻即新逻辑代码运行的时刻,老逻辑代码停止。由于下载刷新cpld需要大约几秒的时间,非background模式,在下载刷新的几秒的时间内,老逻辑代码就停止运行了,刷新完成后,新逻辑代码开始运行,若老代码停止运行时所处的状态和新代码开始运行时所处的状态不为同一个状态,仍然无法解决上述问题。



技术实现要素:

本公开实施例提供了一种cpld在线升级方法、装置及系统,在cpld在线升级过程中,有效避免出现系统重启现象,不影响存储系统的正常业务运行,有利于提升存储系统的可靠性和稳定性。

为解决上述技术问题,本发明实施例提供以下技术方案:

本发明实施例一方面提供了一种cpld在线升级系统,包括待升级cpld、辅助cpld、设置在所述待升级cpld与所述辅助cpld之间的信息传输通道、及设置在所述待升级cpld与bmc之间的第一gpio;所述待升级cpld和所述辅助cpld均与控制芯片相连;

所述待升级cpld用于在接收到所述bmc通过所述第一gpio发送的升级信号后,将当前所处的第一状态信息通过所述信息传输通道发送至所述辅助cpld,并将与所述控制芯片相连的第一电源使能信号设置为高阻状态;当所述待升级cpld下载刷新完成后,向所述辅助cpld发送正常运行信号,将所述第一电源使能信号恢复为低阻状态,并跳转至所述辅助cpld反馈的第二状态信息对应的状态下;

所述辅助cpld用于当接收所述第一状态信息,跳转至所述第一状态信息对应状态下并执行相应任务;当接收所述正常运行信号,向所述待升级cpld发送当前所处的第二状态信息,并将与所述控制芯片相连的第二电源使能信号设置为高阻状态,同时停止逻辑代码运行。

可选的,所述信息传输通道包括第一状态信息传输通道、第二状态信息传输通道、设置在所述待升级cpld与所述辅助cpld之间的第二gpio;

所述第一状态信息通道用于当所述待升级cpld收到升级信号后,向所述辅助cpld发送当前所处的状态机信息;

所述第二状态信息通道用于当所述辅助cpld收到所述待升级gpld通过所述第二gpio发送的正常运行信号后,向所述待升级gpld发送当前所处的状态机信息。

可选的,所述第一状态信息传输通道和所述第二状态信息传输通道为iic物理总线或uart物理总线。

可选的,所述待升级cpld还用于在向所述辅助cpld发送第一状态信息之后,向所述bmc发送信息同步完成信号,以使所述bmc在接收到所述信息同步完成信号后,对所述待升级cpld执行在线升级操作。

可选的,还包括监控模块;所述待升级cpld还用于同时将所述第一状态信息发送至所述辅助cpld和所述监控模块;所述辅助cpld收到所述待升级cpld反馈的状态机信息后,将所述状态机信息对应的待跳转状态信息发送至所述监控模块;

所述监控模块用于监测所述第一状态信息和所述待跳转状态信息是否为相同状态,若否,则发送预警提示指令。

可选的,还包括报警器,所述报警器用于当接收到所述预警提示指令后进行报警。

本发明实施例另一方面提供了一种cpld在线升级方法,应用于待升级cpld,包括:

判断是否接收到升级信号;

若是,则将当前所处的第一状态信息发送至辅助cpld,并将与控制芯片相连的第一电源使能信号设置为高阻状态;

当检测到升级软件下载刷新完成后,向所述辅助cpld发送正常运行信号;

当接收到所述辅助cpld反馈的第二状态信息,跳转至所述第二状态信息对应的状态下并执行相应任务,同时将所述第一电源使能信号恢复为低阻状态。

本发明实施例还提供了一种cpld在线升级装置,应用于待升级cpld,包括:

升级信号监测模块,用于监测是否接收到升级信号;

状态信息发送模块,用于若接收到升级信号,则将当前所处的第一状态信息发送至辅助cpld;

正常运行通知模块,用于当检测到升级软件下载刷新完成后,向所述辅助cpld发送正常运行信号;

主状态执行模块,用于当接收到所述辅助cpld反馈的第二状态信息,跳转至所述第二状态信息对应的状态下并执行相应任务;

第一使能信号状态设置模块,用于若接收到升级信号,则将与控制芯片相连的第一电源使能信号设置为高阻状态;若当接收到所述辅助cpld反馈的第二状态信息,则将所述第一电源使能信号恢复为低阻状态。

本发明实施例再一方面提供了一种cpld在线升级方法,应用于辅助cpld,包括:

当接收到第一状态信息,跳转至所述第一状态信息对应状态下并执行相应任务;所述第一状态信息为待升级cpld在接收到升级信号后发送的所述待升级cpld当前所处的状态信息;

当接收正常运行信号,向所述待升级cpld发送当前所处的第二状态信息;所述正常运行信号为所述待升级cpld在升级软件下载刷新完成后发送的通知信息;

将与控制芯片相连的第二电源使能信号设置为高阻状态,同时停止逻辑代码运行。

本发明实施例还提供了一种cpld在线升级装置,应用于辅助cpld,包括:

从状态执行模块,用于当接收到第一状态信息,跳转至所述第一状态信息对应状态下并执行相应任务;所述第一状态信息为待升级cpld在接收到升级信号后发送的所述待升级cpld当前所处的状态信息;

状态信息反馈模块,用于当接收正常运行信号,向所述待升级cpld发送当前所处的第二状态信息;所述正常运行信号为所述待升级cpld在升级软件下载刷新完成后发送的通知信息;

第二使能信号状态设置模块,用于当接收正常运行信号,将与控制芯片相连的第二电源使能信号设置为高阻状态,同时停止逻辑代码运行。

本申请提供的技术方案的优点在于,在控制器主板上额外添加一个辅助cpld和该辅助cpld与相关器件间进行数据交互的数据传输通道。在对cpld执行软件升级前,待升级cpld和辅助cpld进行数据同步更新,利用辅助cpld接替待升级cpld继续执行相关任务;当升级完成后,辅助cpld和原待升级cpld再次进行数据同步,使得待升级cpld接替辅助cpld继续执行相应任务,从而使得cpld的控制逻辑正常运行,在控制器层面上,感知不到待升级cpld被替换,被cpld控制的芯片也照常被控制运行,从而实现在cpld在线升级过程中,有效避免系统出现重启现象,不会影响存储系统的软件集群和正常业务运行,有利于提升存储系统的可靠性和稳定性。

此外,本发明实施例还针对cpld在线升级系统提供了相应的实现方法和装置,进一步使得所述系统更具有可行性,所述方法和装置具有相应的优点。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。

附图说明

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

图1为本发明实施例提供的一个示例性应用场景的流程示意图;

图2为本发明实施例提供的cpld在线升级系统的一种具体实施方式结构图;

图3为本发明实施例提供的cpld在线升级交互流程示意图;

图4为本发明实施例提供的cpld在线升级系统的另一种具体实施方式结构图;

图5为本发明实施例提供的一种cpld在线升级方法的流程示意图;

图6为本发明实施例提供的cpld在线升级装置的一种具体实施方式结构图;

图7为本发明实施例提供的另一种cpld在线升级方法的流程示意图;

图8为本发明实施例提供的cpld在线升级装置的另一种具体实施方式结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。

在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。

首先参见图2和图3,图2为本发明实施例提供的cpld在线升级系统在一种具体实施方式下的框架结构示意图,图3为cpld在线升级过程中待升级cpld和辅助cpld之间的逻辑流程示意图,本发明实施例可包括以下内容:

cpld在线升级系统可包括待升级cpld1、辅助cpld2、设置在待升级cpld与辅助cpld之间的信息传输通道3、及设置在待升级cpld与bmc之间的第一gpio4。待升级cpld和辅助cpld均与控制芯片相连,控制芯片可为1个,也可为多个,可根据实际应用场景中待升级cpld在存储系统中控制的芯片个数决定。第一gpio4可为任何一种gpio(general-purposeinput/output,通用输入/输出口),本申请对此不做任何限定。

在本申请中,待升级cpld1用于在接收到bmc通过第一gpio4发送的升级信号后,将当前所处的第一状态信息通过信息传输通道3发送至辅助cpld2。由于控制芯片通常为一个输出一个输入,为了避免信号处理出错以及信号信号复杂性,可仅仅将控制芯片与当前负责控制其的cpld相连,在辅助cpld2接替待升级cpld1执行任务时,也就是待升级cpld1处于软件升级过程中,可将其与控制芯片相连的第一电源使能信号设置为高阻状态。当检测到待升级cpld下载刷新完成后,待升级cpld1向辅助cpld2发送正常运行信号,等待辅助cpld2反馈其当前所处的第二状态信息,待升级cpld1在升级完成后到接收到辅助cpld反馈的第二状态信息这段时间内,可处于某个固定状态,当接收到辅助cpld2反馈的第二状态信息后,从该固定状态下跳转至第二状态信息对应的状态下,并执行该状态对应的任务,同时在接收到第二状态信息时将第一电源使能信号恢复为低阻状态。

在本发明实施例中,辅助cpld2在没有接收到第一状态信息之前,可以一直处于一个固定状态下,当其接收第一状态信息,从该固定状态下跳转至第一状态信息对应状态下,并执行该状态相应任务。当接收待升级cpld1发送的正常运行信号的通知信息后,向待升级cpld1发送当前所处的第二状态信息,并将与控制芯片相连的第二电源使能信号设置为高阻状态,同时停止逻辑代码运行,还可跳转至固定状态下。

基于图1所示的系统结构,为了使本领域技术人员更加清楚明白本申请技术方案,结合图3所示的流程图,本申请还以示意性例子阐述本申请技术方案,具体可包括:

待升级cpld1实时监测bmc发出的升级信号,如果有效,则将第一状态信息发给辅助cpld2。辅助cpld2在收到自己的复位有效信后,一直处于“状态0”。在“状态0”下循环检测是否收到第一状态信息,如果收到第一状态信息,则直接根据第一状态信息跳到相应的状态下,在相应的状态下执行此状态要做的“事情”。比如跳到“状态2”,做完“状态2”下的事情后,发现“条件2”满足了,则会继续往下执行,跳到“状态3”,从而使得cpld的控制逻辑正常运行,在控制器层面上,感知不到待升级cpld1被替换。当待升级cpld1完成刷新后,待升级cpld1会向辅助cpld2下发“正常运行信号”。辅助cpld2也会将当前的状态信息发给待升级cpld1,同时停止自己的逻辑代码运行,并跳回到“状态0”,同时将控制芯片相连的电源使能信号设为高阻,使得控制芯片同时刻只有一个cpld能有输出。待升级cpld1在“状态0”下,接到了辅助cpld2反馈的状态信息后,也会根据该状态信息执行相应的状态跳转,从而实现cpld的新旧逻辑无缝衔接,保证存储系统的业务正常运行。

在本发明实施例提供的技术方案中,在控制器主板上额外添加一个辅助cpld和该辅助cpld与相关器件间进行数据交互的数据传输通道。在对cpld执行软件升级前,待升级cpld和辅助cpld进行数据同步更新,利用辅助cpld接替待升级cpld继续执行相关任务;当升级完成后,辅助cpld和原待升级cpld进行数据同步,使得待升级cpld接替辅助cpld继续执行相应任务,从而使得cpld的控制逻辑正常运行,在控制器层面上,感知不到主cpld被替换,被cpld控制的芯片也照常运行,从而实现在cpld在线升级过程中,有效避免系统出现重启现象,不会影响存储系统的软件集群和正常业务运行,有利于提升存储系统的可靠性和稳定性。

作为一种可选的实施方式,为了使整个系统的信号处理更加简洁,避免发生信号紊乱现象,信息传输通道2可包括第一状态信息传输通道、第二状态信息传输通道、设置在待升级cpld与辅助cpld之间的第二gpio。第一状态信息通道用于当待升级cpld收到升级信号后,向辅助cpld发送当前所处的状态机信息;第二状态信息通道用于当辅助cpld收到待升级gpld通过第二gpio发送的正常运行信号后,向待升级gpld发送当前所处的状态机信息。

其中,第一状态信息传输通道和第二状态信息传输通道可为iic物理总线或uart物理总线,当然,也可为其他物理总线,本申请对此不作任何限定。

可以理解的是,待升级cpld1和辅助cpld2之间的数据同步需要一定的时间,若在辅助cpld2还未开始执行待升级cpld1的状态信息时,bmc便对待升级cpld1进行升级,可能会导致系统出现断电后又重新上电的现象。基于此,待升级cpld1还可用于在向辅助cpld2发送第一状态信息之后,向bmc发送信息同步完成信号,以使bmc在接收到信息同步完成信号后,对待升级cpld执行在线升级操作。

作为另一种可选的实施方式,考虑到存在信号传输错误或网络错误等外在因素,而存储系统运行的业务无法容忍出现断电现象,为了缓解由于外在原因导致信息同步不一致的现象,请参阅图4,所述装置例如还包括监控模块5。在系统包含监控模块5的基础上,待升级cpld1还可用于同时将第一状态信息发送至辅助cpld2和监控模块5;辅助cpld2收到待升级cpld1反馈的状态机信息后,将状态机信息对应的待跳转状态信息发送至监控模块5。监控模块5可通过监测第一状态信息和待跳转状态信息是否为相同状态实现对待升级cpld1和辅助cpld2数据不同步的监测,有利于进一步提高存储系统的稳定性和可靠性。在监控模块5检测到第一状态信息和待跳转状态信息不为相同状态时,可向报警器发送预警提示指令,并同时将当前运行状态日志信息打包存储并进行反馈,以便相关工作人员及时维护。相应的,所述系统还可包括报警器6,报警器6用于当接收到预警提示指令后进行报警。

本发明实施例还针对cpld在线升级系统提供了相应的实现方法,进一步使得所述系统更具有可行性。下面对本发明实施例提供的cpld在线升级方法进行介绍,下文描述的cpld在线升级方法与上文描述的cpld在线升级系统可相互对应参照。

请参见图5,图5为本发明实施例提供的一种cpld在线升级方法的流程示意图,应用于存储系统的待升级cpld,本发明实施例可包括以下内容:

s501:判断是否接收到升级信号,若是,则执行s502。

s502:将当前所处的第一状态信息发送至辅助cpld,并将与控制芯片相连的第一电源使能信号设置为高阻状态。

s503:判断升级软件下载刷新是否完成,若是,则执行s504。

s504:向辅助cpld发送正常运行信号。

s505:判断是否接收到辅助cpld发送的第二状态信息,若是,则执行s506。

s506:跳转至第二状态信息对应的状态下并执行相应任务,同时将第一电源使能信号恢复为低阻状态。

由于本发明实施例与上述系统内的各单元之间的信息交互、执行过程等内容基于同一构思,该方法实施例的具体内容可参见上述系统实施例中的叙述,此处,便不再赘述。

由上可知,本发明实施例在cpld在线升级过程中,有效避免出现系统重启现象,不影响存储系统的正常业务运行,有利于提升存储系统的可靠性和稳定性。

此外,请参见图7,图7为本发明实施例提供的另一种cpld在线升级方法的流程示意图,本发明实施例应用于存储系统的辅助cpld,具体的可包括以下内容:

s701:判断是否接收到第一状态信息,若是,则执行s702。

其中,第一状态信息为待升级cpld在接收到升级信号后发送的待升级cpld当前所处的状态信息。

s702:跳转至第一状态信息对应状态下并执行相应任务。

s703:判断是否接收正常运行信号,若是,则执行s704。

其中,正常运行信号为待升级cpld在升级软件下载刷新完成后发送的通知信息。

s704:向待升级cpld发送当前所处的第二状态信息。

s705:将与控制芯片相连的第二电源使能信号设置为高阻状态,同时停止逻辑代码运行。

由于本发明实施例与上述系统内的各单元之间的信息交互、执行过程等内容基于同一构思,该方法实施例的具体内容可参见上述系统实施例中的叙述,此处,便不再赘述。

由上可知,本发明实施例在cpld在线升级过程中,有效避免出现系统重启现象,不影响存储系统的正常业务运行,有利于提升存储系统的可靠性和稳定性。

本发明实施例还针对cpld在线升级方法提供了相应的实现装置,进一步使得所述方法更具有实用性。下面对本发明实施例提供的cpld在线升级装置进行介绍,下文描述的cpld在线升级装置与上文描述的cpld在线升级方法可相互对应参照。

请参阅图6,图6为本发明实施例提供的cpld在线升级装置在一种具体实施方式下的结构图,应用于待升级cpld,该装置可包括:

升级信号监测模块601,用于监测是否接收到升级信号。

状态信息发送模块602,用于若接收到升级信号,则将当前所处的第一状态信息发送至辅助cpld。

正常运行通知模块603,用于当检测到升级软件下载刷新完成后,向辅助cpld发送正常运行信号。

主状态执行模块604,用于当接收到辅助cpld反馈的第二状态信息,跳转至第二状态信息对应的状态下并执行相应任务。

第一使能信号状态设置模块605,用于若接收到升级信号,则将与控制芯片相连的第一电源使能信号设置为高阻状态;若当接收到辅助cpld反馈的第二状态信息,则将第一电源使能信号恢复为低阻状态。

此外,请参阅图8,图8为本发明实施例提供的cpld在线升级装置在另一种具体实施方式下的结构图,应用于辅助cpld,包括:

从状态执行模块801,用于当接收到第一状态信息,跳转至第一状态信息对应状态下并执行相应任务;第一状态信息为待升级cpld在接收到升级信号后发送的待升级cpld当前所处的状态信息;

状态信息反馈模块802,用于当接收正常运行信号,向待升级cpld发送当前所处的第二状态信息;正常运行信号为待升级cpld在升级软件下载刷新完成后发送的通知信息;

第二使能信号状态设置模块803,用于当接收正常运行信号,将与控制芯片相连的第二电源使能信号设置为高阻状态,同时停止逻辑代码运行。

本发明实施例所述cpld在线升级装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例在cpld在线升级过程中,有效避免出现系统重启现象,不影响存储系统的正常业务运行,有利于提升存储系统的可靠性和稳定性。

本发明实施例还提供了一种cpld在线升级设备,具体可包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序以实现如上任意一实施例所述cpld在线升级方法的步骤。

本发明实施例所述cpld在线升级设备的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

本发明实施例还提供了一种计算机可读存储介质,存储有cpld在线升级程序,所述cpld在线升级程序被处理器执行时如上任意一实施例所述cpld在线升级方法的步骤。该存储介质可以为u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例所述计算机可读存储介质的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种cpld在线升级方法、装置及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本公开进行若干改进和修饰,这些改进和修饰也落入本公开权利要求的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1