本技术涉及芯片领域,特别涉及一种固件的热更新方法、装置、芯片、设备和介质。
背景技术:
1、开机自检程序(boot rom)存于服务器的芯片上,是芯片启动时读取的只读存储器(rom)中的程序,其作用是初始化系统硬件、加载操作系统等关键操作。固件(firmware)是写入芯片的存储器中的程序,是承担芯片、服务器的最基础、最底层工作的软件。热更新是在不停机或不重新启动服务器的情况下,对固件进行在线更新和修复的技术。
2、相关技术中,由boot rom引导固件的热更新。具体地,新固件被写入芯片的快闪存储器(flash)中。在芯片存在boot rom的情况下,服务器发送热复位(hot reset)信号之后,则芯片会先执行boot rom内部的程序,boot rom会加载flash存储器中的新固件至指令存储器(instruction ram,iram)中,然后芯片从iram的新固件中取指运行,使得新固件运行生效,以完成固件的热更新。
3、然而,在芯片中不存在boot rom的情况下,由于缺乏boot rom引导固件的热更新,使得固件的热更新无法完成,只能通过重启服务器完成固件更新,耗时非常严重。
技术实现思路
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、本技术实施例提供的技术方案带来的有益效果至少包括:
34、本技术实施例的固件包括第一段固件和第二段固件,第一段固件用于加载第二段固件,第二段固件用于实现固件的配置功能。芯片响应于上电操作,运行第一段固件;第一段固件用于加载第二段固件,以运行第二段固件;响应于固件升级指令,将第二段固件覆写为更新后的第二段固件;固件升级指令用于指示覆写第二段固件,更新后的第二段固件的地址与第二段固件的地址相同;响应于更新指令,重新运行第一段固件;以及,通过第一段固件加载更新后的第二段固件,运行更新后的第二段固件;更新指令用于指示重新运行第一段固件。据此,本方案通过运行第一段固件,该第一段固件能够加载并运行第二段固件,使得第二段固件能够运行并生效。从而,在该芯片不包含boot rom时,将第二段固件覆写为更新后的第二段固件,通过重新运行第一段固件,该第一段固件能够加载并运行更新后的第二段固件,使得更新后的第二段固件能够运行并生效。由于第二段固件用于实现固件的配置功能,在更新后的第二段固件运行并生效时,也即实现了整个固件的热更新。本方案中的固件的更新过程中无需重启芯片所在的服务器,更无需停止服务器上的其他业务,极大简化和加速了固件的升级流程,实现了固件的无感知升级。
1.一种固件的热更新方法,其特征在于,所述方法由芯片执行,所述固件包括第一段固件和第二段固件,所述第一段固件用于加载所述第二段固件,所述第二段固件用于实现所述固件的配置功能;所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述芯片包括处理器;
3.根据权利要求2所述的方法,其特征在于,所述处理器包括寄存器;
4.根据权利要求1至3任一所述的方法,其特征在于,所述芯片包括存储器,所述存储器包括第一存储器和第二存储器,所述更新后的第二段固件存储在所述第一存储器中,运行的所述第一段固件位于所述第二存储器中;
5.根据权利要求4所述的方法,其特征在于,所述通过所述第一段固件将所述更新后的第二段固件,从所述第一存储器加载到所述第二存储器中,运行所述第二存储器中的所述更新后的第二段固件,包括:
6.根据权利要求5所述的方法,其特征在于,所述通过所述第一段固件将所述更新后的第二段固件,从所述第一存储器加载到所述第二存储器中,执行所述更新后的第二段固件的循环覆盖函数,以运行所述第二存储器中的所述更新后的第二段固件,包括:
7.根据权利要求1至3任一所述的方法,其特征在于,所述芯片包括存储器,所述存储器包括第一存储器,所述第二段固件存储在所述第一存储器中,运行的所述第一段固件位于所述第二存储器中;
8.根据权利要求1至3任一所述的方法,其特征在于,所述芯片包括启动加载器和存储器,所述存储器包括第一存储器和第二存储器,所述固件存储在所述第一存储器中;
9.根据权利要求8所述的方法,其特征在于,所述固件还包括固件头,所述固件头用于指示所述启动加载器从所述第一存储器中加载所述固件的数据;
10.根据权利要求9所述的方法,其特征在于,所述固件头包括:固件版本字段、固件页尺寸字段、固件页数字段、保留字段、校验码字段中的至少一种;
11.根据权利要求9所述的方法,其特征在于,所述芯片包括处理器;
12.根据权利要求8所述的方法,其特征在于,所述响应于所述上电操作,运行所述启动加载器;所述启动加载器将所述固件,从所述第一存储器加载到所述第二存储器中,运行所述第二存储器中的所述第一段固件,包括:
13.根据权利要求12所述的方法,其特征在于,所述启动加载器基于所述固件头,将所述固件从所述第一存储器中加载到所述第二存储器中,运行所述第二存储器中的所述第一段固件,包括:
14.根据权利要求12所述的方法,其特征在于,所述方法还包括:
15.一种用于实现固件的热更新的芯片,其特征在于,所述芯片包括处理器和存储器,所述固件包括第一段固件和第二段固件,所述第一段固件用于加载所述第二段固件,所述第二段固件用于实现所述固件的配置功能;
16.根据权利要求15所述的芯片,其特征在于,所述芯片还包括控制器,所述控制器与所述处理器和所述存储器连接;
17.根据权利要求16所述的芯片,其特征在于,所述处理器包括寄存器;
18.一种计算机设备,其特征在于,所述计算机设备包括用于实现固件的热更新的芯片,所述芯片包括:处理器和存储器,所述存储器存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至14任一所述的固件的热更新方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1至14任一所述的固件的热更新方法。
20.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,处理器从所述计算机可读存储介质中获取所述计算机指令,使得所述处理器加载并执行以实现如权利要求1至14任一所述的固件的热更新方法。
