CN107783778A - 一种基于特征值查表法的增量升级方法 - Google Patents
一种基于特征值查表法的增量升级方法 Download PDFInfo
- Publication number
- CN107783778A CN107783778A CN201711036946.3A CN201711036946A CN107783778A CN 107783778 A CN107783778 A CN 107783778A CN 201711036946 A CN201711036946 A CN 201711036946A CN 107783778 A CN107783778 A CN 107783778A
- Authority
- CN
- China
- Prior art keywords
- crc
- firmware
- size
- erasable
- upgrading
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开的一种基于特征值查表法的增量升级方法,包括固件的生成和写入两个部分;通过对整个升级过程进行多次的数据校验,确保了写入数据的准确性,将风险降到最低,并且许多CRC数据是在生成固件时打包的,CRC_Table[]的比对也是在工具中高速完成,最大限度的降低了对内存的操作,对提高效率有很大的帮助。
Description
技术领域
本发明涉及设备固件升级技术领域,具体涉及一种基于特征值查表法的增量升级方法。
背景技术
设备升级固件的方式主要有两种,分为全量升级与增量升级。现在很多场景下依旧采用着全量升级的方案,升级速度慢。有时候固件只修改了一点点,却要重新全部下载升级一遍。当固件体积较为庞大的时候,会产生比较差的用户体验。
不同版本的固件变化较小时,增量升级相对于全量升级而言速度要快上许多,这对于提高用户的使用体验有极大的帮助。特别是在升级方式本身擦写速度较慢时,比如无线升级,或者固件较大的情况下,体验上的提升非常显著。
增量升级的实现方式又有很多种,不同的方法效率跟可靠性都会有所差异。增量升级具体是指在进行更新操作时,只更新需要改变的地方,不需要更新或者已经更新过的地方则不会重复更新,增量升级与全量升级相对。这种更新的概念应用范围比较广泛,凡是需要进行数据更新的地方都会用到,如软件更新、数据库更新、杀毒软件的病毒库更新、CMS更新和路由表更新等。
现在的安卓Apk越来越大,很多软件提供商都开始使用增量升级的方,比如谷歌官方,小米等等。具体实现是客户端与服务端对比,并生成版本之间的差异包,用户不用下载整个apk文件,只用下载差异包就可以了,比如用户微博2.0升级到微博3.0,本来微博3.0版本应该是10M,服务器通过生成差异包4M,用户直接下载4M文件并在本地进行合并生成微博3.0版本。
上述增量升级是采用制作不同版本的差异包的方法来实现,因此该方式具有的缺陷是:
(1)对版本存在依赖性,差异包的生成需要依据当前版本号与想要升级的版本号来定。当版本号越来越多,需要生成的差异包也就越多,增加了管理的难度,风险系数上升。
(2)并非直接对需要修改的数据进行操作,而是先经过一层后台的数据处理,对数据进行拼接,再将处理完的数据写入内存。相对于直接擦写而言,效率较低,存在时间浪费。
为此,本发明人经过深入研究,特别提出一种基于特征值查表法的增量升级方法,在可靠性与升级效率上都有较好的表现,本案由此产生。
发明内容
本发明的目的在于提供一种基于特征值查表法的增量升级方法,。
为了实现上述目的,本发明的技术方案如下:
一种基于特征值查表法的增量升级方法,包括:
一、固件的生成:
a、编译生成常规固件,并在固件内预留一块用于写入特定信息的空白空间;
b、拟定一个采样单位大小,依据此大小将固件除预留空间以外区域划分成多个区间,且每个区间大小与采样单位大小一致;采用CRC32算法计算出每个区间的值作为特征值,将所有特征值整合成一张特征值表,记为CRC_Table[],每个特征值的位置与划分的内存区间是一一对应的;
c、对生成的特征值表CRC_Table[]进行一次CRC32运算,将结果记为CRC_Info1,用于升级时进行数据校验;
d、对固件除预留空间以外的所有数据进行一次CRC32运算,将结果记为CRC_Info2,用于升级时进行数据校验;
e、将CRC_Table[]、CRC_Info1和CRC_Info2按顺序插入到固件之前预留的空白空间中,生成一个新的固件;
二、固件的写入:
f、打开升级工具,连接设备,在升级工具中选择想要升级的版本;
g、升级工具读出固件中写入的CRC_Table[]、CRC_Info1和CRC_Info2数据;
h、升级工具对固件中的CRC_Table[]进行一次CRC32计算,判断结果是否与固件中的CRC_Info1一致,如果不一样则认为是固件读取异常,终止升级过程并弹出警告;
i、升级工具对固件中预留的空白空间以外的数据进行一次CRC32计算,判断结果是否与固件中的CRC_Info2一致,如果不一致则认为是固件读取异常,终止升级过程并弹出警告;
j、升级工具读出设备中写入的CRC_Table[]、CRC_Info1和CRC_Info2数据;
k、升级工具对设备中的CRC_Table[]进行一次CRC32计算,判断结果是否与设备1中的CRC_Info1一致,如果不一样则认为是设备读取异常,终止升级过程并弹出警告。
l、升级工具对比固件中的CRC_Table[]和设备中的CRC_Table[],对其存在差异的地方对应的内存区间进行擦写,同时自动判断是要采用整个block擦写的方式或是采用每个采样区间的大小进行擦写的方式处理;
m、升级工具将固件中的CRC_Table[]、CRC_Info1和CRC_Info2数据写入设备中,替换原有的相关数据;
n、升级工具对整个固件进行一次CRC32运算得到Verify_1,发送指令让设备对指定地址的内存进行一次CRC32运算得到Verify_2,并返回给升级工具,当Verify_1和Verify_2相等时,则说明升级成功,如果不等,则说明写入异常,弹出相应警告。
所述步骤I中选择采用整个block擦写的方式或是采用每个采样区间的大小进行擦写的方式处理的判断规则是:设每个采样区间的大小和擦写时间为size_T和time_T,每个block的大小和擦些时间为size_B和time_B;根据实际测试统计出每个采样单位擦写的时间以及每个block擦写的时间,得出一个数字N,N≤size_B/size_T,使得time_B=time_Tx N,此时将N作为阈值,当CRC_Table[]中每size_B/size_T个特征值差异的个数大于N,采用整个block擦写的方式,否则采用每个采样区间的大小进行擦写的方式处理。
采用上述方案后,本发明具有以下优点:
(1)消除了对固件版本号的依赖,实现任意版本间的升级,降低管理难度和风险。
(2)直接对内存进行擦写升级,只修改不同版本固件之间存在差异的地方,对于没有改动的地方不进行任何处理,提高了升级效率。
(3)整个升级过程进行了多次的数据校验,确保了写入数据的准确性,将风险降到最低。并且许多CRC数据是在生成固件时打包的,CRC_Table[]的比对也是在工具中高速完成,最大限度的降低了对内存的操作,对提高效率有很大的帮助。
通过以上分析,可以发现本发明具有效率高、稳定性强和无版本号依赖的特点。
以下结合附图及具体实施例对本发明做进一步说明。
附图说明
图1是本发明固件的生成流程图;
图2是本发明固件的写入流程图。
具体实施方式
对于本发明所用到的名称具有以下解释:
固件:固件即指写入EROM(可擦写只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。
全量升级:升级固件时将原有数据全部擦除,再将新的数据全部写入。
增量升级:升级固件时只对有变动过的数据进行擦写。
CRC32:CRC本身是“冗余校验码”的意思,CRC32则表示会产生一个32bit(8位十六进制数)的校验值;由于CRC32产生校验值时源数据块的每一个bit(位)都参与了计算,所以数据块中即使只有一位发生了变化,也会得到不同的CRC32值。
MD5: Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致;将数据(如汉字)运算为另一固定长度值,MD5的前身有MD2、MD3和MD4。
如图1和2所示,本实施例揭示的一种基于特征值查表法的增量升级方法,包括固件的生成和写入两个部分;
其中,固件的生成包括:
a、编译生成常规固件,并在固件内预留一块用于写入特定信息的空白空间;
b、拟定一个采样单位大小,依据此大小将固件除预留空间以外区域划分成多个区间,且每个区间大小与采样单位大小一致;采用CRC32算法计算出每个区间的值作为特征值,将所有特征值整合成一张特征值表,记为CRC_Table[],每个特征值的位置与划分的内存区间是一一对应的;在本发明中,可供选择的特征值生成有两种方法,分别是CRC32和MD5,鉴于MD5占中内存较大,且固件中和设备中的CRC_Table[]相同位置的CRC值碰撞概率仅有1/232,故本例采用CRC32作为特征值的生成方式;
c、对生成的特征值表CRC_Table[]进行一次CRC32运算,将结果记为CRC_Info1,用于升级时进行数据校验;
d、对固件除预留空间以外的所有数据进行一次CRC32运算,将结果记为CRC_Info2,用于升级时进行数据校验;
e、将CRC_Table[]、CRC_Info1和CRC_Info2按顺序插入到固件之前预留的空白空间中,生成一个新的固件;
固件的写入包括:
f、打开升级工具,连接设备,在升级工具中选择想要升级的版本;
g、升级工具读出固件中写入的CRC_Table[]、CRC_Info1和CRC_Info2数据;
h、升级工具对固件中的CRC_Table[]进行一次CRC32计算,判断结果是否与固件中的CRC_Info1一致,如果不一样则认为是固件读取异常,终止升级过程并弹出警告;
i、升级工具对固件中预留的空白空间以外的数据进行一次CRC32计算,判断结果是否与固件中的CRC_Info2一致,如果不一致则认为是固件读取异常,终止升级过程并弹出警告;
j、升级工具读出设备中写入的CRC_Table[]、CRC_Info1和CRC_Info2数据;
k、升级工具对设备中的CRC_Table[]进行一次CRC32计算,判断结果是否与设备1中的CRC_Info1一致,如果不一样则认为是设备读取异常,终止升级过程并弹出警告。
l、升级工具对比固件中的CRC_Table[]和设备中的CRC_Table[],对其存在差异的地方对应的内存区间进行擦写,同时自动判断是要采用整个block擦写的方式或是采用每个采样区间的大小进行擦写的方式处理;自动判断规则是:设每个采样区间的大小和擦写时间为size_T和time_T,每个block的大小和擦些时间为size_B和time_B;根据实际测试统计出每个采样单位擦写的时间以及每个block擦写的时间,得出一个数字N,N≤size_B/size_T,使得time_B=time_T x N,此时将N作为阈值,当CRC_Table[]中每size_B/size_T个特征值差异的个数大于N,采用整个block擦写的方式,否则采用每个采样区间的大小进行擦写的方式处理。
m、升级工具将固件中的CRC_Table[]、CRC_Info1和CRC_Info2数据写入设备中,替换原有的相关数据;
n、升级工具对整个固件进行一次CRC32运算得到Verify_1,发送指令让设备对指定地址的内存进行一次CRC32运算得到Verify_2,并返回给升级工具,当Verify_1和Verify_2相等时,则说明升级成功,如果不等,则说明写入异常,弹出相应警告。
以上仅为本发明的具体实施例,并非对本发明的保护范围的限定。凡依本案的设计思路所做的等同变化,均落入本案的保护范围。
Claims (2)
1.一种基于特征值查表法的增量升级方法,其特征在于,包括:
一、固件的生成:
a、编译生成常规固件,并在固件内预留一块用于写入特定信息的空白空间;
b、拟定一个采样单位大小,依据此大小将固件除预留空间以外区域划分成多个区间,且每个区间大小与采样单位大小一致;采用CRC32算法计算出每个区间的值作为特征值,将所有特征值整合成一张特征值表,记为CRC_Table[],每个特征值的位置与划分的内存区间是一一对应的;
c、对生成的特征值表CRC_Table[]进行一次CRC32运算,将结果记为CRC_Info1,用于升级时进行数据校验;
d、对固件除预留空间以外的所有数据进行一次CRC32运算,将结果记为CRC_Info2,用于升级时进行数据校验;
e、将CRC_Table[]、CRC_Info1和CRC_Info2按顺序插入到固件之前预留的空白空间中,生成一个新的固件;
二、固件的写入:
f、打开升级工具,连接设备,在升级工具中选择想要升级的版本;
g、升级工具读出固件中写入的CRC_Table[]、CRC_Info1和CRC_Info2数据;
h、升级工具对固件中的CRC_Table[]进行一次CRC32计算,判断结果是否与固件中的CRC_Info1一致,如果不一样则认为是固件读取异常,终止升级过程并弹出警告;
i、升级工具对固件中预留的空白空间以外的数据进行一次CRC32计算,判断结果是否与固件中的CRC_Info2一致,如果不一致则认为是固件读取异常,终止升级过程并弹出警告;
j、升级工具读出设备中写入的CRC_Table[]、CRC_Info1和CRC_Info2数据;
k、升级工具对设备中的CRC_Table[]进行一次CRC32计算,判断结果是否与设备1中的CRC_Info1一致,如果不一样则认为是设备读取异常,终止升级过程并弹出警告;
l、升级工具对比固件中的CRC_Table[]和设备中的CRC_Table[],对其存在差异的地方对应的内存区间进行擦写,同时自动判断是要采用整个block擦写的方式或是采用每个采样区间的大小进行擦写的方式处理;
m、升级工具将固件中的CRC_Table[]、CRC_Info1和CRC_Info2数据写入设备中,替换原有的相关数据;
n、升级工具对整个固件进行一次CRC32运算得到Verify_1,发送指令让设备对指定地址的内存进行一次CRC32运算得到Verify_2,并返回给升级工具,当Verify_1和Verify_2相等时,则说明升级成功,如果不等,则说明写入异常,弹出相应警告。
2.如权利要求1所述的一种基于特征值查表法的增量升级方法,其特征在于,所述步骤I中选择采用整个block擦写的方式或是采用每个采样区间的大小进行擦写的方式处理的判断规则是:设每个采样区间的大小和擦写时间为size_T和time_T,每个block的大小和擦些时间为size_B和time_B;根据实际测试统计出每个采样单位擦写的时间以及每个block擦写的时间,得出一个数字N,N≤size_B/size_T,使得time_B=time_T x N,此时将N作为阈值,当CRC_Table[]中每size_B/size_T个特征值差异的个数大于N,采用整个block擦写的方式,否则采用每个采样区间的大小进行擦写的方式处理。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711036946.3A CN107783778B (zh) | 2017-10-30 | 2017-10-30 | 一种基于特征值查表法的增量升级方法 |
PCT/CN2018/078196 WO2019085365A1 (zh) | 2017-10-30 | 2018-03-07 | 一种基于特征值查表法的增量升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711036946.3A CN107783778B (zh) | 2017-10-30 | 2017-10-30 | 一种基于特征值查表法的增量升级方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107783778A true CN107783778A (zh) | 2018-03-09 |
CN107783778B CN107783778B (zh) | 2020-04-10 |
Family
ID=61432051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711036946.3A Active CN107783778B (zh) | 2017-10-30 | 2017-10-30 | 一种基于特征值查表法的增量升级方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107783778B (zh) |
WO (1) | WO2019085365A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108509215A (zh) * | 2018-03-22 | 2018-09-07 | 广州视源电子科技股份有限公司 | 一种系统软件的更换方法、装置、终端设备及存储介质 |
CN116257277A (zh) * | 2023-05-12 | 2023-06-13 | 天津卓朗昆仑云软件技术有限公司 | 镜像文件的更新方法、装置及voi系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693139A (zh) * | 2011-03-25 | 2012-09-26 | 比亚迪股份有限公司 | 一种无线升级手机软件的方法及系统 |
CN103729209A (zh) * | 2013-12-06 | 2014-04-16 | 南京智达康无线通信科技股份有限公司 | 用于固件设备的差量式升级方法 |
CN106951253A (zh) * | 2017-03-21 | 2017-07-14 | 广州慧睿思通信息科技有限公司 | 一种嵌入式固件在线升级方法 |
US20170295266A1 (en) * | 2012-02-21 | 2017-10-12 | Entropic Communications, Llc | Software upgrade using layer-2 management entity messaging |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095838B (zh) * | 2013-01-16 | 2016-03-30 | 百度时代网络技术(北京)有限公司 | 一种通过下载增量升级包来升级安卓智能手机软件的方法 |
CN104216736A (zh) * | 2014-08-14 | 2014-12-17 | 小米科技有限责任公司 | 增量升级方法、装置及终端设备 |
CN105045633A (zh) * | 2015-08-10 | 2015-11-11 | 广东欧珀移动通信有限公司 | 一种扫描升级包的方法及装置 |
US10481900B2 (en) * | 2016-04-11 | 2019-11-19 | Endress+Hauser Conducta Gmbh+Co. Kg | Method for updating a firmware component and device of measurement and control technology |
CN106843958A (zh) * | 2017-01-18 | 2017-06-13 | 成都黑盒子电子技术有限公司 | 一种嵌入式固件升级方法 |
-
2017
- 2017-10-30 CN CN201711036946.3A patent/CN107783778B/zh active Active
-
2018
- 2018-03-07 WO PCT/CN2018/078196 patent/WO2019085365A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693139A (zh) * | 2011-03-25 | 2012-09-26 | 比亚迪股份有限公司 | 一种无线升级手机软件的方法及系统 |
US20170295266A1 (en) * | 2012-02-21 | 2017-10-12 | Entropic Communications, Llc | Software upgrade using layer-2 management entity messaging |
CN103729209A (zh) * | 2013-12-06 | 2014-04-16 | 南京智达康无线通信科技股份有限公司 | 用于固件设备的差量式升级方法 |
CN106951253A (zh) * | 2017-03-21 | 2017-07-14 | 广州慧睿思通信息科技有限公司 | 一种嵌入式固件在线升级方法 |
Non-Patent Citations (1)
Title |
---|
楼亮亮; 金彦亮; 鲍星合; 赵康: "物联网设备无线固件升级技术的研究", 《单片机与嵌入式系统应用》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108509215A (zh) * | 2018-03-22 | 2018-09-07 | 广州视源电子科技股份有限公司 | 一种系统软件的更换方法、装置、终端设备及存储介质 |
CN116257277A (zh) * | 2023-05-12 | 2023-06-13 | 天津卓朗昆仑云软件技术有限公司 | 镜像文件的更新方法、装置及voi系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107783778B (zh) | 2020-04-10 |
WO2019085365A1 (zh) | 2019-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2011245573B2 (en) | Dynamic retrieval of installation packages when installing software | |
CN110147240B (zh) | 基于云存储的应用程序安装方法、系统及存储介质 | |
CN107506219A (zh) | 一种基于Android系统的通用版本升级方法 | |
CN105262627A (zh) | 一种固件升级方法、装置及系统 | |
CN102289382B (zh) | 电视软件更新方法、装置及系统 | |
CN111831297B (zh) | 零差分升级方法及装置 | |
CN105786542A (zh) | 智能设备及其系统升级方法 | |
CN111475195A (zh) | 一种固件升级方法、装置和系统 | |
CN105786549A (zh) | 智能设备及其升级方法 | |
CN104866339A (zh) | Fota数据的分布式持久化管理方法、系统和装置 | |
CN110647337A (zh) | 物联网mcu空中固件升级方法 | |
CN107783778A (zh) | 一种基于特征值查表法的增量升级方法 | |
CN112286565A (zh) | 一种基于存储容器的嵌入式系统差分升级方法 | |
CN110597764B (zh) | 一种文件下载、版本管理方法及装置 | |
KR20080083512A (ko) | Fota 시스템 | |
CN104133743A (zh) | 一种将文件烧录到emmc芯片的方法及装置 | |
CN112579141A (zh) | 一种嵌入式系统的固件更新方法、装置、设备及存储介质 | |
CN112925551A (zh) | 对象升级方法、装置、设备和存储介质 | |
CN116074308A (zh) | 车端升级包下载方法、系统、设备及可读存储介质 | |
CN105045539B (zh) | 数据离线存储的控制方法和装置 | |
WO2023036064A1 (zh) | 固件更新方法、装置、电子设备和存储介质 | |
CN110659296A (zh) | 存储方法、装置、设备以及计算机可读介质 | |
CN105740032A (zh) | 一种网络设备系统升级方法及装置 | |
CN114185572A (zh) | 数据的刷写方法、装置、设备及存储介质 | |
CN114237654A (zh) | 一种ota升级方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |