掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及计算机技术领域,更具体的说是涉及一种CPLD固件的更新方法、系统、装置及存储介质。

背景技术

近年来,随着互联网时代的发展,对海量数据处理能力的需求正在快速增长,从而对服务器提出了更高的要求,作为服务器产业的原始动力,先进技术的应用于对于用户采购会起到决定性的作用,在网络技术、虚拟化技术、分布式应用快速发展的今天,对服务器要求的可用性,可靠性,可服务性的指标越来越高。金融服务、电信服务已经成为经济社会生活随时随地不可或缺的要素,金融、电信业务的正常运转高度依赖于信息系统的持续稳定运行,对服务器功能的多样性提出了更高的要求。

在服务器中,CPLD是一种功能强大的可编程的服务器硬件,用户可通过CPLD根据自身需要自行构造逻辑功能。CPLD功能的实现是通过固件完成的,因此,CPLD固件的好坏也就决定着CPLD的功能及性能。因为业务功能的需要以及CPLD固件自身的不完善,在实际应用中,CPLD固件需要根据实际功能不断更新,并且还需要修复自身Bug或支持新功能。

当前,普遍采用的CPLD固件更新方法包括:将BMC与CPLD通过I2C总线进行连接,通过BMC与CPLD建立的通信协议进行刷新操作。或者是通过硬件引出的I2C跳线,直接通过CPLD治具进行烧录。

但是,如果在客户现场调试的时候出现无法登录web的情况,通过BMC与CPLD建立的通信协议进行刷新操作的方法就无法执行;而采用CPLD治具烧录的方法,虽然操作简单,但是需要工作人员随时携带CPLD治具,另外,反复插拔焊接CPLD芯片,容易造成芯片损害。

发明内容

针对以上问题,本发明的目的在于提供一种CPLD固件的更新方法、系统、装置及存储介质,能够通过BIOS setup实现CPLD固件的自动更新。

本发明为实现上述目的,通过以下技术方案实现:

第一方面,本发明公开了一种CPLD固件的更新方法,包括:

通过BIOS将CPLD固件存储在BIOS固件卷中,并定义一个GPIO接口,作为更新判定接口;

开机启动BIOS后,判断更新判定接口的电平高低;

如果更新判定接口为高电平,将BIOS固件卷中存储的CPLD固件复制到暂存空间内,并对其进行校验,校验结果记为A;

通过BMC对暂存空间内存储的CPLD固件进行校验,校验结果记为B;

通过BMC对A和B进行比对;

如果A和B一致,通过BMC将暂存空间内存储的CPLD固件写入CPLD;

写入完成后,通过BIOS显示更新完成信息。

进一步,所述通过BIOS将CPLD固件存储在BIOS固件卷中,包括:BIOS将CPLD固件存储在BIOS ROM的预设空间内;其中,预设空间的地址范围为0xA00000—0xB00000。

进一步,所述将BIOS固件卷中存储的CPLD固件复制到暂存空间内,并对其进行校验,校验结果记为A,包括:

将BIOS固件卷中存储的CPLD固件复制到用于与BMC通信访问的SRAM暂存区域块中;

BIOS对SRAM暂存区域块中的内容进行校验,生成总和校验码A。

进一步,所述通过BMC对暂存空间内存储的CPLD固件进行校验,校验结果记为B,包括:

BIOS通过IPMI接口将总和校验码A发送给BMC,并向BMC发出校验命令;

BMC收到校验命令后,对SRAM暂存区域块中的内容进行校验,生成总和校验码B。

进一步,所述通过BMC将暂存空间内存储的CPLD固件写入CPLD,包括:通过BIOS发送IPMI命令给BMC,以启动CPLD固件更新操作;

BMC通过I2C协议将SRAM暂存区域块中的内容写入CPLD。

进一步,所述写入完成后,通过BIOS显示更新完成信息,包括:

写入完成后,BMC通过IPMI命令向BIOS发送反馈信息;

BIOS收到反馈信息后,将反馈信息显示到启动界面,提示CPLD固件更新完成,并继续执行启动流程。

进一步,所述方法还包括:

如果更新判定接口为低电平,则继续执行启动流程。

第二方面,本发明还公开了一种CPLD固件的更新系统,包括:

准备单元,用于通过BIOS将CPLD固件存储在BIOS固件卷中,并定义一个GPIO接口,作为更新判定接口;

判定单元,用于开机启动BIOS后,判断更新判定接口的电平高低;

转存校验单元,用于当更新判定接口为高电平时,将BIOS固件卷中存储的CPLD固件复制到暂存空间内,并对其进行校验,校验结果记为A;

二次校验单元,用于通过BMC对暂存空间内存储的CPLD固件进行校验,校验结果记为B;

比对单元,用于通过BMC对A和B进行比对;

固件写入单元,用于当A和B一致时,通过BMC将暂存空间内存储的CPLD固件写入CPLD;

更新信息显示单元,用于写入完成后,通过BIOS显示更新完成信息。

第三方面,本发明公开了一种CPLD固件的更新装置,包括:

存储器,用于存储CPLD固件的更新程序;

处理器,用于执行所述CPLD固件的更新程序时实现如上文任一项所述CPLD固件的更新方法的步骤。

第四方面,本发明公开了一种可读存储介质,所述可读存储介质上存储有CPLD固件的更新程序,所述CPLD固件的更新程序被处理器执行时实现如上文任一项所述CPLD固件的更新方法的步骤。

对比现有技术,本发明有益效果在于:本发明根据BIOS ROM芯片存储空间相对较大的优点,并结合硬件接口特性与BMC交互的特点,将CPLD固件文件内嵌到BIOS固件卷中,再通过硬件的GPIO接口电位高低,来判断CPLD固件是否要更新。如果需要进行更新,通过IPMI命令发送更新CPLD固件的信息给BMC,BMC通过拷贝相应的CPLD固件存储区域,通过I2C协议对CPLD的固件进行更新。本发明可以在CPLD固件出现异常后,在BIOS界面就可以对CPLD进行更新的操作。极大的方便了客户现场调试的进度,提高了项目开发的易用性。

由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。

附图说明

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

图1是本发明具体实施方式的方法流程图。

图2是本发明具体实施方式的系统结构图。

图中,1、准备单元;2、判定单元;3、转存校验单元;4、二次校验单元;5、比对单元;6、固件写入单元;7、更新信息显示单元。

具体实施方式

本发明的核心是提供一种CPLD固件的更新方法,现有技术中,普遍采用将BMC与CPLD通过I2C总线进行连接,通过BMC与CPLD建立的通信协议进行刷新操作。或者是通过硬件引出的I2C跳线,直接通过CPLD治具进行烧录。但是,如果在客户现场调试的时候出现无法登录web的情况,通过BMC与CPLD建立的通信协议进行刷新操作的方法就无法执行;而采用CPLD治具烧录的方法,虽然操作简单,但是需要工作人员随时携带CPLD治具,另外,反复插拔焊接CPLD芯片,容易造成芯片损害。

而本发明提供的CPLD固件的更新方法,首先,根据BIOS ROM芯片存储空间相对较大的优点,并结合硬件接口特性与BMC交互的特点,将CPLD固件文件内嵌到BIOS固件卷中。然后,通过硬件的GPIO接口电位高低,来判断CPLD固件是否要更新。如果需要进行更新,通过IPMI命令发送更新CPLD固件的信息给BMC,BMC通过拷贝相应的CPLD固件存储区域,通过I2C协议对CPLD的固件进行更新。由此可见,本发明能够通过BIOS setup实现CPLD固件的自动更新,极大的方便了客户现场调试的进度,提高了项目开发的易用性。

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

参见图1所示,本申请的实施例公开了一种CPLD固件的更新方法,可应用与AMD服务器中,具体包括如下步骤:

S1:通过BIOS将CPLD固件存储在BIOS固件卷中,并定义一个GPIO接口,作为更新判定接口。

需要特别说明的是,目前BIOS ROM的空间为32M以上,由于BIOS ROM还有很多为未使用的空间,而CPLD固件文件的大小仅为1M左右,BIOS完全可以将CPLD固件文件存放在一块FV ROM的区域中。

基于此,在具体的实施方式中,BIOS将CPLD固件存储在BIOS ROM的预设空间内;其中,预设空间的地址范围为0xA00000—0xB00000。

另外,BIOS与硬件定义一个GPIO C的电位高低,作为是否使用BIOS中包含的CPLD文件内容的判定信号,如果是高电位,就是使用BIOS中存储的CPLD固件文件,如果是低电位,就不做动作。

S2:开机启动BIOS后,判断更新判定接口的电平高低。

S3:如果更新判定接口为高电平,将BIOS固件卷中存储的CPLD固件复制到暂存空间内,并对其进行校验,校验结果记为A。

在具体实施方式中,当更新判定接口为高电平时,首先将BIOS固件卷中存储的CPLD固件复制到用于与BMC通信访问的SRAM暂存区域块中;然后,BIOS对SRAM暂存区域块中的内容进行校验,生成总和校验码A。

在具体实施方式中,BIOS收到高电平电位后,将BIOS ROM芯片的0xA00000(10MB)-0xB00000(11MB)处存储的信息拷贝至与BMC通信互通的访问SRAM暂存区域块,BIOS对此块区域内容进行校验,得到checksum码为A。

S4:通过BMC对暂存空间内存储的CPLD固件进行校验,校验结果记为B。

在具体实施方式中,首先BIOS通过IPMI接口将总和校验码A发送给BMC,并向BMC发出校验命令;BMC收到校验命令后,对SRAM暂存区域块中的内容进行校验,生成总和校验码B。

也就是说,在本步骤中,校验结果A通过IPMI发送给BMC,同时通知BMC也对此SRAM暂存区域块的内容进行校验,得到checksum码B。

S5:通过BMC对A和B进行比对。

在具体实施方式中,BMC将checksum码B与BIOS得到的checksum码A进行一致性比对。

S6:如果A和B一致,通过BMC将暂存空间内存储的CPLD固件写入CPLD。

在具体实施方式中,一致性比对通过后,首先通过BIOS发送IPMI命令给BMC,以启动CPLD固件更新操作;然后由BMC通过I2C协议将SRAM暂存区域块中的内容写入CPLD。

S7:写入完成后,通过BIOS显示更新完成信息。

在具体实施方式中,写入完成后,BMC通过IPMI命令向BIOS发送反馈信息;BIOS收到反馈信息后,将反馈信息显示到启动界面,提示CPLD固件更新完成,并继续执行启动流程。

另外,需要特别说明的是,在本方法中,如果更新判定接口为低电平,则继续执行启动流程。如果校验结果A和B的一致性比对结果为不一致,则跳出CPLD的刷新流程,同样继续执行启动流程。

本实施例提供了一种CPLD固件的更新方法,根据BIOS ROM芯片存储空间相对较大的优点,并结合硬件接口特性与BMC交互的特点,将CPLD固件文件内嵌到BIOS固件卷中,再通过硬件的GPIO接口电位高低,来判断CPLD固件是否要更新。如果需要进行更新,通过IPMI命令发送更新CPLD固件的信息给BMC,BMC通过拷贝相应的CPLD固件存储区域,通过I2C协议对CPLD的固件进行更新。本方法能够通过BIOS setup实现CPLD固件的自动更新,极大的方便了客户现场调试的进度,提高了项目开发的易用性。

需要特别指出的是,上述CPLD固件的更新方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于CPLD固件的更新方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在实施例之上。

参见图2所示,本发明还公开了一种CPLD固件的更新系统,包括:准备单元1、判定单元2、转存校验单元3、二次校验单元4、比对单元5、固件写入单元6和更新信息显示单元7。

准备单元1,用于通过BIOS将CPLD固件存储在BIOS固件卷中,并定义一个GPIO接口,作为更新判定接口。

作为示例的,准备单元1具体用于:通过BIOS将CPLD固件存储在BIOS ROM的预设空间内;其中,预设空间的地址范围为0xA00000—0xB00000。

判定单元2,用于开机启动BIOS后,判断更新判定接口的电平高低。

转存校验单元3,用于当更新判定接口为高电平时,将BIOS固件卷中存储的CPLD固件复制到暂存空间内,并对其进行校验,校验结果记为A。

作为示例的,转存校验单元3具体用于:当更新判定接口为高电平时,将BIOS固件卷中存储的CPLD固件复制到用于与BMC通信访问的SRAM暂存区域块中;通过BIOS对SRAM暂存区域块中的内容进行校验,生成总和校验码A。

二次校验单元4,用于通过BMC对暂存空间内存储的CPLD固件进行校验,校验结果记为B。

作为示例的,二次校验单元4具体用于:利用BIOS通过IPMI接口将总和校验码A发送给BMC,并向BMC发出校验命令;BMC收到校验命令后,对SRAM暂存区域块中的内容进行校验,生成总和校验码B。

比对单元5,用于通过BMC对A和B进行比对。

固件写入单元6,用于当A和B一致时,通过BMC将暂存空间内存储的CPLD固件写入CPLD。

作为示例的,固件写入单元6具体用于:一致性比对通过后,通过BIOS发送IPMI命令给BMC,以启动CPLD固件更新操作;并由BMC通过I2C协议将SRAM暂存区域块中的内容写入CPLD。

更新信息显示单元7,用于写入完成后,通过BIOS显示更新完成信息。

作为示例的,更新信息显示单元7具体用于:写入完成后,利用BMC通过IPMI命令向BIOS发送反馈信息;BIOS收到反馈信息后,将反馈信息显示到启动界面,提示CPLD固件更新完成,并继续执行启动流程。

本实施例提供了一种CPLD固件的更新系统,能够通过BIOS ROM中内嵌CPLD芯片的固件信息,通过GPIO电位高低来决定是否要进行更新CPLD更新,确认更新后,利用BIOS再拷贝存放在BIOS ROM的CPLD固件到BMC与BIOS共享的SRAM区域。BIOS发送ipmi命令给BMC提示要更新,BMC收到指令后,拷贝与BIOS商议的SRAM区域,通过I2C协议BMC将此SRAM写入CPLD芯片,完成更新后,BMC再反馈更新完成的信息,BIOS收到信息后显示在post界面。

本发明还公开了一种CPLD固件的更新装置,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的CPLD固件的更新程序时实现以下步骤:

1、通过BIOS将CPLD固件存储在BIOS固件卷中,并定义一个GPIO接口,作为更新判定接口。

2、开机启动BIOS后,判断更新判定接口的电平高低。

3、如果更新判定接口为高电平,将BIOS固件卷中存储的CPLD固件复制到暂存空间内,并对其进行校验,校验结果记为A。

4、通过BMC对暂存空间内存储的CPLD固件进行校验,校验结果记为B。

5、通过BMC对A和B进行比对。

6、如果A和B一致,通过BMC将暂存空间内存储的CPLD固件写入CPLD。

7、写入完成后,通过BIOS显示更新完成信息。

在具体实施方式中,所述通过BIOS将CPLD固件存储在BIOS固件卷中,包括:BIOS将CPLD固件存储在BIOS ROM的预设空间内;其中,预设空间的地址范围为0xA00000—0xB00000。

在具体实施方式中,所述将BIOS固件卷中存储的CPLD固件复制到暂存空间内,并对其进行校验,校验结果记为A,包括:将BIOS固件卷中存储的CPLD固件复制到用于与BMC通信访问的SRAM暂存区域块中;BIOS对SRAM暂存区域块中的内容进行校验,生成总和校验码A。

在具体实施方式中,所述通过BMC对暂存空间内存储的CPLD固件进行校验,校验结果记为B,包括:BIOS通过IPMI接口将总和校验码A发送给BMC,并向BMC发出校验命令;BMC收到校验命令后,对SRAM暂存区域块中的内容进行校验,生成总和校验码B。

在具体实施方式中,如果更新判定接口为低电平,则继续执行启动流程。

在具体实施方式中,所述通过BMC将暂存空间内存储的CPLD固件写入CPLD,包括:通过BIOS发送IPMI命令给BMC,以启动CPLD固件更新操作;BMC通过I2C协议将SRAM暂存区域块中的内容写入CPLD。

在具体实施方式中,所述写入完成后,通过BIOS显示更新完成信息,包括:写入完成后,BMC通过IPMI命令向BIOS发送反馈信息;BIOS收到反馈信息后,将反馈信息显示到启动界面,提示CPLD固件更新完成,并继续执行启动流程。

需要特别说明的是,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的CPLD固件的更新方法对应的程序指令/模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的CPLD固件的更新方法。

存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据CPLD固件的更新的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

进一步的,本实施例中的CPLD固件的更新装置,还可以包括:

输入接口,用于获取外界导入的CPLD固件的更新程序,并将获取到的CPLD固件的更新程序保存至所述存储器中,还可以用于获取外界终端设备传输的各种指令和参数,并传输至处理器中,以便处理器利用上述各种指令和参数展开相应的处理。本实施例中,所述输入接口具体可以包括但不限于USB接口、串行接口、语音输入接口、指纹输入接口、硬盘读取接口等。

输出接口,用于将处理器产生的各种数据输出至与其相连的终端设备,以便于与输出接口相连的其他终端设备能够获取到处理器产生的各种数据。本实施例中,所述输出接口具体可以包括但不限于USB接口、串行接口等。

通讯单元,用于在CPLD固件的更新装置和外部服务器之间建立远程通讯连接,以便于CPLD固件的更新装置能够将镜像文件挂载到外部服务器中。本实施例中,通讯单元具体可以包括但不限于基于无线通讯技术或有线通讯技术的远程通讯单元。

键盘,用于获取用户通过实时敲击键帽而输入的各种参数数据或指令。

显示器,用于运行服务器供电线路短路定位过程的相关信息进行实时显示。

鼠标,可以用于协助用户输入数据并简化用户的操作。

本发明还公开了一种可读存储介质,这里所说的可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动硬盘、CD-ROM或技术领域内所公知的任意其他形式的存储介质。可读存储介质中存储有CPLD固件的更新程序,所述CPLD固件的更新程序被处理器执行时实现以下步骤:

1、通过BIOS将CPLD固件存储在BIOS固件卷中,并定义一个GPIO接口,作为更新判定接口。

2、开机启动BIOS后,判断更新判定接口的电平高低。

3、如果更新判定接口为高电平,将BIOS固件卷中存储的CPLD固件复制到暂存空间内,并对其进行校验,校验结果记为A。

4、通过BMC对暂存空间内存储的CPLD固件进行校验,校验结果记为B。

5、通过BMC对A和B进行比对。

6、如果A和B一致,通过BMC将暂存空间内存储的CPLD固件写入CPLD。

7、写入完成后,通过BIOS显示更新完成信息。

综上所述,本发明能够通过BIOS setup实现CPLD固件的自动更新,极大的方便了客户现场调试的进度,提高了项目开发的易用性。

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

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

在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。

同理,在本发明各个实施例中的各处理单元可以集成在一个功能模块中,也可以是各个处理单元物理存在,也可以两个或两个以上处理单元集成在一个功能模块中。

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

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

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

技术分类

06120115993837