一种程序升级方法、装置、介质和电子设备与流程

文档序号:26947669发布日期:2021-10-12 20:11阅读:123来源:国知局
一种程序升级方法、装置、介质和电子设备与流程

1.本技术实施例涉及数据存储领域,尤其涉及一种程序升级方法、装置、介质和电子设备。


背景技术:

2.使用linux系统的终端设备,如网络摄像机(ip camera,ipc),目前在行业各个场景中广泛应用,随着成本要求越来越高,一般都采用闪存(flash)存储器作为存储装置,目前主流的低成本方案中都采用小容量nor flash来存储。闪存存储器往往被分成boot区、分区表、内核区、rootfs区、用户数据区,所有分区只有用户数据区和分区表是可写的。在小容量nor flash中,往往采用jffs2文件系统来挂载。
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.根据更新的分区表中的用户数据区参数,调整所述用户数据区的存储地址,以将所述闪存存储器的用户数据区划分为目标用户数据区和至少一个备份用户数据区。
35.在一种可选的实施例中,所述数据拼接模块,具体用于:
36.根据存储地址的先后顺序,从所述目标用户数据区和各个所述备份用户数据区读取数据,并基于读取的顺序整合成拼接文件。
37.在一种可选的实施例中,所述数据备份模块,具体用于:
38.若所述目标用户数据区和所述备份用户数据区中的数据不同,则分别擦除所述目标用户数据区和所述备份用户数据区的数据,并分别将所述拼接文件写入所述目标用户数据区和所述备份用户数据区。
39.在一种可选的实施例中,所述装置还包括数据挂载模块,用于:
40.将所述目标用户数据区的数据挂载到预设的第一目录中,以及将各所述备份用户数据区的数据分别挂载到对应的第二目录中;
41.所述数据备份模块,具体用于:
42.针对任意一个所述第二目录,检测所述第一目录和所述第二目录的数据是否相同,如果相同,则确定所述目标用户数据区和所述第二目录对应的所述备份用户数据区中的数据相同;
43.分别擦除所述第一目录和各所述第二目录挂载的数据,并写入第三目录挂载的数据;
44.所述数据挂载模块,还用于将所述第三目录与所述拼接文件进行挂载。
45.第三方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现第一方面的程序升级方法。
46.第四方面,本技术实施例还提供了一种电子设备,包括闪存存储器和处理器,所述闪存存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器实现第一方面的程序升级方法。
47.第二方面至第四方面中任意一种实现方式所带来的技术效果可参见第一方面中对应的实现方式所带来的技术效果,此处不再赘述。
附图说明
48.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本
领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
49.图1为本技术实施例提供的一种应用场景示意图;
50.图2为本技术实施例提供的一种闪存存储器分区的示意图;
51.图3为本技术实施例提供的一种程序升级方法的流程图;
52.图4为本技术实施例提供的一种程序更新时用户数据区一分为二的示意图;
53.图5为本技术实施例提供的另一种程序升级方法的流程图;
54.图6为本技术实施例提供的另一种程序升级方法的流程图;
55.图7为本技术实施例提供的另一种程序升级方法的流程图;
56.图8为本技术实施例提供的一种程序升级装置的结构示意图;
57.图9为本技术实施例提供的另一种程序升级装置的结构示意图;
58.图10为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
59.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
60.需要说明的是,本技术的文件中涉及的术语“包括”和“具有”以及它们的变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
61.下面对文中出现的一些词语进行解释:
62.(1)、linux:全称gnu/linux,是一种免费使用和自由传播的类unix操作系统。它能运行主要的unix工具软件、应用程序和网络协议。它支持32位和64位硬件。linux继承了unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的red hat enterprise linux、suse、oracle linux等。linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个大的文件目录。用户要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。
63.(2)、nor flash:nor flash是一种采用非易失闪存技术的存储器,nor flash的特点是芯片内执行(xip,execute in place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统ram中。nor flash的传输效率很高,在1~4mb的小容量时具有很高的成本效益。
64.(3)、挂载(mounting):是指由操作系统使一个存储设备(诸如硬盘、cd

rom或共享资源)上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程。一般来说,当计算机关机时,每个已挂载存储都将经历一次卸载,以确保所有排队的数据被写入,并保证介质上文件系统结构的完整性。在linux操作系统中,挂载是一个非常重要的功能,使用非常频繁,其具体为将一个设备(通常是存储设备)挂接到一个已存在的目录上。
65.(4)闪存存储器(flash memory):是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位(注意:nor flash为字节存储。),区块大小一般为256kb到20mb。闪存是电子可擦除只读存储器(eeprom)的变种,闪存与eeprom不同的是,eeprom能在字节水平上进行删除和重写而不是整个芯片擦写,而闪存的大部分芯片需要块擦除。由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的bios(基本程序)、pda(个人数字助理)、数码相机中保存资料等。
66.使用linux系统的终端设备,如网络摄像机(ip camera,ipc),目前在行业各个场景中广泛应用,随着成本要求越来越高,一般都采用闪存(flash)存储器作为存储装置,目前主流的低成本方案中都采用小容量nor flash来存储。闪存(flash)存储器往往被分成boot区、分区表、内核区、rootfs区、用户数据区。所有分区只有用户数据区和分区表是可写的,在小容量nor flash中,往往采用jffs2文件系统来挂载。基于存储空间等原因,该种类型的终端设备通常不设用户数据区的备份区。
67.现有的程序升级方法,如果终端设备有用户数据的备份区,若在用户数据更新时发生掉电、异常重启等情况时,用户数据丢失时往往可以恢复。然而,基于存储空间等原因,该类型的终端设备通常没有用户数据区的备份区。因此,如何提供一种让没有备份区的终端设备得到备份区的程序升级方法,具有重要的现实意义。
68.为解决现有存在的技术问题,本技术实施例提供了一种程序升级方法、装置、介质和电子设备,通过响应于接收到的用户输入的程序升级指令,根据升级数据包,更新闪存存储器所包含的版本文件分区和分区表;根据更新的所述分区表,将所述闪存存储器的用户数据区划分为目标用户数据区和至少一个备份用户数据区;将所述目标用户数据区和各个所述备份用户数据区的数据,整合成拼接文件;将所述拼接文件分别写入所述目标用户数据区和各个所述备份用户数据区;其中所述备份用户数据区用于所述目标用户数据区的数据异常时使所述程序能正常启动。该方法在对未设置用户数据区的备份区的终端设备进行程序升级时,根据更新的所述分区表,将所述闪存存储器的用户数据区划分为目标用户数据区和至少一个备份用户数据区,将所述目标用户数据区和各个所述备份用户数据区的数据,整合成拼接文件,并根据拼接文件实现保留原有用户数据并进一步备份,从而让没有备份区的终端设备得到备份区。
69.为了使本技术实施例的发明目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,显然,所描述的实施例仅仅是本技术一部份实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
70.需要说明的是,下述本技术实施例描述的应用场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
71.图1示出了本技术实施例提供的一种应用场景,参见图1所示,该应用场景中包括终端设备200、服务器100。服务器100和终端设备200处于同一数据网络,该数据网络可以是有线网络或者无线网络。当服务器100和终端设备200处于同一数据网络时,终端设备200可
以与服务器100进行通信。服务器100可以是对终端设备200进行升级服务的云服务器。终端设备200包括闪存存储器201。可以理解地,服务器100和终端设备200还可以是分别处于相互连接不同数据网络,图1描述的应用场景的同一数据网络并不构成对本技术实施例提供的技术方案的限定。图2示出了本技术实施例提供一种的闪存存储器分区的示意图。如图2所示,闪存存储器主要划分为boot区、分区表、内核区、rootfs区、用户数据区。其中,boot区通常用于存储启动linux时使用的核心文件;分区表是统一管理闪存存储器划分的指导文件;内核区用于存储内核文件;rootfs区包含系统启动时所必须的目录和关键性的文件,以及使其他文件系统得以挂载所必要的文件;用户数据区通常存储用户数据。闪存存储器划分的上述分区中只有用户数据区和分区表是可写的。闪存存储器分区划分得到的除用户数据区和分区表两个区之外的其它几个分区,可以统称为版本文件分区。对终端设备200进行程序升级时,更新版本程序可以通过更新终端设备200的闪存存储器201包含的boot区、分区表、内核区、rootfs区、用户数据区来实现。在本技术的以下实施例,均以终端设备200的闪存存储器201分区划分包括版本文件分区、用户数据区和分区表,其中版本文件分区包括boot区、内核区、rootfs区为例进行说明。
72.服务器100不定期向终端设备200推送程序升级提醒消息,用户可以通过终端设备200点击确认接收到的程序升级提醒消息,从而向终端设备200输入程序升级指令。终端设备200响应于接收到的用户输入的程序升级指令,根据升级数据包,更新闪存存储器201所包含的版本文件分区和分区表;根据更新的分区表,将闪存存储器201的用户数据区划分为目标用户数据区和至少一个备份用户数据区;将目标用户数据区和各个备份用户数据区的数据,整合成拼接文件;将拼接文件分别写入目标用户数据区和各个备份用户数据区;其中备份用户数据区用于目标用户数据区的数据异常时使程序能正常启动。
73.本技术实施例提供了一种程序升级方法,如图3所示,包括如下步骤:
74.步骤s301,响应于接收到的用户输入的程序升级指令,根据升级数据包,更新闪存存储器所包含的版本文件分区和分区表。
75.其中,闪存存储器包括用于存储程序的程序数据的多个预设分区;多个预设分区包括版本文件分区、分区表和用于存储用户数据的用户数据区;分区表用于确定各个预设分区的存储位置。
76.可选地,版本文件分区包括boot区、内核区、rootfs区。
77.示例性地,终端设备200响应于接收到的用户输入的程序升级指令,从服务器100下载升级数据包,并根据升级数据包,更新闪存存储器201所包含的版本文件分区和分区表,其中,版本文件分区是闪存存储器201所包含的用于存储程序的程序数据的多个预设分区中的,除分区表和用户数据区之外的其它分区:boot区、内核区、rootfs区。
78.步骤s302,根据更新的分区表,将闪存存储器的用户数据区划分为目标用户数据区和至少一个备份用户数据区。
79.本技术的实施例中,根据更新的分区表对闪存存储器中的用户数据区进行划分的过程,可以是划分为目标用户数据区和一个备份用户数据区,也可以是划分为目标用户数据区和多个备份用户数据区。本技术对划分得到的备份用户数据区的数量不作具体限定。
80.在一些可选的实施例中,根据更新的分区表,将闪存存储器的用户数据区划分为目标用户数据区和至少一个备份用户数据区,可以通过以下方式实现:
81.根据更新的分区表中的用户数据区参数,调整用户数据区的存储地址,以将闪存存储器的用户数据区划分为目标用户数据区和至少一个备份用户数据区。
82.用户数据区参数是在终端设备在更新分区表时获取的。用户数据区参数的获取方式包括但不限于:采集用户输入数据、获取预设的默认参数。
83.当终端通过采集用户输入数据获取用户数据区参数时,可以是获取用户输入的划分数量、各个划分后的新用户数据区对应的开始地址及存储容量。其中,划分数量表示本次升级需要将升级前的用户数据区的整体存储区域划分为几个用户数据区。
84.示例性地,用户数据区参数包括用户数据区的开始地址和存储容量。在更新分区表时,终端设备获取用户响应于提示用户输入用户数据区参数的提示信息而输入的用户数据区的划分数量、开始地址和存储容量并进行存储。
85.当终端通过获取预设的默认参数获取用户数据区参数时,可以直接获取预设的用户数据区的划分数量、各个划分后的新用户数据区的开始地址及存储容量。
86.示例性地,更新分区表时,终端设备200可以直接根据预设数据获取用户数据区的划分数量、各个划分后的新用户数据区的开始地址及存储容量,得到更新后的分区表。
87.图4示出了本技术的一种实施例的程序更新时用户数据区一分为二的示意图。如图4所示,终端设备200在根据程序升级包进行完升级boot区、内核区、rootfs区、分区表后,根据新的分区表调整各分区位置,从而可以将升级前的用户数据区一分为二,得到用户数据区1和用户数据区2。可以理解地,图4中将升级前的用户数据区一分为二仅是举例说明,本技术实施例提供的程序升级方法还可以将升级前的用户数据区分成更多用户数据区,图4并不构成对本技术实施例提供的技术方案的限定。
88.可以理解地,本实施例提供的程序升级方法也适用于对未设置用户数据区的备份区的终端设备进行多次升级。如果该终端设备在前次升级时闪存存储器的用户数据区已经被划分为两个分区或多个分区,本次升级时,仍然是根据本次升级所更新的分区表,将闪存存储器的用户数据区划分为目标用户数据区和至少一个备份用户数据区:如果本次升级时更新的分区表的用户数据区参数与前次升级时的用户数据区参数相比无变化,那么本次升级划分得到的目标用户数据区和至少一个备份用户数据区将和上次升级的划分会保持一致;如果本次升级时更新的分区表的用户数据区参数与前次升级相比有变化,那么本次升级划分得到的目标用户数据区和至少一个备份用户数据区将和上次升级的划分不同,也即是根据本次升级的更新的分区表获取用户数据区参数,对终端设备的用户数据区进行重新划分,从而得到的新的目标用户数据区和新的至少一个备份用户数据区。
89.在本技术的一些实施例中,在根据更新的分区表,将闪存存储器的用户数据区划分为目标用户数据区和至少一个备份用户数据区时,若判断更新的分区表只存在一个用户数据区,产生告警信息。
90.示例性地,终端设备200在根据更新的分区表将闪存存储器的用户数据区划分为目标用户数据区和至少一个备份用户数据区时,判断更新的分区表是否只存在一个用户数据区,若判断更新的分区表只存在一个用户数据区,则产生告警信息,以示提醒。例如,显示“错误,只处在一个用户数据区”的提示信息。
91.步骤s303,将目标用户数据区和各个备份用户数据区的数据,整合成拼接文件。
92.示例性地,终端设备200将目标用户数据区和各个备份用户数据区的数据,整合成
拼接文件data.img。可以理解地,此处的拼接文件仅是举例,其他文件类型的拼接文件同样适用本技术实施例。本技术的以下实施例,均以拼接文件data.img为例进行说明。
93.在本技术的一些实施例中,将目标用户数据区和各个备份用户数据区的数据,整合成拼接文件,具体为:根据存储地址的先后顺序,从目标用户数据区和各个备份用户数据区读取数据,并基于读取的顺序整合成拼接文件。
94.示例性地,终端设备200根据存储地址的先后顺序,连续读取目标用户数据区和各个备份用户数据区的分区数据,并基于读取的顺序整合成拼接文件data.img。
95.步骤s304,将拼接文件分别写入目标用户数据区和各个备份用户数据区。
96.其中,备份用户数据区用于目标用户数据区的数据异常时使程序能正常启动。
97.示例性地,终端设备将拼接文件data.img分别写入目标用户数据区和各个备份用户数据区,其中,备份用户数据区用于目标用户数据区的数据异常时使程序能正常启动。
98.在一些可选的实施例中,步骤s304,将拼接文件分别写入目标用户数据区和各个备份用户数据区,如图5所示,可以通过以下步骤实现:
99.步骤s501,若目标用户数据区和备份用户数据区中的数据不同,则分别擦除目标用户数据区和备份用户数据区的数据,并分别将拼接文件写入目标用户数据区和备份用户数据区。
100.示例性地,终端设备可以将目标用户数据区和各个备份用户数据区分别挂载到预设的一个目标目录文件和多个备份目录文件,使目标目录文件挂载目标用户数据区,且多个备份目录文件分别挂载一个备份用户数据区,然后根据目录文件对应的分区的存储地址的先后顺序逐一选取备份目录文件并分别与目标目录文件的数据比较,若均相同,则确定目标用户数据区和该备份用户数据区中的数据相同;若目标用户数据区和备份用户数据区中的数据不同,则分别擦除目标用户数据区和备份用户数据区的数据,并分别将拼接文件写入目标用户数据区和备份用户数据区。
101.本技术实施例提供的程序升级方法,在对未设置用户数据区的备份区的终端设备进行程序升级时,通过目标用户数据区保留升级前的用户数据,通过各个备份用户数据区,对升级前的用户数据作进一步的备份。该程序升级方法,通过在对未设置用户数据区的备份区的终端设备进行程序升级时,设置至少一个备份用户数据区,实现保留原有用户数据并进一步备份,从而让没有备份区的终端设备得到备份区,提高终端设备的数据可恢复性。
102.在一种可选的实施例中,在上述步骤s501中的,确定目标用户数据区和备份用户数据区中的数据不同之前,如图6所示,包括:
103.s601,将目标用户数据区的数据挂载到预设的第一目录中,以及将各备份用户数据区的数据分别挂载到对应的第二目录中。
104.示例性地,终端设备200将目标用户数据区的数据挂载到预设的第一目录a中,以及将各备份用户数据区的数据分别挂载到对应的第二目录b中。
105.s602,通过下列方式判断目标用户数据区和备份用户数据区中的数据是否相同:
106.针对任意一个第二目录,检测第一目录和第二目录的数据是否相同,如果相同,则确定目标用户数据区和第二目录对应的备份用户数据区中的数据相同。
107.示例性地,终端设备200通过下列方式判断目标用户数据区和备份用户数据区中的数据是否相同:
108.针对任意一个第二目录b,检测第一目录a和第二目录b的数据是否相同,如果相同,则确定目标用户数据区和第二目录b对应的备份用户数据区中的数据相同。
109.该实施例中,上述步骤s501,若目标用户数据区和备份用户数据区中的数据不同,则将目标用户数据区和备份用户数据区的数据分别擦除并写入拼接文件,可以通过以下步骤实现:
110.s603,若目标用户数据区和备份用户数据区中的数据不同,则分别擦除第一目录和各第二目录挂载的数据,并写入第三目录挂载的数据,其中第三目录是与拼接文件进行挂载的目录。
111.示例性地,若终端设备200确定目标用户数据区和备份用户数据区中的数据不同,则分别擦除第一目录a和各个第二目录b挂载的数据,并写入第三目录c挂载的数据,其中第三目录c是与拼接文件data.img进行挂载的目录。
112.在另外一些实施例中,终端设备200可以采用计数器记录本次程序升级的下电重启并内核启动后,向第二目录b挂载备份用户数据区的次数,当确定挂载到目标用户数据区和备份用户数据区中的数据不同,若当前向第二目录b挂载备份用户数据区的次数大于预设阈值,例如预设阈值为2,则只擦除第二目录挂载的数据,并对第二目录挂载的分区写入第三目录挂载的数据。该实施方式可以控制对第一目录的数据的擦除及写入的次数。
113.在另外一种实施例中,程序升级过程,如图7所示,执行以下步骤:
114.步骤s701,响应于接收到的用户输入的程序升级指令,下载升级数据包。
115.步骤s702,根据升级数据包,更新闪存存储器所包含的版本文件分区和分区表。
116.其中,版本文件分区包括:boot区、内核区、rootfs区。
117.具体地,更新分区表时,获取用户数据参数。
118.步骤s703,响应于下电重启指令,下电重启闪存存储器。
119.步骤s704,根据更新的分区表,将闪存存储器的用户数据区划分为目标用户数据区和备份用户数据区。
120.具体地,根据更新的分区表中的用户数据区参数,调整用户数据区的存储地址,以将闪存存储器的用户数据区划分为目标用户数据区和备份用户数据区。
121.可选地,备份用户数据区的数量为多个。
122.步骤s705,判断更新的分区表只存在一个用户数据区。若是,执行步骤s711;若否,执行步骤s706。
123.步骤s706,连续读取目标用户数据区和备份用户数据区的分区内容,组成拼接文件并存储到内存。
124.步骤s707,挂载目标用户数据区在第一目录,将备份用户数据区挂载到第二目录,将拼接文件到第三目录。
125.步骤s708,检查第一目录和第二目录中的数据是否存在且相同。若是,执行步骤s710;若否,执行步骤s709。
126.步骤s709,根据第三目录,把拼接文件拷贝到第一目录和第二目录。
127.步骤s710,删除第三目录对应的拼接文件。
128.示例性地,终端设备200删除第三目录对应的拼接文件data.img,以节省内存空间。
129.步骤s711,产生告警信息。
130.步骤s701~步骤s711中各个步骤具体过程可以参照前述实施例中的方法步骤执行,在此不再赘述。
131.基于同一发明构思,本技术实施例中还提供了一种程序升级装置。由于该装置是本技术实施例提供的程序升级方法对应的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见上述方法的实施,重复之处不再赘述。
132.图8示出了本技术实施例提供的一种程序升级装置的结构示意图,如图8所示,该程序升级装置包括程序升级模块801、数据分区模块802、数据拼接模块803、数据备份模块804。
133.其中,程序升级模块801,用于响应于接收到的用户输入的程序升级指令,根据升级数据包,更新闪存存储器所包含的版本文件分区和分区表;
134.数据分区模块802,用于根据更新的分区表,将闪存存储器的用户数据区划分为目标用户数据区和至少一个备份用户数据区;
135.数据拼接模块803,用于将目标用户数据区和各个备份用户数据区的数据,整合成拼接文件;
136.数据备份模块804,用于将拼接文件分别写入目标用户数据区和各个备份用户数据区;其中备份用户数据区用于目标用户数据区的数据异常时使程序能正常启动。
137.在一种可选的实施例中,数据分区模块802,具体用于:
138.根据更新的分区表中的用户数据区参数,调整用户数据区的存储地址,以将闪存存储器的用户数据区划分为目标用户数据区和至少一个备份用户数据区。
139.在一种可选的实施例中,数据拼接模块803,具体用于:
140.根据存储地址的先后顺序,从目标用户数据区和各个备份用户数据区读取数据,并基于读取的顺序整合成拼接文件。
141.在一种可选的实施例中,数据备份模块804,具体用于:
142.若目标用户数据区和备份用户数据区中的数据不同,则分别擦除目标用户数据区和备份用户数据区的数据,并分别将拼接文件写入目标用户数据区和备份用户数据区。
143.在一种可选的实施例中,如图9所示,还包括数据挂载模块901,用于:
144.将目标用户数据区的数据挂载到预设的第一目录中,以及将各备份用户数据区的数据分别挂载到对应的第二目录中;
145.数据备份模块804,具体用于:
146.针对任意一个第二目录,检测第一目录和第二目录的数据是否相同,如果相同,则确定目标用户数据区和第二目录对应的备份用户数据区中的数据相同;
147.分别擦除第一目录和各第二目录挂载的数据,并写入第三目录挂载的数据;
148.数据挂载模块901,还用于将第三目录与拼接文件进行挂载。
149.与上述方法实施例基于同一发明构思,本技术实施例中还提供了一种电子设备。该电子设备可以用于程序升级。在一种实施例中,该电子设备为终端设备,例如图1中的终端设备200。在该实施例中,电子设备的结构可以如图10所示,包括存储器101,通讯模块103以及一个或多个处理器102。其中,存储器101为闪存存储器。
150.存储器101,用于存储处理器102执行的计算机程序。存储器101可主要包括存储程
序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
151.存储器101可以是易失性存储器(volatile memory),例如随机存取存储器(random

access memory,ram);存储器101也可以是非易失性存储器(non

volatile memory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid

state drive,ssd)、或者存储器101是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器101可以是上述存储器的组合。
152.处理器102,可以包括一个或多个中央处理单元(central processing unit,cpu)或者为数字处理单元等等。处理器102,用于调用存储器101中存储的计算机程序时实现上述程序升级方法。
153.通讯模块103用于与终端设备和其他服务器进行通信。
154.本技术实施例中不限定上述存储器101、通讯模块103和处理器102之间的具体连接介质。本技术实施例在图10中以存储器101和处理器102之间通过总线104连接,总线104在图10中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线104可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
155.根据本技术的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中的程序升级方法。所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
156.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1