一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种系统升级方法、装置、设备及存储介质与流程

2021-11-15 14:48:00 来源:中国专利 TAG:


1.本发明涉及人工智能技术领域,更具体地说,涉及一种系统升级方法、装置、设备及存储介质。


背景技术:

2.现有技术中在实现系统升级时,通常需要先关闭系统的软件、卸载系统所运行在的存储等,然后对在系统中写入固件实现对系统升级,进而升级完成后再重新启动系统。可见,现有技术中由于升级过程需要关闭软件、卸载存储等操作导致升级效率较低,且升级过程中如遇异常断电等情况导致固件没有正常写入,则会影响系统的启动,产品稳定性差,维护难度大。


技术实现要素:

3.本发明的目的是提供一种系统升级方法、装置、设备及存储介质,在有效提高系统升级效率的同时,还能够提高系统稳定性,降低维护难度。
4.为了实现上述目的,本发明提供如下技术方案:一种系统升级方法,包括:获取预先设置的环境变量分区的地址信息,从所述地址信息对应的存储空间内的位置处读取分区信息,并按照所述分区信息对存储空间进行分区,得到环境变量分区及至少两个能够作为升级分区的分区;其中,所述环境变量分区用于存储所述分区信息、所述系统当前运行在的存储区域内固件的版本信息以及从相应分区启动所述系统所用的启动命令;在系统的运行过程中如果需要对系统进行升级,则确定所述系统当前未运行在的任意存储分区为当前的升级分区;确定实现所述系统升级的固件为升级固件,并将所述升级固件写入至当前的升级分区中;在写入所述升级固件成功后,从当前的升级分区中重新启动所述系统,以使得所述系统运行在当前的升级分区中。
5.优选的,确定实现所述系统升级的固件为升级固件之后,还包括:读取所述升级固件中包含的校验值为当前校验值,并读取所述升级固件中包含的数据部分为第一数据部分;对所述第一数据部分中的数据进行计算得到相应的校验值为第一校验值,将所述第一校验值与当前校验值进行比对,如果比对的结果为一致,则执行将所述升级固件写入至当前的升级分区中的步骤,否则,确定无法基于所述升级固件实现所述系统的升级。
6.优选的,确定所述第一校验值与当前校验值一致之后,还包括:读取所述升级固件中包含的版本信息为第一版本信息,并读取所述系统当前运行在的存储区域内固件的版本信息为第二版本信息;
将所述第一版本信息及所述第二版本信息进行比对,如果比对的结果为一致,则确定无需基于所述升级固件实现所述系统的升级,否则,执行将所述升级固件写入至当前的升级分区中的步骤。
7.优选的,在写入所述升级固件成功后,还包括:读取当前的升级分区内升级固件包含的数据部分为第二数据部分,并对所述第二数据部分中的数据进行计算得到相应的校验值为第二校验值;将所述第二校验值与当前校验值进行比对,如果比对的结果为一致,则执行从当前的升级分区中重新启动所述系统的步骤,否则,确定无法从当前的升级分区中重新启动所述系统。
8.优选的,将所述升级固件写入至当前的升级分区中之前,还包括:将当前的升级分区中存储的数据均进行擦除。
9.相应的,从当前的升级分区中重新启动所述系统之后,还包括:对所述环境变量分区中的版本信息及启动命令进行更新。
10.优选的,所述系统包含内核及文件系统,能够作为升级分区的分区包括两个能够作为所述内核的升级分区的分区及两个能够作为所述文件系统的升级分区的分区。
11.一种系统升级装置,包括:确定模块,用于:在系统的运行过程中如果需要对系统进行升级,则确定所述系统当前未运行在的任意存储分区为当前的升级分区;写入模块,用于:确定实现所述系统升级的固件为升级固件,并将所述升级固件写入至当前的升级分区中;重启模块,用于:在写入所述升级固件成功后,从当前的升级分区中重新启动所述系统,以使得所述系统运行在当前的升级分区中;分区模块,用于:获取预先设置的环境变量分区的地址信息,从所述地址信息对应的存储空间内的位置处读取分区信息,并按照所述分区信息对存储空间进行分区,得到环境变量分区及至少两个能够作为升级分区的分区;其中,所述环境变量分区用于存储所述分区信息、所述系统当前运行在的存储区域内固件的版本信息以及从相应分区启动所述系统所用的启动命令。
12.一种系统升级设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上任一项所述系统升级方法的步骤。
13.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项系统升级方法的步骤。
14.本发明提供了一种系统升级方法、装置、设备及存储介质,该方法包括:在系统的运行过程中如果需要对系统进行升级,则确定所述系统当前未运行在的任意存储分区为当前的升级分区;确定实现所述系统升级的固件为升级固件,并将所述升级固件写入至当前的升级分区中;在写入所述升级固件成功后,从当前的升级分区中重新启动所述系统,以使得所述系统运行在当前的升级分区中。本技术设置能够实现系统升级运行的分区为至少两个,进而在系统需要升级时将升级所用固件写入至系统当前未运行在的分区,然后在写入固件成功后从写入固件成功的分区重新启动系统,以实现系统的升级,而再下次系统需要
升级时依然将升级所用固件写入至系统当前未运行在的分区,以此类推。可见,本技术将运行的分区及升级的分区分开在升级过程中不会影响系统在运行的分区的正常工作,无需关闭软件、卸载存储等,从而能够有效提高升级效率;并且即使在升级过程中出现异常断电等情况,也可以再从写入固件前运行在的存储分区重新启动,不会影响系统的启动,产品稳定性好,维护难度小;综上本技术在有效提高系统升级效率的同时,还能够提高系统稳定性,降低维护难度。
附图说明
15.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
16.图1为本发明实施例提供的一种系统升级方法的流程图;图2为本发明实施例提供的一种系统升级方法中存储分区分布图;图3为本发明实施例提供的一种系统升级装置的结构示意图。
具体实施方式
17.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.请参阅图1,其示出了本发明实施例提供的一种系统升级方法的流程图,具体可以包括:s11:在系统的运行过程中如果需要对系统进行升级,则确定系统当前未运行在的任意存储分区为当前的升级分区。
19.随着科技水平的进步,芯片制造工艺的提升,芯片成本越来越低,使得嵌入式设备能够使用“大内存”“大闪存”等,本技术实施例中的系统则可以为嵌入式设备中的系统,当然根据需要进行的其他设置也均在本发明的保护范围之内;其中,系统可以为操作系统,也可以根据实际需要设定的其他系统,存储分区是物理磁盘的一部分、其作用如同一个物理分隔单元。在系统的运行过程中如果需要对系统进行升级,则可以先确定出系统当前运行在的存储分区及系统未运行在的存储分区,且这些存储分区均为能够实现系统升级运行的存储分区,也即本技术实施例中可以设置至少两个能够实现系统升级运行的存储分区,进而在同一时刻,存在能够实现系统升级运行的存储分区上运行系统,也存在能够实现系统升级运行的存储分区上未运行系统。
20.s12:确定实现系统升级的固件为升级固件,并将升级固件写入至当前的升级分区中。
21.本技术实施例中在需要实现系统升级时,具体为将最新的固件(固件可以为升级包)写入至相应的存储分区中,然后从写入固件完成的存储分区重新启动系统,以实现系统的升级;且在实现系统升级的过程中(系统在固件写入成功重新启动前),系统仍在当前运
行在的存储分区继续运行。其中,本技术实施例将系统当前未运行在的任意存储分区作为当前的升级分区,进而在实现系统升级时将实现系统升级的固件写入至当前的升级分区中,以在写入成功后从当前的升级分区重新启动系统,以使得系统重新启动后运行在当前的升级分区中。
22.s13:在写入升级固件成功后,从当前的升级分区中重新启动系统,以使得系统运行在当前的升级分区中。
23.简单来说,当能够实现系统升级运行的存储分区为两个,且分别表示为分区a和分区b时,如果需要对系统进行升级,则会在分区a和分区b之间做切换,例如目前系统运行在分区a,那么就将升级所用固件写入到分区b,在写入成功后从分区b重启系统,下次升级时则会将升级所用固件写入到分区a,以此类推。
24.本技术设置能够实现系统升级运行的存储分区为至少两个,进而在系统需要升级时将升级所用固件写入至系统当前未运行在的存储分区,然后在写入固件成功后从写入固件成功的存储分区重新启动系统,以实现系统的升级,而再下次系统需要升级时依然将升级所用固件写入至系统当前未运行在的存储分区,以此类推。可见,本技术将运行的存储分区及升级的存储分区分开在升级过程中不会影响系统在运行的存储分区的正常工作,无需关闭软件、卸载存储等,从而能够有效提高升级效率;并且即使在升级过程中出现异常断电等情况,也可以再从写入固件前运行在的存储分区重新启动,不会影响系统的启动,产品稳定性好,维护难度小;综上本技术在有效提高系统升级效率的同时,还能够提高系统稳定性,降低维护难度。
25.本发明实施例提供的一种系统升级方法,确定实现系统升级的固件为升级固件之后,还可以包括:读取升级固件中包含的校验值为当前校验值,并读取升级固件中包含的数据部分为第一数据部分;对第一数据部分中的数据进行计算得到相应的校验值为第一校验值,将第一校验值与当前校验值进行比对,如果比对的结果为一致,则执行将升级固件写入至当前的升级分区中的步骤,否则,确定无法基于升级固件实现系统的升级。
26.本技术实施例在接收到升级指令后则可以确定需要对系统进行升级,进而升级相应的系统。为了保证升级固件的准确性,本技术实施例可以先对升级固件进行校验;具体来说,可以从升级固件header部分读取校验值,同时计算升级固件data部分中数据的校验值,然后将两者进行比较,如果两者是相同的则表示校验通过,否则表示校验未通过。其中,校验值具体可以为crc校验和,而升级所用固件可以为相应的固件镜像。
27.本发明实施例提供的一种系统升级方法,确定第一校验值与当前校验值一致之后,还可以包括:读取升级固件中包含的版本信息为第一版本信息,并读取系统当前运行在的存储区域内固件的版本信息为第二版本信息;将第一版本信息及第二版本信息进行比对,如果比对的结果为一致,则确定无需基于升级固件实现系统的升级,否则,执行将升级固件写入至当前的升级分区中的步骤。
28.为了进一步保证升级固件为最新版本的固件,本技术实施例可以对升级固件的版本进行校验;具体来说,可以读取升级固件header部分的版本信息,将版本信息与系统当前
运行在的存储分区中读取的所存储固件的版本信息比对,如果两者不同,则说明系统需要升级,升级固件为最新版本的固件,否则,确定无需基于升级固件实现系统的升级。其中,版本信息可以为版本号。
29.本发明实施例提供的一种系统升级方法,在写入升级固件成功后,还可以包括:读取当前的升级分区内升级固件包含的数据部分为第二数据部分,并对第二数据部分中的数据进行计算得到相应的校验值为第二校验值;将第二校验值与当前校验值进行比对,如果比对的结果为一致,则执行从当前的升级分区中重新启动系统的步骤,否则,确定无法从当前的升级分区中重新启动系统。
30.为了进一步保证升级固件的准确性,本技术实施例还可以进行回读验证;具体来说,本技术实施例可以从写入升级固件的存储分区中读取固件的data部分中的数据,并对读取到的数据进行计算得到相应校验值,将写入升级固件前从升级固件中读取的校验值与此处计算得到的校验值进行比对,如果两者相同,则说明写入至当前的升级分区中的升级固件没有问题,因此可以从当前的升级分区重新启动系统,否则说明写入至当前的升级分区中的升级固件存在问题,因此不能从当前的升级分区重新启动系统。
31.本发明实施例提供的一种系统升级方法,将升级固件写入至当前的升级分区中之前,还可以包括:将当前的升级分区中存储的数据均进行擦除。
32.为了进一步保证升级的有效实现,本技术中在写入升级固件前可以先对当前的升级分区中存储的数据进行擦除,然后再将升级固件写入至当前的升级分区中,从而避免失效数据的存储,进而导致系统重新启动出现错误。
33.本发明实施例提供的一种系统升级方法,还可以包括:获取预先设置的环境变量分区的地址信息,从地址信息对应的存储空间内的位置处读取分区信息,并按照分区信息对存储空间进行分区,得到环境变量分区及至少两个能够作为升级分区的分区;其中,环境变量分区用于存储分区信息、系统当前运行在的存储区域内固件的版本信息以及从相应分区启动系统所用的启动命令;相应的,从当前的升级分区中重新启动系统之后,还可以包括:对环境变量分区中的版本信息及启动命令进行更新;系统可以包含内核及文件系统,能够作为升级分区的分区可以包括两个能够作为内核的升级分区的分区及两个能够作为文件系统的升级分区的分区。
34.本技术实施例中的地址信息可以为flash物理地址。本技术实施例可以预先设置待分区的env分区的flash物理地址,从待分区的env分区对应的flash物理地址中读取分区信息、版本号及启动命令;其中,分区信息记录了所有存储分区的起始地址和分区大小,启动命令记录了当前系统运行在的存储分区为分区a(kernel

a,rootfs

a)还是分区b(kernel

b,rootfs

b)(启动命令中bootcmd参数记录了当前系统运行在的存储分区,例如当前系统运行在的存储分区为a,则在未分区前也是通过记录地址的形式区分存储分区的);相应的,启动命令未记录的另一个存储分区就是“当前的升级分区”。因此实际上,在分成8个存储分区之前,已经规划好8个存储分区的物理地址。
35.按照分区信息对存储空间(可以为spi nand flash的存储空间,其存储空间的总容量是128mb)进行分区能够得到如图2所示的分布情况,共8个存储分区,分别为env分区
(环境变量分区)、uboot分区(启动引导分区)、conf分区(配置分区)、data分区(数据分区)、kernel

a、rootfs

a、kernel

b、rootfs

b;其中,uboot分区负责启动整个系统,启动时会根据env分区中的启动命令启动整个kernel(内核),并将分区信息传递给kenrel进行系统分区,将整个flash分成8个分区;env分区存放分区信息和启动系统必要的信息,包括版本号、启动命令等;rootfs(文件系统)采用squashfs只读文件系统,从而防止对系统文件任意读写,避免对系统造成破坏;conf分区主要存放系统的配置文件,系统启动后各业务模块会从里面读出配置信息;data分区用于存储用户文件,比如抓拍图片、录像片段等。
36.在一种具体实现方式中,针对存储分区包括env分区、uboot分区、conf分区、data分区、kernel

a、rootfs

a、kernel

b、rootfs

b的情况,本技术实施例提供的一种系统升级方法可以包括:1)读取升级指令,升级kernel区域;2)升级包校验,从升级包中kernel镜像的header部分读取crc校验和,同时计算data部分的crc校验和,将两者进行比较,如果一致则表示校验正确;3)读取升级包kernel镜像的header部分版本号,将版本号与env分区中的版本号(env中的version参数)对比,如果版本号不一致,则表示需要升级;4)开始升级,擦除“当前的升级分区”中的数据,写入镜像数据;需要说明的是,在本发明中,“擦除”动作是为了保证分区中不出现“脏数据”的优化方案,例如既往分区的系统版本为v1.0,其占据内存大小为1.8mb,当前需要升级的系统版本为v1.1,占据内存的大小为1.5mb,如果不擦除,那么会存在0.3mb的脏数据,直接导致系统升级失败。承认,若当前需要升级的系统版本为v1.2,占据内存的大小为2mb,能够完全覆盖整个内存区域,也可以不擦除。
37.5)回读验证,从“当前的升级分区”中读取数据并计算crc校验和,对比升级包kernel镜像的header部分crc校验和,如果一致,则表示数据写入正确;6)kernel区域升级完毕,调用步骤2)

步骤5)相同的程序模块升级rootfs;7)更新env分区中的分区信息、版本号、启动命令。
38.可见,本技术提供的嵌入式设备系统分区与升级的方法,对比传统的单分区升级方法,本发明将运行分区与升级分区分开,在升级过程中不影响运行分区的正常工作,无需关闭软件、卸载分区等操作,在升级过程中,就算异常断电,升级分区写入异常,重启后也不影响运行分区的工作,大大提升了升级效率和稳定性。
39.此外,本发明优化了对flash存储空间的分区,将flash存储空间划分为八个存储分区,预先设置待分区的环境变量分区的flash物理地址,并在该对应的物理地址存储分区升级需要调用的所有参数即分区信息、版本号以及启动命令,在进行升级操作时能够快速从环境变量分区的flash物理地址中读取所需参数进行升级,本发明在分区升级的过程中仅需从环境变量分区调用分区升级所需参数,减少了计算机程序与其他存储分区的交互。
40.本发明实施例还提供了一种系统升级装置,如图3所示,可以包括:确定模块11,用于:在系统的运行过程中如果需要对系统进行升级,则确定系统当前未运行在的任意存储分区为当前的升级分区;写入模块12,用于:确定实现系统升级的固件为升级固件,并将升级固件写入至当前的升级分区中;
重启模块13,用于:在写入升级固件成功后,从当前的升级分区中重新启动系统,以使得系统运行在当前的升级分区中。
41.本发明实施例提供的一种系统升级装置,还可以包括:第一校验模块,用于:确定实现系统升级的固件为升级固件之后,读取升级固件中包含的校验值为当前校验值,并读取升级固件中包含的数据部分为第一数据部分;对第一数据部分中的数据进行计算得到相应的校验值为第一校验值,将第一校验值与当前校验值进行比对,如果比对的结果为一致,则执行将升级固件写入至当前的升级分区中的步骤,否则,确定无法基于升级固件实现系统的升级。
42.本发明实施例提供的一种系统升级装置,还可以包括:第二校验模块,用于:确定第一校验值与当前校验值一致之后,读取升级固件中包含的版本信息为第一版本信息,并读取系统当前运行在的存储区域内固件的版本信息为第二版本信息;将第一版本信息及第二版本信息进行比对,如果比对的结果为一致,则确定无需基于升级固件实现系统的升级,否则,执行将升级固件写入至当前的升级分区中的步骤。
43.本发明实施例提供的一种系统升级装置,还可以包括:第三校验模块,用于:在写入升级固件成功后,读取当前的升级分区内升级固件包含的数据部分为第二数据部分,并对第二数据部分中的数据进行计算得到相应的校验值为第二校验值;将第二校验值与当前校验值进行比对,如果比对的结果为一致,则执行从当前的升级分区中重新启动系统的步骤,否则,确定无法从当前的升级分区中重新启动系统。
44.本发明实施例提供的一种系统升级装置,还可以包括:擦除模块,用于:将升级固件写入至当前的升级分区中之前,将当前的升级分区中存储的数据均进行擦除。
45.本发明实施例提供的一种系统升级装置,还可以包括:分区模块,用于:获取预先设置的环境变量分区的地址信息,从地址信息对应的存储空间内的位置处读取分区信息,并按照分区信息对存储空间进行分区,得到环境变量分区及至少两个能够作为升级分区的分区;其中,环境变量分区用于存储分区信息、系统当前运行在的存储区域内固件的版本信息以及从相应分区启动系统所用的启动命令;更新模块,用于:从当前的升级分区中重新启动系统之后,对环境变量分区中的版本信息及启动命令进行更新。
46.本发明实施例提供的一种系统升级装置,系统可以包含内核及文件系统,能够作为升级分区的分区包括两个能够作为内核的升级分区的分区及两个能够作为文件系统的升级分区的分区。
47.本发明实施例还提供了一种系统升级设备,可以包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现如上任一项系统升级方法的步骤。
48.本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可以实现如上任一项系统升级方法的步骤。
49.需要说明的是,本发明实施例提供的一种系统升级装置、设备及存储介质中相关部分的说明请参见本发明实施例提供的一种系统升级方法中对应部分的详细说明,在此不再赘述。另外本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一
致的部分并未详细说明,以免过多赘述。
50.对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献