本申请涉及设备软件,具体而言,涉及一种固件的升级方法、装置和存储介质。
背景技术:
1、目前,常见的设备固件升级方式为将设备固件所在的flash划分为a、b两个分区,以导入应用固件。现有的升级方案需要保持a、b分区空间大小相同并同时满足设备运行的条件,固件存储区确定后很难进行修改。
2、随着业务的发展变化,设备固件需要频繁进行升级优化。在设备固件升级的过程中,经常会面临固件需要升级而固件存储区中的运行分区空间不足的问题,从而导致固件无法继续升级,最终只能导入新的硬件方案来替代。
技术实现思路
1、根据本申请的一方面,提供一种固件的升级方法,包括:确定当前固件的存储区是否已重新划分;获取升级固件,升级固件包括二级引导模块和压缩应用固件;在当前固件的存储区已重新划分的情况下,根据升级固件所在的重新划分后的分区,通过二级引导模块将压缩应用固件解压,以完成当前固件的升级。
2、根据一些实施例,确定当前固件的存储区是否已重新划分,包括:获取当前固件的文件头信息;根据文件头信息,确定当前固件是否为压缩应用固件;在当前固件是压缩应用固件的情况下,确定当前固件的存储区已重新划分,并通过二级引导模块确定当前固件的存储区重新划分后的分区;在当前固件不是压缩应用固件的情况下,确定当前固件的存储区未重新划分。
3、根据一些实施例,当前固件的存储区包括第一分区和第二分区;当前固件的存储区重新划分后的分区包括压缩分区和运行分区;获取升级固件,包括:在当前固件的存储区已重新划分的情况下,将升级固件存放至压缩分区;在当前固件的存储区未重新划分的情况下,将升级固件存放至第一分区或第二分区。
4、根据一些实施例,在当前固件的存储区未重新划分的情况下,将升级固件存放至第一分区或第二分区,包括:在当前固件运行在第一分区的情况下,将升级固件存放至第二分区;在当前固件运行在第二分区的情况下,将升级固件存放至第一分区。
5、根据一些实施例,在当前固件的存储区已重新划分的情况下,根据升级固件所在的重新划分后的分区,通过二级引导模块将压缩应用固件解压,以完成当前固件的升级,包括:确定系统预设的一级引导模块的启动分区为压缩分区;系统重启后,通过一级引导模块在压缩分区中启动二级引导模块;通过二级引导模块将压缩应用固件解压至运行分区;修改一级引导模块的启动分区为运行分区;系统重启后,通过一级引导模块在运行分区中执行压缩应用固件解压后得到的应用固件对应的应用代码,以完成当前固件的升级。
6、根据一些实施例,在通过二级引导模块将压缩应用固件解压至运行分区之后,在当前固件的存储区已重新划分的情况下,根据升级固件所在的重新划分后的分区,通过二级引导模块将压缩应用固件解压,以完成当前固件的升级,还包括:在压缩分区中保留二级引导模块和压缩应用固件;在当前固件升级完成的情况下,系统每次重启后,通过二级引导模块校验运行分区中的应用固件;并且在校验结果正常的情况下,不再通过二级引导模块解压压缩应用固件。
7、根据一些实施例,当前固件的存储区包括第一分区和第二分区;在当前固件的存储区未重新划分的情况下,通过二级引导模块将第一分区和第二分区重新划分为压缩分区和运行分区;基于压缩分区和运行分区进行当前固件的升级。
8、根据一些实施例,在当前固件的存储区未重新划分的情况下,通过二级引导模块将第一分区和第二分区重新划分为压缩分区和运行分区,包括:在当前固件的存储区未重新划分,且当前固件运行在第一分区的情况下,确定一级引导模块的启动分区为第二分区;通过一级引导模块在第二分区中启动二级引导模块;复制升级固件至第一分区;修改一级引导模块的启动分区为第一分区;系统重启后,通过一级引导模块在第一分区中启动二级引导模块,以将第一分区和第二分区重新划分为压缩分区和运行分区,其中压缩分区的位置处于第一分区中。
9、根据一些实施例,在当前固件的存储区未重新划分的情况下,通过二级引导模块将第一分区和第二分区重新划分为压缩分区和运行分区,还包括:在当前固件的存储区未重新划分,且当前固件运行在第二分区的情况下,确定一级引导模块的启动分区为第一分区;通过一级引导模块在第一分区中启动二级引导模块,以将第一分区和第二分区重新划分为压缩分区和运行分区,其中压缩分区的位置处于第一分区中。
10、根据一些实施例,基于压缩分区和运行分区进行当前固件的升级,包括:将升级固件存放至压缩分区;通过二级引导模块将压缩应用固件解压至运行分区;修改一级引导模块的启动分区为运行分区;系统重启后,通过一级引导模块在运行分区中执行压缩应用固件解压后得到的应用固件对应的应用代码,以完成当前固件的升级。
11、根据本申请的一方面,提供一种固件的升级装置,包括:存储区确定单元,用于确定当前固件的存储区是否已重新划分;升级固件获取单元,用于获取升级固件,升级固件包括二级引导模块和压缩应用固件;固件升级单元,用于在当前固件的存储区已重新划分的情况下,根据升级固件所在的重新划分后的分区,通过二级引导模块将压缩应用固件解压,以完成当前固件的升级。
12、根据本申请的一方面,提供一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现如前述的方法。
13、根据本申请的实施例,通过对设备固件原存储区的重新划分,可将固件的存储空间与运行空间进行分割,保证了设备上电运行的正常,提高了固件存储区空间的利用率。
14、应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
1.一种固件的升级方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,确定当前固件的存储区是否已重新划分,包括:
3.根据权利要求2所述的方法,其特征在于,所述当前固件的存储区包括第一分区和第二分区;所述当前固件的存储区重新划分后的分区包括压缩分区和运行分区;
4.根据权利要求3所述的方法,其特征在于,在所述当前固件的存储区未重新划分的情况下,将所述升级固件存放至所述第一分区或所述第二分区,包括:
5.根据权利要求3所述的方法,其特征在于,在所述当前固件的存储区已重新划分的情况下,根据所述升级固件所在的重新划分后的分区,通过所述二级引导模块将所述压缩应用固件解压,以完成所述当前固件的升级,包括:
6.根据权利要求5所述的方法,其特征在于,在通过所述二级引导模块将所述压缩应用固件解压至所述运行分区之后,在所述当前固件的存储区已重新划分的情况下,根据所述升级固件所在的重新划分后的分区,通过所述二级引导模块将所述压缩应用固件解压,以完成所述当前固件的升级,还包括:
7.根据权利要求1所述的方法,其特征在于,所述当前固件的存储区包括第一分区和第二分区;所述方法还包括:
8.根据权利要求7所述的方法,其特征在于,在所述当前固件的存储区未重新划分的情况下,通过所述二级引导模块将所述第一分区和所述第二分区重新划分为压缩分区和运行分区,包括:
9.根据权利要求7所述的方法,其特征在于,在所述当前固件的存储区未重新划分的情况下,通过所述二级引导模块将所述第一分区和所述第二分区重新划分为压缩分区和运行分区,还包括:
10.根据权利要求8或9所述的方法,其特征在于,基于所述压缩分区和所述运行分区进行所述当前固件的升级,包括:
11.一种固件的升级装置,其特征在于,包括:
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-10中任一所述的方法。