一种嵌入式设备程序更新方法

文档序号:8298898阅读:614来源:国知局
一种嵌入式设备程序更新方法
【技术领域】
[0001]本发明涉及嵌入式设备程序更新方法,特别涉及一种嵌入式系统的嵌入式设备程序更新方法。
【背景技术】
[0002]信息技术的飞速发展推进了医疗技术的革命,在3G网络和智能终端基础上发展起来的移动医疗技术取得了长足进步。医生可使用平板电脑等移动终端设备通过无线网络接入医院网络,进行病例查验、通讯,辅助诊断等工作。由于系统的修复和新特性的加入导致应用的更新升级变得非常频繁,程序的安装包也在不断增大。即使新包与旧包只有略微的差别,每次版本的升级仍下载完整的新安装包进行替换安装,这种全量更新的方式浪费了较多的客户端网络资源,同时也增加了升级过程所耗费的时间。
[0003]因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。

【发明内容】

[0004]为解决上述现有技术所存在的问题,本发明提出了一种嵌入式设备程序更新方法,包括:
[0005]一种嵌入式设备程序更新方法,用于更新嵌入式设备的应用程序,其特征在于,包括:
[0006]服务器端保存多个应用的多个版本,其中包含最新版本,并计算出不同版本的差异,生成不同的补丁包保存在服务器端,其中每个补丁包的生成用单独的线程来实现;
[0007]用户查看嵌入式设备上已安装的所有应用列表,选择需要升级的应用;
[0008]嵌入式设备连接服务器,上传设备上已安装的安装包信息;
[0009]服务器收到上传的程序列表信息后,与服务器端进行对比,查看是否有最新版本,若发现最新版本并已经合成了补丁包,则进行增量更新,将补丁包的URL发送到设备端;
[0010]当用户收到可更新信息时,用Handler发送消息,显示在界面上;
[0011]当触发某个应用的下载时,通过应用补丁包的URL下载补丁包,在嵌入式设备通过补丁合成新的安装包并安装。
[0012]优选地,所述计算出不同版本的差异,生成不同的补丁包保存在服务器端,进一步包括:
[0013]定义两个数组newbuf [],oldbuf □,将新旧安装包的文件序列分别写入其中,并分别获得其长度newsize,oldsize ;利用LCS找出最大公共子序列;
[0014]两个序列对比同一位置的数据,将差异数据写入diffBlock数据段,表示两个序列同一位置的差异数据段;
[0015]计算出多余的字符串长度,写入extlen,该extlen表示extblock的长度,extblock表示新包与旧包相比的额外数据段;
[0016]将newbuf [j+1,j+1+extlen]写入 extblock 数据段;
[0017]将oldbuf[j+l,j+1+invalidlen]写入 ctrlblock,其中 invalidlen 表不新旧安装包序列对比后,旧安装包中的无效数据段长度;
[0018]ctrlblock包含一些记录控制信息的小块,其内容包括从旧包和diffBlock读取的序列长度,从extblock中读取的序列长度,以及从旧包中跳过不读的序列长度;
[0019]将各个数据段写入补丁文件中,其中diffBlock与extraBlock经过gzip算法压缩后写入补丁文件中,由于diffBlock记录的是新版程序安装包和旧版程序安装包各个相似段的差异。
[0020]优选地,所述嵌入式设备通过补丁合成新的安装包,进一步包括:
[0021]定义数组oldbuf[]写入旧安装包序列,读取补丁包中ctrlblock中写入的控制信息;
[0022]根据对应的控制信息在oldbuf []与补丁包中交替读取数据,写入newbuf []中;
[0023]基于newbuf □合成新的安装包序列。
[0024]本发明相比现有技术,具有以下优点:
[0025]本发明实现差异化增量更新,可节省网络资源和程序更新时间。
【附图说明】
[0026]图1是根据本发明实施例的嵌入式设备程序更新方法的流程图。
【具体实施方式】
[0027]下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
[0028]增量更新是基于差异化算法计算出两个版本的差异化序列,客户端只需要更新下载该序列即可。因此本文提出一种增量更新方式来减少应用升级时所需的数据流量。
[0029]本发明的一方面提供了一种嵌入式设备程序更新方法。图1是根据本发明实施例的嵌入式设备程序更新方法流程图。
[0030]为了实现应用的增量更新,使用客户端/服务器模型,客户端与服务端是同一个系统中的不同进程,客户端根据需求向服务端请求某种服务。在服务器端保存应用的多个版本,计算不同版本之间的差异数据,生成不同的补丁包下发到客户端,其中每个补丁包的生成用单独的线程来实现,可以提高CPU的利用率。生成补丁包后在设备客户端合成新的安装包。由此可见,增量更新的关键是服务器端差异生成方法与客户端安装包合成方法的实现。
[0031]I版本差异生成过程
[0032]利用LCS找出最大公共子序列,然后再加上额外信息组成补丁包,这种方法可以产生小的补丁。
[0033]首先定义两个数组newbuf [],oldbuf □,将新旧安装包的文件序列分别写入其中,并获得其长度newsize,oldsize ;利用LCS找出最大公共子序列;
[0034]两个序列对比同一位置的数据,将差异数据写入diffBlock数据段,表示两个序列同一位置的差异数据段;
[0035]计算出多余的字符串长度,写入extlen,该extlen表示extblock的长度;
[0036]将newbuf [j+Ι,j+1+extlen]写入 extblock 数据段,extblock 表示新包与旧包相比的额外数据段;
[0037]将oldbuf [j+1,j+1+invalidlen]写入 ctrlblock,invalidlen 表不新旧安装包序列对比后,旧安装包中的无效数据段长度ctrlblock包含一些记录控制信息的小块,其内容包括从旧包和diffBlock读取的序列长度,从e
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1