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

基于BMC固件实现电源芯片程序自动升级的方法及系统

文献发布时间:2024-04-18 20:01:30


基于BMC固件实现电源芯片程序自动升级的方法及系统

技术领域

本发明涉及一种电源芯片程序升级方法,尤其涉及一种基于BMC固件实现电源芯片程序自动升级的方法,并进一步涉及采用了该基于BMC固件实现电源芯片程序自动升级的方法的系统。

背景技术

BMC指的是基板管理控制器,是一个独立的控制系统,不依赖于系统上的CPU和内存等其它硬件,也不依赖与BIOS操作系统和OS(OperatingSystem)操作系统等。但是BMC向上可以与BIOS操作系统和OS操作系统交互,向下控制着主板对服务器各个部件的温度、电压等健康状态的检测,服务器各个部件包括且不限于CPU、内存、硬盘、风扇和机框等。其中,CPU的电压供电是相当重要的,由于CPU的供电电压有很多不同的参数要求,如果通过一路、一路的外部硬件方式进行设计,硬件设计会相当复杂,因此如何设计一种新的电源芯片程序自动升级方法,对于降低产品的成本和减少量产时间,是非常有必要的。

发明内容

本发明所要解决的技术问题是需要提供一种基于BMC固件实现电源芯片程序自动升级的方法,旨在能够基于BMC固件实现对电源芯片程序自动升级,以便大大的减少量产时间,减少繁琐的升级步骤,节约时间成本和生产成本。在此基础上,本发明还进一步提供采用了该基于BMC固件实现电源芯片程序自动升级的方法的系统。

对此,本发明提供一种基于BMC固件实现电源芯片程序自动升级的方法,包括以下步骤:

步骤S1,创建烧录电源芯片的进程程序;

步骤S2,读取所述进程程序的字节参数,判断电源芯片的烧录是否完成,若完成则退出,否则,跳转至步骤S3;

步骤S3,检测电源管理总线地址是否有效,获取控制芯片的设备ID,并判断所述设备ID与预设的ID配置参数是否一致,直到是,则跳转至步骤S4;

步骤S4,检查控制芯片的写保护寄存器,若使能则禁止RAM内存写保护,然后跳转至步骤S5;若不存在使能则直接跳转至步骤S5;

步骤S5,通过I

步骤S6,当写入操作成功之后,通过读取相应的CRC检验寄存器,并与已有CRC值进行对比,直到验证通过,则拉低VDD电源并持续第一预设时间;

步骤S7,对EEPROM写入已烧录完成的标志;

步骤S8,点亮BMC芯片对应的LED指示灯。

本发明的进一步改进在于,所述步骤S1中,创建烧录电源芯片的进程程序中,在EEPROM器件偏移地址中保存第一字节参数和第二字节参数,其中,所述第一字节参数通过8个bit位代表8个电源芯片是否烧录成功,每个bit位均为0则代表电源芯片烧录成功,如果其中一个bit位为1则代表对应的电源芯片烧录失败;第二字节参数作为备用字节参数。

本发明的进一步改进在于,当所有电源芯片烧录成功时,初始化所述第二字节参数;当电源芯片烧录失败时,通过所述第二字节记录对应的烧录失败信息,并在下一次进入时检测对应的电源芯片烧录情况。

本发明的进一步改进在于,所述步骤S1中,通过0x55参数表示电源芯片烧录失败,通过0x66参数表示电源芯片全部烧录成功。

本发明的进一步改进在于,所述步骤S3中,通过I

本发明的进一步改进在于,所述步骤S4包括以下子步骤:

步骤S401,通过I

步骤S402,如果读出来所述读取寄存器的bit0数据为1,则通过I

本发明的进一步改进在于,所述步骤S5包括以下子步骤:

步骤S501,通过I

步骤S502,将预设的配置参数根据寄存器、寄存器数据以及数据大小一并写入;

步骤S503,重复步骤S501和步骤S502,以实现页码1和页码2的配置参数写入;

步骤S504,通过I

步骤S505,重复上述步骤S501至步骤S502的配置参数写入的过程,并依次修改页码直到切换到页码0x2A,将预设的配置数据对应页码为2的寄存器值写入至页码为2A里,延迟等待第二预设时间。

本发明的进一步改进在于,所述第二预设时间为所述第一预设时间的2倍。

本发明的进一步改进在于,所述第一预设时间为100ms。

本发明还提供一种基于BMC固件实现电源芯片程序自动升级的系统,采用了如上所述的基于BMC固件实现电源芯片程序自动升级的方法,并包括:

进程程序创建模块,用于创建烧录电源芯片的进程程序;

烧录判断模块,读取所述进程程序的字节参数,判断电源芯片的烧录是否完成,若完成则退出,否则,跳转至步骤S3;

地址检测模块,检测电源管理总线地址是否有效,获取控制芯片的设备ID,并判断所述设备ID与预设的ID配置参数是否一致,直到是,则跳转至步骤S4;

写保护检查模块,检查控制芯片的写保护寄存器,若使能则禁止RAM内存写保护,然后跳转至步骤S5;若不存在使能则直接跳转至步骤S5;

写入操作模块,通过I

验证模块,当写入操作成功之后,通过读取相应的CRC检验寄存器,并与已有CRC值进行对比,直到验证通过,则拉低VDD电源并持续第一预设时间;

标志写入模块,对EEPROM写入已烧录完成的标志;

指示模块,点亮BMC芯片对应的LED指示灯。

与现有技术相比,本发明的有益效果在于:提供了完整的基于BMC固件而实现的电源芯片程序自动升级方法,能够大大地减少产品的量产时间,减少繁琐的程序升级步骤,节约时间成本和生产成本;在此基础上,还通过对实现过程的优化设计,便于对异常错误的可控操作,在自动升级中,会对升级错误的芯片重新升级,功能包含纠错能力。

在量产的时候,由于每个PCB电路板的制版存在差异,进而会导致信号不稳定,因此可能会在升级开始时由于读取设备地址失败和出现信号问题等,进而导致升级失败,即烧录失败。对此,本发明在自动升级的过程中还进行了容错设计,当出现烧录失败时,将在下次上电开机的时候自动对烧录失败的电源芯片重新执行升级控制,以便做到100%烧录成功,保证CPU的电源芯片能够全部供电正常。并且,本发明的可扩展性强,对于后面更改寄存器参数等情况,直接更换需要升级的内容即可完成自动升级,更改方便,自动化程度高。

附图说明

图1是本发明一种实施例的工作流程示意图;

图2是本发明一种实施例基于BMC固件的控制拓扑关系示意图;

图3是本发明一种实施例的电压输出电路的电路原理图。

具体实施方式

在本发明的描述中,如果涉及到方位描述,例如“上”、“下”、“前”、“后”、“左”、“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。如果某一特征被称为“设置”、“固定”、“连接”、“安装”在另一个特征,它可以直接设置、固定、连接在另一个特征上,也可以间接地设置、固定、连接、安装在另一个特征上。

在本发明的描述中,如果涉及到“若干”,其含义是一个以上;如果涉及到 “多个”,其含义是两个以上;如果涉及到“大于”、“小于”、“超过”,均应理解为不包括本数;如果涉及到“以上”、“以下”、“以内”,均应理解为包括本数。如果涉及到“第一”、“第二”、“第三”等,应当理解为仅用于相同或是相似技术特征名称的区分,而不能理解为暗示/指明技术特征的相对重要性,不能理解为暗示/指明技术特征的数量,也不能理解为暗示/指明技术特征的先后关系。

下面结合附图,对本发明的较优的实施例作进一步的详细说明。

如图2所示,本实施例优选采用一款MP2856可编程的电源芯片来作为给CPU电压供电的芯片。通过配置MP2856可编程电源芯片的寄存器进而控制电压输出电路,以便输出电压给CPU,所述电压输出电路优选采用MP8700芯片来实现。

MP2856可编程电源芯片是一个双环数字的多相控制器,能够为AMD SVI3平台的核心提供电源。MP2856可编程电源芯片能够与MPS的Intelli-Phase产品配合使用,以最少的外部组件完成多相稳压器(VR)解决方案。MP2856可编程电源芯片能够配置为Rail1最多12相操作,Rail2最多4相操作。MP2857可编程电源芯片提供了一个片上NVM来存储和恢复设备配置。设备配置和故障参数可以通过PMBus/I2C接口轻松编程或监控;可以通过Intelli-Phase产品的CS输出监控和报告输出电流。其框图以及部分电路原理图如图2和图3所示。

对于CPU的电源芯片而言,需要控制的电压较多,比如MP2856这款可编程电源芯片控制电压所对应的寄存器有两百多个,这就代表了有两百多个相应的寄存器可以设置,每个寄存有不同的功能,手动模式下,通过上位机根据不同的参数设置,然后需要一个脱机烧录器进行烧录,这种通过手动模式的设置方式,可以用于简单的测试;但是明显并不适合应用在量产阶段,在量产阶段仍然采用这种简单的手动模式的话,将会大量地浪费时间,影响生产效率和生产成本,并且也不容易判断出各自的升级是否成功。

为此,如图1所示,本实施例提供一种基于BMC固件实现电源芯片程序自动升级的方法,包括以下步骤:

步骤S1,创建烧录电源芯片的进程程序;

步骤S2,读取所述进程程序的字节参数,判断电源芯片的烧录是否完成,若完成则退出,否则,跳转至步骤S3;

步骤S3,检测电源管理总线地址是否有效,获取控制芯片的设备ID,并判断所述设备ID与预设的ID配置参数是否一致,直到是,则跳转至步骤S4;

步骤S4,检查控制芯片的写保护寄存器,若使能则禁止RAM内存写保护,然后跳转至步骤S5;若不存在使能则直接跳转至步骤S5;

步骤S5,通过I

步骤S6,当写入操作成功之后,通过读取相应的CRC检验寄存器,并与已有CRC值进行对比,直到验证通过,则拉低VDD电源并持续第一预设时间;

步骤S7,对EEPROM写入已烧录完成的标志,防止下次重新烧录,避免跳转错误或重复操作;

步骤S8,点亮BMC芯片对应的LED指示灯。所述LED指示灯通过BMC芯片进行控制,所述BMC芯片指的是基于BMC固件实现的电源芯片;在烧录成功后点亮该BMC芯片对应的LED指示灯,以便指示器烧录成功状态。

本实施例所述步骤S1中,创建烧录电源芯片的进程程序中,在EEPROM器件偏移地址中保存第一字节参数和第二字节参数,并在BMC固件启动时,首先读取所述第一字节参数和第二字节参数,其中,所述第一字节参数通过8个bit位代表8个电源芯片是否烧录成功,每个bit位均为0则代表电源芯片烧录成功,如果其中一个bit位为1则代表对应的电源芯片烧录失败;第二字节参数作为备用字节参数。

在本实施例中,当所有电源芯片烧录成功时,初始化所述第二字节参数;当电源芯片烧录失败时,所述步骤S1中,通过所述第二字节记录对应的烧录失败信息,优选在所述第二字节中通过0x55参数表示电源芯片烧录失败,并在下一次进入时检测对应的电源芯片烧录情况,以很好地实现了容错设计;并在烧录成功后,通过0x66参数表示电源芯片全部烧录成功,确保做到100%烧录成功,才不会跳转至基于BMC固件实现的电源芯片程序自动升级过程中。

在实际应用中,可以通过读取第一字节参数和第二字节参数来后去烧录是否成功的信息。在所述步骤S2中,读取所述进程程序的字节参数,所述进程程序的字节参数优选包括A参数和B参数,A参数优选用于代表烧录全部成功,B参数优选用于记录部分电源芯片是否烧录成功的标志。当启动烧录电源芯片的线程程序时,则检测A参数是否存在,若存在则表示全部烧录成功,直接退出;若不存在,则会通过B参数检测部分芯片的烧录情况。

本实施例所述步骤S3中,通过I

本实施例所述步骤S4包括以下子步骤:

步骤S401,通过I

步骤S402,如果读出来所述地址为0x35的读取寄存器的bit0数据为1,则通过I

本实施例所述步骤S5用于通过I

更为具体的,本实施例所述步骤S5包括以下子步骤:

步骤S501,通过I

步骤S502,此时在页码0的位置上,需要将预设的配置参数根据寄存器、寄存器数据以及数据大小一并写入;

步骤S503,重复步骤S501和步骤S502,以实现页码1和页码2的配置参数写入;即,在实现页码1的配置参数写入时,先通过I

步骤S504,通过I

步骤S505,重复上述配置参数写入的过程,即重复步骤S501至步骤S502的配置参数写入的过程,并依次修改页码直到切换到页码0x2A,将预设的配置数据对应页码为2的寄存器值写入至页码为2A里,延迟等待第二预设时间。

本实施所述第二预设时间指的是控制芯片的写入操作所对应的延迟时间,该延迟时间可以根据实际需要进行自定义设置和调整;所述第一预设时间为验证通过后拉低VDD电源的持续时间,该持续时间同样可以根据实际需要进行自定义设置和调整。值得说明的是,本实施例所述第二预设时间为所述第一预设时间的2倍,即用于控制芯片的写入操作所预设的延迟时间为验证通过后拉低VDD电源的持续时间的2倍,这样的设计并不是随意设置的,而是可以很好的保证写入操作和验证过程的稳定可靠性,并且,也能够保证自动升级的效率和顺畅程度,不会因为延迟时间或持续时间不合理而出现失败或卡顿等现象。更为优选的,本实施例所述第一预设时间为100ms,所述第二预设时间为200ms。

本实施例还提供一种基于BMC固件实现电源芯片程序自动升级的系统,采用了如上所述的基于BMC固件实现电源芯片程序自动升级的方法,并包括:

进程程序创建模块,用于创建烧录电源芯片的进程程序;

烧录判断模块,读取所述进程程序的字节参数,判断电源芯片的烧录是否完成,若完成则退出,否则,跳转至步骤S3;

地址检测模块,检测电源管理总线地址是否有效,获取控制芯片的设备ID,并判断所述设备ID与预设的ID配置参数是否一致,直到是,则跳转至步骤S4;

写保护检查模块,检查控制芯片的写保护寄存器,若使能则禁止RAM内存写保护,然后跳转至步骤S5;若不存在使能则直接跳转至步骤S5;

写入操作模块,通过I

验证模块,当写入操作成功之后,通过读取相应的CRC检验寄存器,并与已有CRC值进行对比,直到验证通过,则拉低VDD电源并持续第一预设时间;

标志写入模块,对EEPROM写入已烧录完成的标志;

指示模块,点亮BMC芯片对应的LED指示灯。

综上所述,本实施例提供了完整的基于BMC固件而实现的电源芯片程序自动升级方法及系统,能够大大地减少产品的量产时间,减少繁琐的程序升级步骤,节约时间成本和生产成本;在此基础上,还通过对实现过程的优化设计,便于对异常错误的可控操作,在自动升级中,会对升级错误的芯片重新升级,功能包含纠错能力。

具体的,在量产的时候,由于每个PCB电路板的制版存在差异,进而会导致信号不稳定,因此可能会在升级开始时由于读取设备地址失败和出现信号问题等,进而导致升级失败,即烧录失败。对此,本实施例在自动升级的过程中还进行了容错设计,当出现烧录失败时,将在下次上电开机的时候自动对烧录失败的电源芯片重新执行升级控制,以便做到100%烧录成功,保证CPU的电源芯片能够全部供电正常。并且,本实施例的可扩展性强,对于后面更改寄存器参数等情况,直接更换需要升级的内容即可完成自动升级,更改方便,自动化程度高。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

技术分类

06120116560943