本技术涉及芯片升级,特别是涉及一种固件升级方法、计算机程序产品、设备和存储介质。
背景技术:
1、随着社会的发展,信息化逐渐覆盖到社会的各个领域。服务器作为数据处理和数据存储的载体,其内部也是高度集成化的,为了实现某种功能,通常并不会使用分立器件来搭建模块,而是使用集成化的芯片搭配简单外围来实现。通常这些专用芯片实现功能较复杂或者功能可定制,因此会外部搭配eeprom(带电可擦可编程只读存储器)或者flash(电可擦除程序化只读存储器)来存放配置文件或固件供启动或工作时调用,但是,当配置文件或固件需要调整修改时,需要对配置文件或固件进行升级。
2、相关技术中,通常是通过这些芯片的串口或接口来调用芯片专门的烧录程序来修改或升级,或者bmc连接专用芯片,先把修改好的配置文件或者固件通过i2c推送给芯片的ram(随机存取存储器),然后再调用芯片的烧录api(应用程序编程接口)将ram中的配置文件或固件烧录给芯片的eeprom或者flash,但是每种芯片都有特定的烧录api,bmc为了烧录不同的芯片,需要在代码里集成各种芯片的烧录api,不仅增加了bmc开发的难度,而且生成的bmc烧录文件也很大,需要bmc配置更大的外置flash来存放固件,大大增加了产品的成本。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够提高固件升级的可靠性的固件升级方法、计算机程序产品、设备和存储介质。
2、为了解决上述技术问题,第一方面,提供固件升级方法,方法包括:
3、响应于接收到第一固件升级信号,获取第一链路的状态,第一链路导通主控芯片与主控芯片的外挂芯片;
4、若第一链路为空闲状态,则对第一链路加锁,向基板管理控制器返回第二固件升级信号;
5、响应于基板管理控制器接收到第二固件升级信号,基板管理控制器控制主控芯片向多路选择器发送第一控制信号,以控制多路选择器切换至第二链路,第二链路导通基板管理控制器与主控芯片的外挂芯片;
6、基板管理控制器通过第二链路获取外挂芯片中的配置文件进行固件升级,配置文件包括烧录代码。
7、在其中一个实施例中,响应于接收到第一固件升级信号,获取第一链路的状态包括:
8、响应于基板管理控制器接收到固件升级请求,基板管理控制器向主控芯片发送第一固件升级信号,第一固件升级信号为低电平信号;
9、响应于主控芯片接收到第一固件升级信号,判断第一链路是否有数据进行传输;
10、若第一链路有数据进行传输,则认为第一链路为工作状态;
11、若第一链路没有数据进行传输,则认为第一链路为空闲状态。
12、在其中一个实施例中,若第一链路为空闲状态,则对第一链路加锁,向基板管理控制器返回第二固件升级信号包括:
13、若第一链路为空闲状态,则触发加锁指令,对第一链路加锁,以使第一链路在预设时间段内保持空闲状态,并向基板管理控制器返回第二固件升级信号,第二固件升级信号为高电平信号。
14、在其中一个实施例中,第二链路包括第二传输线路以及第三传输线路,响应于基板管理控制器接收到第二固件升级信号,基板管理控制器控制主控芯片向多路选择器发送第一控制信号,以控制多路选择器切换至第二链路,第二链路导通基板管理控制器与主控芯片的外挂芯片包括:
15、响应于基板管理控制器接收到主控芯片返回的第二固件升级信号,基板管理控制器向多路选择器发送第一控制信号,第一控制信号为高电平信号;
16、响应于多路选择器接收到第一控制信号,多路选择器切换至第二管脚对应的第二传输线路,以使基板管理控制器通过第二传输线路以及第三传输线路与主控芯片的外挂芯片进行数据传输。
17、在其中一个实施例中,基板管理控制器通过第二链路获取外挂芯片中的配置文件进行固件升级包括:
18、响应于基板管理控制器获取到外挂芯片中的配置文件,对配置文件进行解析,得到固件升级数据以及烧录代码;
19、基于固件升级数据以及烧录代码进行固件升级。
20、在其中一个实施例中,第一链路包括第一传输线路以及第三传输线路,基板管理控制器通过第二链路获取外挂芯片中的配置文件进行固件升级之后包括:
21、响应于基板管理控制器对外挂芯片中的配置文件进行固件升级之后,基板管理控制器向多路选择器发送第二控制信号,第二控制信号为低电平信号;
22、响应于多路选择器接收到第二控制信号,多路选择器切换至第一管脚对应的第一传输线路,以使主控芯片通过第一传输线路以及第三传输线路与主控芯片的外挂芯片进行数据传输。
23、在其中一个实施例中,固件升级请求为多个,方法还包括:
24、根据每一固件升级请求的生成时间生成时间戳;
25、获取每一固件升级请求携带的配置文件下载包以及固件升级请求级别,配置文件下载包包括配置文件起始位置以及配置文件长度;
26、根据预设的综合优先级计算公式、时间戳、固件升级请求级别、配置文件起始位置以及配置文件长度确定每一固件升级请求的固件升级综合优先级;
27、根据每一固件升级请求的固件升级综合优先级的级别将每一固件升级请求发送至基板管理控制器进行处理。
28、在其中一个实施例中,根据预设的综合优先级计算公式、时间戳、固件升级请求级别、配置文件起始位置以及配置文件长度确定每一固件升级请求的固件升级综合优先级包括:
29、获取时间戳对应的第一权重值、配置文件起始位置的第二权重值以及配置文件长度对应的第三权重值;
30、基于预设的综合优先级计算公式、第一权重值、固件升级请求级别、第二权重值以及第三权重值计算每一固件升级请求的固件升级综合优先级;
31、其中,预设的综合优先级计算公式如下所示:
32、,
33、其中,表示第i个固件升级请求对应的固件升级综合优先级、表示第i个固件升级请求对应的第一权重值,表示第i个固件升级请求对应的固件升级请求级别、表示第i个固件升级请求对应的第二权重值、表示第i个固件升级请求对应的第三权重值,n为固件升级请求总量。
34、在其中一个实施例中,根据每一固件升级请求的固件升级综合优先级的级别将每一固件升级请求发送至基板管理控制器进行处理包括:
35、根据每一固件升级综合优先级的级别将每一固件升级请求加入处理队列中,其中,固件升级综合优先级的级别高的固件升级请求位于处理队列的头部,固件升级综合优先级的级别低的固件升级请求位于处理队列的尾部;
36、按照每一固件升级请求在处理队列中的顺序依次将每一固件升级请求发送至基板管理控制器进行处理。
37、在其中一个实施例中,配置文件包括第一配置文件以及第二配置文件,方法包括:
38、获取固件升级数据,对固件升级数据进行哈希计算,得到目标哈希值;
39、选取预设范围内的目标哈希值作为秘钥,基于秘钥对固件升级数据进行加密,得到第一配置文件;
40、获取烧录代码,对烧录代码进行划分,得到多个烧录代码段;
41、利用签名工具生成每一烧录代码段的数据签名;
42、为每一烧录代码段分配认证函数,并将每一烧录代码段以及每一烧录代码的数据签名进行封装,得到第二配置文件;
43、分别获取秘钥、数据签名以及认证函数的第一个数值,根据秘钥、数据签名以及认证函数的第一个数值的乘积生成配置文件标识;
44、将第一配置文件以及第二配置文件合并为配置文件,将配置文件以及配置文件标识写入外挂芯片的升级区域中。
45、在其中一个实施例中,外挂芯片还包括加密区域,加密区域包括第一加密区域以及第二加密区域,方法还包括:
46、获取固件升级数据对应的秘钥,将固件升级数据对应的秘钥存放至第一加密区域中;
47、获取每一烧录代码段对应的数据签名以及认证函数,将每一烧录代码段对应的数据签名以及认证函数存放至第二加密区域中。
48、在其中一个实施例中,基板管理控制器通过第二链路获取外挂芯片中的配置文件进行固件升级还包括:
49、基板管理控制器从外挂芯片的加密区域中获取固件升级数据对应的秘钥、每一烧录代码段对应的数据签名以及认证函数;
50、分别获取秘钥、数据签名以及认证函数的第一个数值,计算秘钥、数据签名以及认证函数的第一个数值的乘积,生成校验值;
51、获取配置文件标识,判断配置文件标识与校验值是否一致;
52、若一致,则认为配置文件校验成功,基板管理控制器根据配置文件进行固件升级。
53、为了解决上述技术问题,第二方面,提供了一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现上述第一方面所述的方法的步骤。
54、为了解决上述技术问题,第三方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:所述处理器执行所述计算机程序时实现上述第一方面所述方法的步骤。
55、为了解决上述技术问题,第四方面,本技术提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法的步骤。
56、区别于相关技术,本技术中在响应于接收到第一固件升级信号时,获取第一链路的状态;若第一链路为空闲状态,则对第一链路加锁,第一链路导通主控芯片与主控芯片的外挂芯片,向基板管理控制器返回第二固件升级信号;响应于基板管理控制器接收到第二固件升级信号,基板管理控制器控制主控芯片向多路选择器发送第一控制信号,以控制多路选择器切换至第二链路,第二链路导通基板管理控制器与主控芯片的外挂芯片;基板管理控制器通过第二链路获取外挂芯片中的配置文件进行固件升级,配置文件包括烧录代码。如此,通过先判断第一链路的状态然后在第一链路为空闲状态时,控制多路选择器实现不同链路的切换,能够提高固件升级的稳定性,获取外挂芯片中的配置文件进行固件升级,可以避免在基板管理控制器中集成不同主控芯片的烧录api,大大降低了代码开发难度,采用本技术的方法能够提高固件升级的可靠性。
1.一种固件升级方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述响应于接收到第一固件升级信号,获取第一链路的状态包括:
3.根据权利要求1所述的方法,其特征在于,所述若所述第一链路为空闲状态,则对所述第一链路加锁,向基板管理控制器返回第二固件升级信号包括:
4.根据权利要求1所述的方法,其特征在于,第二链路包括第二传输线路以及第三传输线路,所述响应于基板管理控制器接收到第二固件升级信号,所述基板管理控制器控制主控芯片向多路选择器发送第一控制信号,以控制所述多路选择器切换至第二链路,所述第二链路导通所述基板管理控制器与主控芯片的外挂芯片包括:
5.根据权利要求1所述的方法,其特征在于,所述基板管理控制器通过所述第二链路获取所述外挂芯片中的配置文件进行固件升级包括:
6.根据权利要求1所述的方法,其特征在于,第一链路包括第一传输线路以及第三传输线路,所述基板管理控制器通过所述第二链路获取所述外挂芯片中的配置文件进行固件升级之后包括:
7.根据权利要求1所述的方法,其特征在于,固件升级请求为多个,所述方法还包括:
8.根据权利要求7所述的方法,其特征在于,所述根据预设的综合优先级计算公式、所述时间戳、所述固件升级请求级别、所述配置文件起始位置以及所述配置文件长度确定每一固件升级请求的固件升级综合优先级包括:
9.根据权利要求7所述的方法,其特征在于,所述根据所述每一固件升级请求的固件升级综合优先级的级别将所述每一固件升级请求发送至基板管理控制器进行处理包括:
10.根据权利要求1所述的方法,其特征在于,所述配置文件包括第一配置文件以及第二配置文件,所述方法包括:
11.根据权利要求10所述的方法,其特征在于,所述外挂芯片还包括加密区域,所述加密区域包括第一加密区域以及第二加密区域,所述方法还包括:
12.根据权利要求11所述的方法,其特征在于,所述基板管理控制器通过所述第二链路获取所述外挂芯片中的配置文件进行固件升级还包括:
13.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12中任一项所述方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
