CN108958752B - 单片机在线升级系统及方法 - Google Patents

单片机在线升级系统及方法 Download PDF

Info

Publication number
CN108958752B
CN108958752B CN201810745611.7A CN201810745611A CN108958752B CN 108958752 B CN108958752 B CN 108958752B CN 201810745611 A CN201810745611 A CN 201810745611A CN 108958752 B CN108958752 B CN 108958752B
Authority
CN
China
Prior art keywords
image file
fragments
chip microcomputer
mirror image
target
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.)
Active
Application number
CN201810745611.7A
Other languages
English (en)
Other versions
CN108958752A (zh
Inventor
林威林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu Communication Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN201810745611.7A priority Critical patent/CN108958752B/zh
Publication of CN108958752A publication Critical patent/CN108958752A/zh
Application granted granted Critical
Publication of CN108958752B publication Critical patent/CN108958752B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及单片机在线升级技术,其公开了一种单片机在线升级方法,解决传统技术中单片机在线升级方案存在的升级效率低和不利于延长单片机使用寿命的问题。该方法包括:获取单片机的当前镜像数据和目标镜像数据;对当前镜像数据和目标镜像数据进行分片;将当前镜像数据的分片与目标镜像数据的分片依次逐片比较,将存在差异的目标镜像数据的分片下发至单片机的存储器的非执行区;将单片机的存储器的非执行区中保存的目标镜像数据的分片拷贝至执行区。此外,本发明还公开了一种单片机在线升级系统,适用于单片机在线升级。

Description

单片机在线升级系统及方法
技术领域
本发明涉及单片机在线升级技术,具体涉及一种单片机在线升级系统及方法。
背景技术
目前在电子设备中,以单片机为控制处理器的嵌入式系统应用越来越广泛。单片机主要是通过运行其内部存储的镜像来实现各种电子设备功能。由于在单片机的实际应用中需要根据需求不断的修正镜像,故需要对单片机不断的进行升级。手动升级方式由于需要依赖烧写环境,且拆卸设备而比较麻烦,因此,厂家或用户青睐于更加高效的在线升级方式。
申请号201410355659.9的专利公开了一种单片机的在线升级方法,其公开了:ARM向单片机发送升级通知命令,单片机接收到升级通知命令后,单片机进行复位操作,然后单片机运行引导下载程序并读取引导下载程序中的升级标志位;单片机向ARM发送进入升级模式的通知命令,ARM按照升级数据包传输协议向单片机发送所需的升级数据包,单片机将接收到的升级数据包存储到单片机的内部存储器中;单片机擦除引导下载程序中的升级标志位和复位操作程序,单片机重新运行引导下载程序,单片机中的运行指令跳转到应用程序的入口地址,开始运行应用程序。
申请号为201310124921.4的专利公开了一种单片机在线升级方法及系统,其公开了:当单片机需要升级的时候,S1.判断是否需要对用户程序进行升级,若是,则S2,若否,则转S4;S2.调用备份模块将用户程序备份到外部存储装置;S3.调用升级模块接收外部系统所发送的升级文件协议帧,并解析升级文件协议帧,且将解析后的升级文件协议帧保存至单片机的内部存储器;S4.判断引导程序的当前升级标识是否为升级成功状态或为升级完毕状态,若是,则转S6,若否,则S5;S5.调用恢复模块将外部存储装置中备份的用户程序恢复至内部存储器的用户程序区;S6.调用用户程序的跳转函数,并立即执行用户程序指令。
可以看出,上述两种方案均是通过某种方式将目标镜像全部传输到单片机的非执行区,完成之后再通过某种方式全部拷贝到执行区运行,从而完成在线升级操作。其存在以下缺陷:
1、需要将目标镜像整体都下发到单片机的存储器的非执行区中,耗时较长,升级效率低。
2、升级过程中,将下载到单片机存储器非执行区中的目标镜像全部拷贝至执行区,以达到升级有效的作用,该策略增大了执行区的平均擦写次数,不利于单片机寿命的延长。
发明内容
本发明所要解决的技术问题是:提出一种单片机在线升级系统及方法,解决传统技术中单片机在线升级方案存在的升级效率低和不利于延长单片机使用寿命的问题。
一方面,本发明的实施例提出了一种单片机在线升级系统,其包括:上位机、单片机和镜像存储器;
所述上位机,用于从镜像存储器中获取当前镜像文件和目标镜像文件,对当前镜像文件和目标镜像文件进行分片;然后将所述当前镜像文件的分片与所述目标镜像文件的分片进行比较,将存在差异的目标镜像文件的分片下发至单片机;
所述单片机,用于从上位机依次接收存在差异的目标镜像文件的分片,保存至单片机的存储器的非执行区,并将非执行区中保存的目标镜像文件的所有分片拷贝至执行区中所述当前镜像文件的对应位置;
所述镜像存储器,用于保存升级前后的镜像文件。
作为进一步优化,所述上位机具体包括:
升级判断模块,用于获取单片机中当前镜像文件的版本号和所述镜像存储器中目标镜像文件的版本号,比较判断当前镜像文件的版本号与目标镜像文件的版本号是否一致,若是,则提示不需要升级,否则,则通知读取模块;
读取模块,用于根据所述当前镜像文件的版本号和目标镜像文件的版本号分别从镜像存储器中获取当前镜像文件和目标镜像文件;
分片模块,用于将当前镜像文件调整至与目标镜像文件相同大小后,对当前镜像文件和目标镜像文件分别按照相同大小进行分片,获得当前镜像文件的分片和目标镜像文件的分片;
编号模块,用于分别对当前镜像文件的分片和目标镜像文件的分片依次进行编号;
比较模块,用于依次对具有相同编号的当前镜像文件的分片和目标镜像文件的分片进行比较;
分片下发模块,用于根据比较模块的比较结果,对存在差异的目标镜像文件的分片进行校验,并将校验值和分片编号添加至该分片的头部形成组合数据段后下发给单片机。
作为进一步优化,所述单片机具体包括:
数据接收模块,用于从上位机接收组合数据段;
下载校验模块,用于对从上位机接收的组合数据段中的目标镜像文件的分片进行与上位机相同算法的校验,并与上位机对该分片的校验值进行比较;
数据写入模块,用于将校验通过的组合数据段写入到单片机存储器的非执行区;
数据拷贝模块,用于将单片机的存储器的非执行区中保存的组合数据段中的目标镜像文件的分片拷贝至单片机的存储器的执行区。
作为进一步优化,所述数据拷贝模块包括:
偏移值计算模块,用于依次对存储器的非执行区中的各个组合数据段的头部进行解析,获得对应的分片编号,然后根据所述分片编号和每个分片的大小计算偏移值;
拷贝模块,用于根据计算的偏移值依次将非执行区中的组合数据段中的目标镜像文件的分片拷贝至对应的执行区;
拷贝校验模块,用于对拷贝至对应执行区中的目标镜像文件的分片进行校验,并与该组合数据段中的校验值进行比较。
另一方面,本发明的实施例还提出了一种单片机在线升级方法,应用于上述单片机在线升级系统,该方法包括:
获取单片机的当前镜像文件和目标镜像文件;
对当前镜像文件和目标镜像文件进行分片;
将当前镜像文件的分片与目标镜像文件的分片依次逐片比较,将存在差异的目标镜像文件的分片下发至单片机的存储器的非执行区;
将单片机的存储器的非执行区中保存的目标镜像文件的分片拷贝至执行区的所述当前镜像文件的对应位置。
作为进一步优化,该方法具体包括以下步骤:
A.获取单片机当前镜像文件的版本号;
B.判断获取的当前镜像文件的版本号与目标镜像版本号是否一致,若是,则提示不需要升级,结束流程;否则,则进入步骤C;
C.根据当前镜像版本号和目标镜像版本号分别从镜像存储器中读取当前镜像文件和目标镜像文件;
D.将当前镜像文件调整至与目标镜像文件相同大小后,对当前镜像文件和目标镜像文件分别按照相同大小进行分片,并对获得的分片依次编号;
E.依次取当前镜像文件中的分片和目标镜像文件中相同编号的分片进行比较;
F.判断分片比较是否一致,若一致,则进入步骤G,若不一致,则进入步骤H;
G.判断所有分片是否比较完成,若是,则进入步骤K,否则,取当前镜像文件中的下一个编号的分片与目标镜像文件中相同编号的分片进行比较,返回步骤F;
H.上位机对目标镜像文件中与当前镜像文件中存在差异的分片计算校验值,并将校验值和分片编号组成一个字段添加至该分片的头部形成组合数据段后下发给单片机;
I.单片机对组合数据段中的分片进行相同算法的校验,并与上位机对该分片的校验值进行比较,如果一致,则向上位机反馈接收成功消息,并将该组合数据段写入到单片机存储器的非执行区,返回步骤G;否则,向上位机反馈接收失败消息,进入步骤J;
J.上位机将该组合数据段重新下发给单片机,返回步骤I;
K.上位机通知单片机执行升级拷贝;
L.单片机将存储器非执行区中保存的所有组合数据段中的分片均拷贝至对应的执行区中。
作为进一步优化,步骤D具体包括:
上位机分别计算出当前镜像文件的大小和目标镜像文件的大小,然后把目标镜像文件等分成m片,并按照1到m依次进行编号;如果当前镜像文件的大小大于目标镜像文件的大小,则把当前镜像文件中对应同等大小目标镜像文件的部分等分成m片,剩余的部分丢弃;如果当前镜像文件的大小小于目标镜像文件的大小;则在当前镜像文件后面添加(目标镜像文件的大小-当前镜像文件的大小)个0XFF字段,然后等分成m片,并按照1到m依次进行编号,所述m>1且为整数。
作为进一步优化,步骤J中,还包括:若上位机将该组合数据段重新下发给单片机一定次数后,仍然接收到单片机反馈的接收失败消息,则提示本次升级失败,结束流程。
作为进一步优化,步骤L具体包括:
L1.单片机依次对存储器的非执行区中的各个组合数据段的头部进行解析,并计算偏移值;
L2.单片机根据计算的偏移值依次将非执行区中的组合数据段中的分片拷贝至对应的执行区;
L3.在每个组合数据段中的分片拷贝完成后,单片机对拷贝的该组合数据段中的分片进行校验,并与该组合数据段中的校验值进行比较;
L4.判断校验值是否一致,若一致,则拷贝下一个组合数据段中的分片,返回步骤L3,直至拷贝完非执行区中的所有组合数据段中的分片,然后上报上位机数据拷贝完成,进入步骤L4;若不一致,则上报上位机数据拷贝校验失败,进入步骤L6;
L5.上位机收到单片机上报的数据拷贝完成消息后,提示本次升级成功;
L6.上位机收到单片机上报的数据拷贝校验失败消息后,提示本次升级失败。
作为进一步优化,步骤L1中,单片机在解析组合数据段的头部后获得对应分片编号,然后根据所述分片编号和每个分片的大小计算偏移值。
本发明的有益效果是:
1)通过将当前镜像文件与目标镜像文件进行分片比较,实现只下载差异部分的目标镜像文件块,减少了目标镜像文件下发量,从而减少单片机的升级时间,提高升级效率。
2)在单片机进行升级数据拷贝时,只向单片机存储器的执行区拷贝差异部分的目标镜像文件块,无需将目标镜像文件整体拷贝至执行区,从而减少了对执行区的擦写次数,有利于延长单片机的使用寿命。
附图说明
图1为本发明实施例中的单片机在线升级系统结构框图;
图2为本发明实施例中的单片机在线升级方法流程图;
图3为单片机执行升级拷贝的流程图。
具体实施方式
本发明旨在一种单片机在线升级系统及方法,解决传统技术中单片机在线升级方案存在的升级效率低和不利于延长单片机使用寿命的问题。
下面结合附图及实施例对本发明的方案作进一步的描述:
实施例:
如图1所示,本实施例中的单片机在线升级系统,包括:上位机、单片机和镜像存储器;
所述上位机,用于从镜像存储器中获取当前镜像文件和目标镜像文件,对当前镜像文件和目标镜像文件进行分片;然后将当前镜像文件的分片与目标镜像文件的分片依次逐片比较,将存在差异的目标镜像文件的分片下发至单片机;
在具体实现上,上位机具体包括:升级判断模块、读取模块、分片模块、编号模块、比较模块以及分片下发模块:
升级判断模块,用于获取单片机的当前镜像文件的版本号和镜像存储器中目标镜像文件的版本号,并行比较判断当前镜像文件的版本号与目标镜像文件的版本号是否一致,若一致,则提示不需要升级,若不一致,则通知读取模块;
读取模块,用于根据单片机的当前镜像文件的版本号和目标镜像文件的版本号分别从镜像存储器中获取当前镜像文件和目标镜像文件;
分片模块,用于将当前镜像文件调整至与目标镜像文件相同大小后,对当前镜像文件和目标镜像文件分别按照相同大小进行分片,获得当前镜像文件的分片和目标镜像文件的分片;
编号模块,用于分别对当前镜像文件的分片和目标镜像文件的分片依次进行编号;
比较模块,用于依次对具有相同编号的当前镜像文件的分片和目标镜像文件的分片进行比较;
分片下发模块,用于根据比较模块的比较结果,对存在差异的目标镜像文件的分片进行校验,并将校验值和分片编号组成一个字段添加至该分片的头部形成组合数据段后下发给单片机。
所述单片机,用于从上位机接收存在差异的目标镜像文件的分片,保存至单片机的存储器的非执行区,以及将非执行区中保存的目标镜像文件的分片拷贝至执行区;
在具体实现上,单片机具体包括:数据接收模块、下载校验模块、数据写入模块以及数据拷贝模块:
数据接收模块,用于从上位机接收组合数据段;
下载校验模块,用于对从上位机接收的组合数据段中的分片进行与上位机相同算法的校验,并与上位机对该分片的校验值进行比较;
数据写入模块,用于将校验通过的组合数据段写入到单片机存储器的非执行区;
数据拷贝模块,用于将单片机的存储器的非执行区中保存的组合数据段中的目标镜像文件的分片拷贝至单片机的存储器的执行区。
数据拷贝模块具体包括:偏移值计算模块、拷贝模块以及拷贝校验模块:
偏移值计算模块,用于依次对存储器的非执行区中的各个组合数据段的头部进行解析,获得对应的分片编号,然后根据所述分片编号和每个分片的大小计算偏移值;
拷贝模块,用于根据计算的偏移值依次将非执行区中的组合数据段中的目标镜像文件的分片拷贝至对应的执行区;
拷贝校验模块,用于对拷贝至对应执行区中的目标镜像文件的分片进行校验,并与该组合数据段中的校验值进行比较。
所述镜像存储器,用于保存单片机升级前后的镜像文件。
基于上述单片机在线升级系统,本实施例提出的单片机在线升级方法流程如图2所示,其包括以下实现步骤:
S1.获取单片机当前镜像文件的版本号:
本步骤中,上位机和单片机之间通过总线连接进行报文通信,上位机通过向单片机下发单片机当前镜像版本号请求报文,单片机对报文进行解析后,向上位机反馈当前镜像文件的版本号。
S2.判断与目标镜像文件的版本号是否一致:
本步骤中,上位机将获取的单片机当前镜像文件的版本号与本次要升级的目标镜像文件的版本号进行比较,判断是否一致,若一致,则表明不需要对单片机进行升级,则结束流程;若不一致,则需要对单片机进行升级,进入步骤S3。
S3.读取当前镜像文件和目标镜像文件:
本步骤中,上位机从镜像存储器中分别根据当前镜像版本号和目前镜像版本号读取对应路径下的镜像文件,从而获取当前镜像文件和目标镜像文件。
S4.对当前镜像文件和目标镜像文件进行分片并编号:
本步骤中,上位机首先分别计算出当前镜像文件的大小x和目标镜像的大小y,然后把目标镜像按照k的大小依次等分成m片,并按照1到m依次进行编号。如果x大于y,则把当前镜像的前y个字段按照k的大小依次等分成m片,剩余的丢弃;如果x小于y;则在当前镜像后面添加y-x个0XFF字段,然后按照k的大小依次等分成m片,并按照1到m依次进行编号。
S5.比较当前镜像文件中的分片与相同编号的目标镜像文件中的分片:
本步骤中,上位机按分片编号从小到大的方式分别依次取两个镜像文件的数据片进行比较,比如:上位机从当前镜像文件中取编号为1的分片,并从目标镜像文件中取编号为1的分片,将二者进行比较;对编号为1的分片比较以及后续相应处理完成后,再从当前镜像文件中取编号为2的分片,并从目标镜像文件中取编号为2的分片,将二者进行比较…以此类推。
S6.判断分片比较是否一致:
本步骤中,上位机在对分片进行比较后,判断分片内容是否一致,如果一致,则执行步骤S7,若不一致,则执行步骤S8。
S7.判断所有分片是否比较完成:
本步骤中,上位机在经过对两个相同编号的分片比较判断内容一致后,接着判断所有分片是否比较完成(通过判断当前比较的分片的编号是否为最后的编号m来判断),若所有分片比较完成,则进入步骤S14,若未比较完成,则取下一个编号的分片进行比较,返回步骤S5。
S8.对存在差异的分片计算校验值,并将校验值和分片编号组成一个字段添加至该分片的头部形成组合数据段后下发给单片机:
本步骤中,上位机在判定具有相同某个编号的当前镜像文件的分片和目标镜像文件的分片内容不一致后,对该编号的目标镜像文件的分片计算校验值,然后将校验值和分片编号组成一个字段添加至该分片的头部,形成一个组合数据段,再将该组合数据段通过镜像文件下发报文下发给单片机。
S9.单片机对组合数据段中的分片进行相同算法的校验:
本步骤中,单片机在收到上位机的镜像文件下发报文后,对报文进行解析,解析出组合数据段,然后对组合数据段中的分片进行与上位机相同校验算法的校验。
S10.判断与上位机的校验值是否一致:
本步骤中,单片机在对组合数据段中的分片进行校验后,将计算的校验值与组合数据段中分片的头部的校验值进行比较,判断是否一致,若一致,则进入步骤S11,若不一致,则进入步骤S12。
S11.将组合数据段写入存储器的非执行区中:
本步骤中,单片机在判定接收的组合数据段中的分片的校验值与上位机对该分片的校验值一致的情况下,说明接收的数据完整无误,则将该组合数据段写入单片机的存储器的非执行区中,并向上位机反馈接收成功消息,返回步骤S7。
S12.向上位机反馈接收失败消息:
本步骤中,单片机在判定接收的组合数据段中分片的校验值与上位机对该分片的校验值不一致的情况下,说明接收的数据不完整或者出现错误,则向上位机反馈接收失败的消息,进入步骤S13。
S13.判断是否超过重传次数:
本步骤中,上位机在接收到单片机反馈的接收失败消息后,判断对该组合数据段的重传次数是否超出设定阈值,若超出,则提示升级失败,结束流程;若未超出,则重新向单片机下发校验失败的组合数据段,返回步骤S9。
S14.通知单片机执行升级拷贝:
本步骤中,在所有分片比较完成后,上位机开始下发给单片机升级拷贝执行标志报文。
单片机执行升级拷贝的流程如图3所示,其包括以下步骤:
a.单片机对非执行区中的各个组合数据段的头部进行解析,并计算偏移值:
本步骤中,单片机收到升级拷贝执行标志报文之后,对非执行区中的各个组合数据的头部进行解析,解析出分片编号,然后通过分片编号和分片的大小依次算出需要拷贝到执行区的偏移位置:比如:编号为1-m,分片大小为k的各个分片对应的偏移位置为:k*(1…m)。
b.根据偏移值依次将非执行区中的组合数据段中的分片拷贝至对应的执行区:
本步骤中,单片机根据计算的偏移值依次将非执行区中的组合数据段中的分片拷贝至对应偏移位置的执行区。
c.对拷贝的分片进行校验:
本步骤中,每拷贝完一个分片,都需要再次进行校验,即读取该分片计算校验值,并与组合数据段中分片数据头部的校验值进行比较,若一致,则进入步骤d,若不一致则进入步骤e;
d.判断非执行区中所有的组合数据段中的分片拷贝是否完成:
本步骤中,单片机判断非执行区中所有的组合数据段中的分片拷贝是否完成,若完成,则上报上位机数据拷贝完成报文,进入步骤f;
e.上报上位机数据拷贝校验失败报文:
本步骤中,对于拷贝的组合数据段中的分片计算校验值与该组合数据段中分片数据头部的校验值不一致的情况,则说明拷贝过程出现数据不完整或错误,则单片机向上位机上报数据拷贝校验失败报文,进入步骤g;
f.上位机提示本次升级成功:
本步骤中,上位机在收到数据拷贝完成报文后,提示本次升级成功,结束流程。
g.上位机提示本次升级失败:
本步骤中,上位机在收到数据拷贝校验失败报文后,提示本次升级失败,结束流程。
经过实践证明,采用本发明的上述单片机在线升级方案之后提高了单片机的升级效率,减少单片机执行区的平均擦写次数。例如:目标镜像文件的大小为130k,分片大小为64bit,则可分2080片,经过差异数据片对比统计为998片,则升级速度提升约50%,执行区平均擦写次数降低52.83%,增益大小与当前镜像文件和目标镜像文件的差异度约成反比。

Claims (10)

1.单片机在线升级系统,其特征在于,包括:上位机、单片机和镜像存储器;
所述上位机,用于从镜像存储器中获取当前镜像文件和目标镜像文件,对当前镜像文件和目标镜像文件进行分片;然后将所述当前镜像文件的分片与所述目标镜像文件的分片进行比较,将存在差异的目标镜像文件的分片下发至单片机;
所述单片机,用于从上位机依次接收存在差异的目标镜像文件的分片,保存至单片机的存储器的非执行区,并将非执行区中保存的目标镜像文件的所有分片拷贝至执行区中所述当前镜像文件的对应位置;
所述镜像存储器,用于保存升级前后的镜像文件。
2.如权利要求1所述的单片机在线升级系统,其特征在于,所述上位机具体包括:
升级判断模块,用于获取单片机中当前镜像文件的版本号和所述镜像存储器中目标镜像文件的版本号,比较当前镜像文件的版本号与目标镜像文件的版本号是否一致,如是,则提示不需要升级,否则通知读取模块;
读取模块,用于根据所述当前镜像文件的版本号和目标镜像文件的版本号分别从镜像存储器中获取当前镜像文件和目标镜像文件;
分片模块,用于将当前镜像文件调整至与目标镜像文件相同大小后,对当前镜像文件和目标镜像文件分别按照相同大小进行分片,获得当前镜像文件的分片和目标镜像文件的分片;
编号模块,用于分别对当前镜像文件的分片和目标镜像文件的分片依次进行编号;
比较模块,用于依次对具有相同编号的当前镜像文件的分片和目标镜像文件的分片进行比较;
分片下发模块,用于根据比较模块的比较结果,对存在差异的目标镜像文件的分片进行校验,并将校验值和分片编号添加至该分片的头部形成组合数据段后下发给单片机。
3.如权利要求2所述的单片机在线升级系统,其特征在于,所述单片机具体包括:
数据接收模块,用于从上位机接收组合数据段;
下载校验模块,用于对从上位机接收的组合数据段中的目标镜像文件的分片进行与上位机相同算法的校验,并与上位机对该分片的校验值进行比较;
数据写入模块,用于将校验通过的组合数据段写入到单片机存储器的非执行区;
数据拷贝模块,用于将单片机的存储器的非执行区中保存的组合数据段中的目标镜像文件的分片拷贝至单片机的存储器的执行区。
4.如权利要求3所述的单片机在线升级系统,其特征在于,所述数据拷贝模块包括:
偏移值计算模块,用于依次对存储器的非执行区中的各个组合数据段的头部进行解析,获得对应的分片编号,然后根据所述分片编号和每个分片的大小计算偏移值;
拷贝模块,用于根据计算的偏移值依次将非执行区中的组合数据段中的目标镜像文件的分片拷贝至对应的执行区;
拷贝校验模块,用于对拷贝至对应执行区中的目标镜像文件的分片进行校验,并与该组合数据段中的校验值进行比较。
5.单片机在线升级方法,其特征在于,该方法包括:
获取单片机的当前镜像文件和目标镜像文件;
将当前镜像文件调整至与目标镜像文件相同大小后,对当前镜像文件和目标镜像文件分别按照相同大小进行分片,并对获得的分片依次编号;
依次取当前镜像文件中的分片和目标镜像文件中相同编号的分片进行比较,将存在差异的目标镜像文件的分片下发至单片机的存储器的非执行区;
将单片机的存储器的非执行区中保存的目标镜像文件的分片拷贝至执行区的所述当前镜像文件的对应位置。
6.如权利要求5所述的单片机在线升级方法,其特征在于,该方法具体包括以下步骤:
A.获取单片机当前镜像文件的版本号;
B.判断获取的当前镜像文件的版本号与目标镜像文件的版本号是否一致,若是,则提示不需要升级,结束流程;否则,则进入步骤C;
C.根据当前镜像文件的版本号和目标镜像文件的版本号分别从镜像存储器中读取当前镜像文件和目标镜像文件;
D.将当前镜像文件调整至与目标镜像文件相同大小后,对当前镜像文件和目标镜像文件分别按照相同大小进行分片,并对获得的分片依次编号;
E.依次取当前镜像文件中的分片和目标镜像文件中相同编号的分片进行比较;
F.判断分片比较是否一致,若是,则进入步骤G,否则,则进入步骤H;
G.判断所有分片是否比较完成,若是,则进入步骤K,否则,取当前镜像文件中的下一个编号的分片与目标镜像文件中相同编号的分片进行比较,返回步骤F;
H.上位机对目标镜像文件中与当前镜像文件中存在差异的分片计算校验值,并将校验值和分片编号组成一个字段添加至该分片的头部形成组合数据段后下发给单片机;
I.单片机对组合数据段中的分片进行相同算法的校验,并与上位机对该分片的校验值进行比较,如果一致,则向上位机反馈接收成功消息,并将该组合数据段写入到单片机存储器的非执行区,返回步骤G;否则,向上位机反馈接收失败消息,进入步骤J;
J.上位机将该组合数据段重新下发给单片机,返回步骤I;
K.上位机通知单片机执行升级拷贝;
L.单片机将非执行区中保存的所有组合数据段中的分片均拷贝至对应的执行区中。
7.如权利要求6所述的单片机在线升级方法,其特征在于,步骤D具体包括:
上位机分别计算出当前镜像文件的大小和目标镜像文件的大小,然后把目标镜像文件等分成m片,并按照1到m依次进行编号;如果当前镜像文件的大小大于目标镜像文件的大小,则把当前镜像文件中对应同等大小目标镜像文件的部分等分成m片,剩余的部分丢弃;如果当前镜像文件的大小小于目标镜像文件的大小;则在当前镜像文件后面添加(目标镜像文件的大小-当前镜像文件的大小)个0XFF字段,然后等分成m片,并按照1到m依次进行编号,所述m>1且为整数。
8.如权利要求6所述的单片机在线升级方法,其特征在于,步骤J中,还包括:若上位机将该组合数据段重新下发给单片机一定次数后,仍然接收到单片机反馈的接收失败消息,则提示本次升级失败,结束流程。
9.如权利要求6-8任意一项所述的单片机在线升级方法,其特征在于,步骤L具体包括:
L1.单片机依次对存储器的非执行区中的各个组合数据段的头部进行解析,并计算偏移值;
L2.单片机根据计算的偏移值依次将非执行区中的组合数据段中的分片拷贝至对应的执行区;
L3.在每个组合数据段中的分片拷贝完成后,单片机对拷贝的该组合数据段中的分片进行校验,并与该组合数据段中的校验值进行比较;
L4.判断校验值是否一致,若一致,则拷贝下一个组合数据段中的分片,返回步骤L3,直至拷贝完非执行区中的所有组合数据段中的分片,然后上报上位机数据拷贝完成,进入步骤L4;若不一致,则上报上位机数据拷贝校验失败,进入步骤L6;
L5.上位机收到单片机上报的数据拷贝完成消息后,提示本次升级成功;
L6.上位机收到单片机上报的数据拷贝校验失败消息后,提示本次升级失败。
10.如权利要求9所述的单片机在线升级方法,其特征在于,步骤L1中,单片机在解析组合数据段的头部后获得对应分片编号,然后根据所述分片编号和每个分片的大小计算偏移值。
CN201810745611.7A 2018-07-09 2018-07-09 单片机在线升级系统及方法 Active CN108958752B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810745611.7A CN108958752B (zh) 2018-07-09 2018-07-09 单片机在线升级系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810745611.7A CN108958752B (zh) 2018-07-09 2018-07-09 单片机在线升级系统及方法

Publications (2)

Publication Number Publication Date
CN108958752A CN108958752A (zh) 2018-12-07
CN108958752B true CN108958752B (zh) 2023-01-24

Family

ID=64482468

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810745611.7A Active CN108958752B (zh) 2018-07-09 2018-07-09 单片机在线升级系统及方法

Country Status (1)

Country Link
CN (1) CN108958752B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112291323B (zh) * 2020-10-22 2023-05-05 上海电科智能系统股份有限公司 一种基于mqtt通讯协议的单片机固件升级通讯方法
CN112312374B (zh) * 2020-11-06 2022-09-06 国网江苏省电力有限公司电力科学研究院 基于nfc升级单片机固件的装置及方法
CN112667444A (zh) * 2020-12-31 2021-04-16 深圳康佳电子科技有限公司 一种系统升级方法、存储介质及终端设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102104810A (zh) * 2009-12-21 2011-06-22 中兴通讯股份有限公司 无源光网络单元软件版本批量升级方法及系统
CN103281689A (zh) * 2013-04-28 2013-09-04 华为技术有限公司 一种网络切换和版本升级的方法及终端设备
CN104750527A (zh) * 2015-03-27 2015-07-01 广州快飞计算机科技有限公司 一种嵌入式系统升级方法及系统
CN104750524A (zh) * 2015-03-24 2015-07-01 广东欧珀移动通信有限公司 升级数据包的传输方法及装置、数据包的升级方法及装置
CN104750501A (zh) * 2013-12-26 2015-07-01 北京谊安医疗系统股份有限公司 用于单片机的在线升级方法及系统
CN104750505A (zh) * 2013-12-26 2015-07-01 北京谊安医疗系统股份有限公司 用于单片机的在线升级方法及系统
CN107247603A (zh) * 2017-04-18 2017-10-13 深圳市广和通无线股份有限公司 支持固件自动恢复功能的远程升级方法与系统
CN108121554A (zh) * 2017-12-20 2018-06-05 浙江亿邦通信科技股份有限公司 一种户外嵌入式设备系统的升级方法及升级系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101002406A (zh) * 2004-06-10 2007-07-18 三星电子株式会社 高效生成用于无线网络中的空中下载升级的增量文件的装置和方法
CN106302592B (zh) * 2015-05-28 2021-01-01 腾讯科技(深圳)有限公司 终端应用的更新方法、服务器和终端
CN105335196A (zh) * 2015-11-02 2016-02-17 深圳市新国都支付技术有限公司 一种pos终端程序增量下载的方法
CN105786573B (zh) * 2016-03-16 2019-04-26 烽火通信科技股份有限公司 快速升级智能家居中ZigBee控制器的方法及系统
CN107426258B (zh) * 2016-05-23 2020-04-28 华为技术有限公司 一种镜像文件的上传和下载方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102104810A (zh) * 2009-12-21 2011-06-22 中兴通讯股份有限公司 无源光网络单元软件版本批量升级方法及系统
CN103281689A (zh) * 2013-04-28 2013-09-04 华为技术有限公司 一种网络切换和版本升级的方法及终端设备
CN104750501A (zh) * 2013-12-26 2015-07-01 北京谊安医疗系统股份有限公司 用于单片机的在线升级方法及系统
CN104750505A (zh) * 2013-12-26 2015-07-01 北京谊安医疗系统股份有限公司 用于单片机的在线升级方法及系统
CN104750524A (zh) * 2015-03-24 2015-07-01 广东欧珀移动通信有限公司 升级数据包的传输方法及装置、数据包的升级方法及装置
CN104750527A (zh) * 2015-03-27 2015-07-01 广州快飞计算机科技有限公司 一种嵌入式系统升级方法及系统
CN107247603A (zh) * 2017-04-18 2017-10-13 深圳市广和通无线股份有限公司 支持固件自动恢复功能的远程升级方法与系统
CN108121554A (zh) * 2017-12-20 2018-06-05 浙江亿邦通信科技股份有限公司 一种户外嵌入式设备系统的升级方法及升级系统

Also Published As

Publication number Publication date
CN108958752A (zh) 2018-12-07

Similar Documents

Publication Publication Date Title
CN108958752B (zh) 单片机在线升级系统及方法
CN106843942B (zh) 穿戴式设备的固件升级方法及穿戴式设备
CN106325929B (zh) 一种固件升级方法、固件升级装置、冰箱和服务端
US6249848B1 (en) Memory writing device for an electronic device
US8136108B2 (en) Updating firmware with multiple processors
US7805637B2 (en) Network equipment and a method for monitoring the start up of such equipment
CN105260215A (zh) 一种u盘升级车载行车记录仪终端的方法
CN111623476B (zh) 一种空调器室外eeprom中的数据更新方法、装置及存储介质
CN111190629B (zh) 一种嵌入式终端升级软件包及其解析方法
CN113094072A (zh) 车辆升级方法、装置、电子装置及存储介质
CN111309363A (zh) 基于Contiki操作系统的在线升级方法及装置
CN114281394A (zh) 一种快速在线升级程序的方法、系统、设备及介质
CN106406922A (zh) 软件升级方法及装置
CN111984298B (zh) 一种闪存中的程序升级区、程序升级方法及系统
CN111078255B (zh) 一种软件升级方法和软件升级系统
CN108845823B (zh) 一种基于f2812芯片的软件在线升级方法
CN115982710A (zh) 一种基于以太网ota安全升级方法
CN111144056B (zh) 基于后端需求的技术映射控制方法及装置、系统
CN112882731A (zh) 嵌入式软件升级方法和装置
CN111984291A (zh) 数据烧录方法、装置、终端及存储介质
CN112988197A (zh) 稳定的远程升级方法
US6438644B1 (en) Method to prevent a flash memory from being miswritten
CN115021873A (zh) 一种数据重传的方法、装置及电子设备
CN114924760A (zh) 一种会议音频处理器的远程升级方法、装置及介质
CN116679949A (zh) 软件批量升级方法、装置和计算机设备

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