CN104615470A - 一种嵌入式设备程序更新方法 - Google Patents
一种嵌入式设备程序更新方法 Download PDFInfo
- Publication number
- CN104615470A CN104615470A CN201510095694.6A CN201510095694A CN104615470A CN 104615470 A CN104615470 A CN 104615470A CN 201510095694 A CN201510095694 A CN 201510095694A CN 104615470 A CN104615470 A CN 104615470A
- Authority
- CN
- China
- Prior art keywords
- installation kit
- write
- service packs
- old
- embedded device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种嵌入式设备程序更新方法,该方法包括:计算出不同版本的差异,生成不同的补丁包,嵌入式设备与服务器端进行对比,若发现最新版本,则进行增量更新,将补丁包的URL发送到设备端;通过应用补丁包的URL下载补丁包,在嵌入式设备通过补丁合成新的安装包并安装。本发明实现差异化增量更新,可节省网络资源和程序更新时间。
Description
技术领域
本发明涉及嵌入式设备程序更新方法,特别涉及一种嵌入式系统的嵌入式设备程序更新方法。
背景技术
信息技术的飞速发展推进了医疗技术的革命,在3G网络和智能终端基础上发展起来的移动医疗技术取得了长足进步。医生可使用平板电脑等移动终端设备通过无线网络接入医院网络,进行病例查验、通讯,辅助诊断等工作。由于系统的修复和新特性的加入导致应用的更新升级变得非常频繁,程序的安装包也在不断增大。即使新包与旧包只有略微的差别,每次版本的升级仍下载完整的新安装包进行替换安装,这种全量更新的方式浪费了较多的客户端网络资源,同时也增加了升级过程所耗费的时间。
因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。
发明内容
为解决上述现有技术所存在的问题,本发明提出了一种嵌入式设备程序更新方法,包括:
一种嵌入式设备程序更新方法,用于更新嵌入式设备的应用程序,其特征在于,包括:
服务器端保存多个应用的多个版本,其中包含最新版本,并计算出不同版本的差异,生成不同的补丁包保存在服务器端,其中每个补丁包的生成用单独的线程来实现;
用户查看嵌入式设备上已安装的所有应用列表,选择需要升级的应用;
嵌入式设备连接服务器,上传设备上已安装的安装包信息;
服务器收到上传的程序列表信息后,与服务器端进行对比,查看是否有最新版本,若发现最新版本并已经合成了补丁包,则进行增量更新,将补丁包的URL发送到设备端;
当用户收到可更新信息时,用Handler发送消息,显示在界面上;
当触发某个应用的下载时,通过应用补丁包的URL下载补丁包,在嵌入式设备通过补丁合成新的安装包并安装。
优选地,所述计算出不同版本的差异,生成不同的补丁包保存在服务器端,进一步包括:
定义两个数组newbuf[],oldbuf[],将新旧安装包的文件序列分别写入其中,并分别获得其长度newsize,oldsize;利用LCS找出最大公共子序列;
两个序列对比同一位置的数据,将差异数据写入diffBlock数据段,表示两个序列同一位置的差异数据段;
计算出多余的字符串长度,写入extlen,该extlen表示extblock的长度,extblock表示新包与旧包相比的额外数据段;
将newbuf[j+1,j+1+extlen]写入extblock数据段;
将oldbuf[j+1,j+1+invalidlen]写入ctrlblock,其中invalidlen表示新旧安装包序列对比后,旧安装包中的无效数据段长度;
ctrlblock包含一些记录控制信息的小块,其内容包括从旧包和diffBlock读取的序列长度,从extblock中读取的序列长度,以及从旧包中跳过不读的序列长度;
将各个数据段写入补丁文件中,其中diffBlock与extraBlock经过gzip算法压缩后写入补丁文件中,由于diffBlock记录的是新版程序安装包和旧版程序安装包各个相似段的差异。
优选地,所述嵌入式设备通过补丁合成新的安装包,进一步包括:
定义数组oldbuf[]写入旧安装包序列,读取补丁包中ctrlblock中写入的控制信息;
根据对应的控制信息在oldbuf[]与补丁包中交替读取数据,写入newbuf[]中;
基于newbuf[]合成新的安装包序列。
本发明相比现有技术,具有以下优点:
本发明实现差异化增量更新,可节省网络资源和程序更新时间。
附图说明
图1是根据本发明实施例的嵌入式设备程序更新方法的流程图。
具体实施方式
下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
增量更新是基于差异化算法计算出两个版本的差异化序列,客户端只需要更新下载该序列即可。因此本文提出一种增量更新方式来减少应用升级时所需的数据流量。
本发明的一方面提供了一种嵌入式设备程序更新方法。图1是根据本发明实施例的嵌入式设备程序更新方法流程图。
为了实现应用的增量更新,使用客户端/服务器模型,客户端与服务端是同一个系统中的不同进程,客户端根据需求向服务端请求某种服务。在服务器端保存应用的多个版本,计算不同版本之间的差异数据,生成不同的补丁包下发到客户端,其中每个补丁包的生成用单独的线程来实现,可以提高CPU的利用率。生成补丁包后在设备客户端合成新的安装包。由此可见,增量更新的关键是服务器端差异生成方法与客户端安装包合成方法的实现。
1版本差异生成过程
利用LCS找出最大公共子序列,然后再加上额外信息组成补丁包,这种方法可以产生小的补丁。
首先定义两个数组newbuf[],oldbuf[],将新旧安装包的文件序列分别写入其中,并获得其长度newsize,oldsize;利用LCS找出最大公共子序列;
两个序列对比同一位置的数据,将差异数据写入diffBlock数据段,表示两个序列同一位置的差异数据段;
计算出多余的字符串长度,写入extlen,该extlen表示extblock的长度;
将newbuf[j+1,j+1+extlen]写入extblock数据段,extblock表示新包与旧包相比的额外数据段;
将oldbuf[j+1,j+1+invalidlen]写入ctrlblock,invalidlen表示新旧安装包序列对比后,旧安装包中的无效数据段长度;ctrlblock包含一些记录控制信息的小块,其内容包括从旧包和diffBlock读取的序列长度,从extblock中读取的序列长度,以及从旧包中跳过不读的序列长度;
将各个数据段写入补丁文件中,其中diffBlock与extraBlock经过gzip算法压缩后写入补丁文件中,由于diffBlock记录的是新版程序安装包和旧版程序安装包各个相似段的差异,所以diffBlock的取值都较小且取值接近,经过gzip算法达到较大的压缩率,可以最大化的减少补丁包的大小,更好的实现增量更新。
2补丁包的实现过程
由差异生成产生的补丁包主要含6部分内容:ctrlBlock_length(ctrlBlock的长度)、diffBlock_length(diffBlock的长度)、newFile_length(新版本文件大小)、ctrlBlock、diffBlock、extraBlock。根据补丁序列的内容,将补丁包与本机的旧安装包合成,生成新安装包。
定义数组oldbuf[]写入旧安装包序列,读取补丁包中ctrlblock中写入的控制信息,根据对应的控制信息在oldbuf[]与补丁包中交替读取数据,写入newbuf[]中,合成新的安装包序列。
结合上述差异生成方法和补丁实现方法,现详细说明本发明优选的完成一次完整的增量更新具体过程。如下:
(1)服务器端保存多个应用的多个版本,其中包含最新版本,并计算出不同版本的差异,生成不同的补丁包保存在服务器端。
(2)查看嵌入式设备上已安装的所有应用列表,用户可以根据其意愿选择需要升级的应用。
(3)设备连接服务器,上传设备上已安装的安装包信息,包括安装包名,版本号,渠道号等。
(4)服务器收到上传的程序列表信息后,与服务器端进行对比查看是否有最新版本,若发现最新版本并已经合成了补丁包,则进行增量更新,否则为普通更新。将补丁包的URL发送到设备端。
(5)当用户收到可更新信息时,用Handler发送消息,显示在界面上。
(6)当用户触发某个应用的下载时,通过应用补丁包的URL下载补丁包,在设备端通过补丁合成新的安装包并安装。
综上所述,本发明提出了使用差异化算法,在服务器端对比新旧安装包的文件序列生成补丁包。设备端用户通过补丁包的URL下载补丁包并合成新的安装包,实现差异化增量更新。本发明可节省网络资源和程序更新时间。
显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和程序结合。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
Claims (3)
1.一种嵌入式设备程序更新方法,用于更新嵌入式设备的应用程序,其特征在于,包括:
服务器端保存多个应用的多个版本,其中包含最新版本,并计算出不同版本的差异,生成不同的补丁包保存在服务器端,其中每个补丁包的生成用单独的线程来实现;
用户查看嵌入式设备上已安装的所有应用列表,选择需要升级的应用;
嵌入式设备连接服务器,上传设备上已安装的安装包信息;
服务器收到上传的程序列表信息后,与服务器端进行对比,查看是否有最新版本,若发现最新版本并已经合成了补丁包,则进行增量更新,将补丁包的URL发送到设备端;
当用户收到可更新信息时,用Handler发送消息,显示在界面上;
当触发某个应用的下载时,通过应用补丁包的URL下载补丁包,在嵌入式设备通过补丁合成新的安装包并安装。
2.根据权利要求1所述的方法,其特征在于,所述计算出不同版本的差异,生成不同的补丁包保存在服务器端,进一步包括:
定义两个数组newbuf[],oldbuf[],将新旧安装包的文件序列分别写入其中,并分别获得其长度newsize,oldsize;利用LCS找出最大公共子序列;
两个序列对比同一位置的数据,将差异数据写入diffBlock数据段,表示两个序列同一位置的差异数据段;
计算出多余的字符串长度,写入extlen,该extlen表示extblock的长度,extblock表示新包与旧包相比的额外数据段;
将newbuf[j+1,j+1+extlen]写入extblock数据段;
将oldbuf[j+1,j+1+invalidlen]写入ctrlblock,其中invalidlen表示新旧安装包序列对比后,旧安装包中的无效数据段长度;
ctrlblock包含一些记录控制信息的小块,其内容包括从旧包和diffBlock读取的序列长度,从extblock中读取的序列长度,以及从旧包中跳过不读的序列长度;
将各个数据段写入补丁文件中,其中diffBlock与extraBlock经过gzip算法压缩后写入补丁文件中,由于diffBlock记录的是新版程序安装包和旧版程序安装包各个相似段的差异。
3.根据权利要求2所述的方法,其特征在于,所述嵌入式设备通过补丁合成新的安装包,进一步包括:
定义数组oldbuf[]写入旧安装包序列,读取补丁包中ctrlblock中写入的控制信息;
根据对应的控制信息在oldbuf[]与补丁包中交替读取数据,写入newbuf[]中;
基于newbuf[]合成新的安装包序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510095694.6A CN104615470A (zh) | 2015-03-04 | 2015-03-04 | 一种嵌入式设备程序更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510095694.6A CN104615470A (zh) | 2015-03-04 | 2015-03-04 | 一种嵌入式设备程序更新方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104615470A true CN104615470A (zh) | 2015-05-13 |
Family
ID=53149929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510095694.6A Pending CN104615470A (zh) | 2015-03-04 | 2015-03-04 | 一种嵌入式设备程序更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104615470A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105553727A (zh) * | 2015-12-18 | 2016-05-04 | 北京奇虎科技有限公司 | 一种更新配置信息的方法、装置及系统 |
CN107391182A (zh) * | 2017-06-30 | 2017-11-24 | 北京金山安全软件有限公司 | 一种主题安装包的生成方法、装置、服务器及存储介质 |
CN108446127A (zh) * | 2017-02-14 | 2018-08-24 | 百度在线网络技术(北京)有限公司 | 更新包的处理方法及装置 |
CN108519884A (zh) * | 2017-02-27 | 2018-09-11 | 腾讯科技(深圳)有限公司 | 一种应用程序安装包更新方法、融合方法及相关装置 |
CN109697071A (zh) * | 2017-10-24 | 2019-04-30 | 腾讯科技(深圳)有限公司 | 安装包合成方法、装置、终端及存储介质 |
CN110719328A (zh) * | 2019-10-09 | 2020-01-21 | 广州粒子微电子有限公司 | 一种下载程序的方法 |
CN111654548A (zh) * | 2020-06-05 | 2020-09-11 | 网易(杭州)网络有限公司 | 补丁文件的下载方法、装置和系统及电子设备 |
CN112069432A (zh) * | 2020-07-15 | 2020-12-11 | 北京邮电大学 | 基于web的数据可视化图表渲染优化方法及系统 |
CN112657196A (zh) * | 2020-12-21 | 2021-04-16 | 北京像素软件科技股份有限公司 | 资源更新方法、装置、计算机设备和可读存储介质 |
CN113590165A (zh) * | 2021-09-27 | 2021-11-02 | 成都千嘉科技有限公司 | 智能远传表嵌入式软件远程升级方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070208786A1 (en) * | 2006-03-03 | 2007-09-06 | Samsung Electronics Co., Ltd. | Method and apparatus for updating software |
US20070274598A1 (en) * | 2006-05-10 | 2007-11-29 | Research In Motion Limited | Method and system for incremental patching of binary files |
CN103647816A (zh) * | 2013-12-03 | 2014-03-19 | 北京奇虎科技有限公司 | 一种应用软件升级的方法及装置 |
CN103699408A (zh) * | 2013-12-12 | 2014-04-02 | 乐视网信息技术(北京)股份有限公司 | 一种软件升级的方法和设备 |
-
2015
- 2015-03-04 CN CN201510095694.6A patent/CN104615470A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070208786A1 (en) * | 2006-03-03 | 2007-09-06 | Samsung Electronics Co., Ltd. | Method and apparatus for updating software |
US20070274598A1 (en) * | 2006-05-10 | 2007-11-29 | Research In Motion Limited | Method and system for incremental patching of binary files |
CN103647816A (zh) * | 2013-12-03 | 2014-03-19 | 北京奇虎科技有限公司 | 一种应用软件升级的方法及装置 |
CN103699408A (zh) * | 2013-12-12 | 2014-04-02 | 乐视网信息技术(北京)股份有限公司 | 一种软件升级的方法和设备 |
Non-Patent Citations (1)
Title |
---|
张敏 等: "基于Android平台差异化增量更新的实现", 《西安邮电大学学报》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105553727A (zh) * | 2015-12-18 | 2016-05-04 | 北京奇虎科技有限公司 | 一种更新配置信息的方法、装置及系统 |
CN108446127B (zh) * | 2017-02-14 | 2021-12-24 | 百度在线网络技术(北京)有限公司 | 更新包的处理方法及装置 |
CN108446127A (zh) * | 2017-02-14 | 2018-08-24 | 百度在线网络技术(北京)有限公司 | 更新包的处理方法及装置 |
CN108519884A (zh) * | 2017-02-27 | 2018-09-11 | 腾讯科技(深圳)有限公司 | 一种应用程序安装包更新方法、融合方法及相关装置 |
CN107391182B (zh) * | 2017-06-30 | 2020-08-07 | 北京金山安全软件有限公司 | 一种主题安装包的生成方法、装置、服务器及存储介质 |
CN107391182A (zh) * | 2017-06-30 | 2017-11-24 | 北京金山安全软件有限公司 | 一种主题安装包的生成方法、装置、服务器及存储介质 |
CN109697071A (zh) * | 2017-10-24 | 2019-04-30 | 腾讯科技(深圳)有限公司 | 安装包合成方法、装置、终端及存储介质 |
CN109697071B (zh) * | 2017-10-24 | 2022-02-08 | 腾讯科技(深圳)有限公司 | 安装包合成方法、装置、终端及存储介质 |
CN110719328A (zh) * | 2019-10-09 | 2020-01-21 | 广州粒子微电子有限公司 | 一种下载程序的方法 |
CN111654548A (zh) * | 2020-06-05 | 2020-09-11 | 网易(杭州)网络有限公司 | 补丁文件的下载方法、装置和系统及电子设备 |
CN111654548B (zh) * | 2020-06-05 | 2023-04-18 | 网易(杭州)网络有限公司 | 补丁文件的下载方法、装置和系统及电子设备 |
CN112069432A (zh) * | 2020-07-15 | 2020-12-11 | 北京邮电大学 | 基于web的数据可视化图表渲染优化方法及系统 |
CN112069432B (zh) * | 2020-07-15 | 2022-08-19 | 北京邮电大学 | 基于web的数据可视化图表渲染优化方法及系统 |
CN112657196A (zh) * | 2020-12-21 | 2021-04-16 | 北京像素软件科技股份有限公司 | 资源更新方法、装置、计算机设备和可读存储介质 |
CN113590165A (zh) * | 2021-09-27 | 2021-11-02 | 成都千嘉科技有限公司 | 智能远传表嵌入式软件远程升级方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104615470A (zh) | 一种嵌入式设备程序更新方法 | |
EP3382534B1 (en) | Page jumping method and apparatus | |
CN103617543B (zh) | 应用程序的推荐方法和装置 | |
CN103973475B (zh) | 差异补丁包生成方法及下载方法、服务器、客户端 | |
JP5096680B2 (ja) | ファームウェアコンポーネントのステータスの発行およびファームウェアコンポーネントのアップデート | |
CN103678319B (zh) | 资源文件更新方法、装置和系统及服务器 | |
CN101836201B (zh) | 用于翻译声明性模型的方法及系统 | |
US20160034655A1 (en) | Medical devices and configuration update management | |
US7136982B2 (en) | Apparatus and method for allocating memory blocks | |
CN104915220A (zh) | 一种客户端应用程序的升级方法和系统、客户端 | |
Panta et al. | Zephyr: Efficient incremental reprogramming of sensor nodes using function call indirections and difference computation | |
CN104919423A (zh) | 对等软件更新 | |
KR20090035044A (ko) | 네트워크에서의 생성자와 콘텐츠 서버 간의 업데이트 패키지 전송을 위한 업데이트 패키지 카탈로그 | |
JP6852148B2 (ja) | ソフトウェアアップデートシステム、ファームウェアオーバーザエアーアップデートシステム、及び、クライアントデバイスをアップデートする方法 | |
CN101778376A (zh) | 一种实现固件无线更新的方法及装置 | |
CN105323269A (zh) | 安卓系统中app的更新方法、终端及存储介质 | |
CN102591678A (zh) | 用于分配软件组件的标识符的方法和系统 | |
CN104852971B (zh) | 一种插件式协议装置及基于插件式协议的数据通信方法 | |
WO2007062294A2 (en) | Managing software configuration of a wireless device | |
CN101360127A (zh) | 文件更新方法及传输系统 | |
CN107122207A (zh) | 软件升级方法、客户端设备及服务器 | |
CN104426924A (zh) | 一种更新应用软件的方法、装置、客户端、服务器及系统 | |
CN112947983A (zh) | 应用程序更新方法及装置、电子设备、存储介质 | |
CN104063243A (zh) | 一种应用于智能穿戴设备的应用商店解决方案 | |
CN102054045A (zh) | 电子装置的资源更新系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150513 |