CN111078255B - 一种软件升级方法和软件升级系统 - Google Patents
一种软件升级方法和软件升级系统 Download PDFInfo
- Publication number
- CN111078255B CN111078255B CN201911283378.6A CN201911283378A CN111078255B CN 111078255 B CN111078255 B CN 111078255B CN 201911283378 A CN201911283378 A CN 201911283378A CN 111078255 B CN111078255 B CN 111078255B
- Authority
- CN
- China
- Prior art keywords
- frame
- program
- time
- slave device
- 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.)
- Active
Links
Images
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
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
本发明涉及单片机技术领域,尤其涉及一种软件升级方法和软件升级系统。该方法包括:所述主设备在预设时间内广播前导帧,以使从设备根据所述前导帧确定开窗时间;在所述前导帧发送完毕并且所述从设备为开窗状态时,所述主设备发送升级指令,以使所述从设备根据所述升级指令进入boot程序并切换到无线升级信道;所述主设备以预设的周期向所述从设备循环发送程序包,以使所述从设备根据所述程序包进行软件升级,其中,所述从设备根据所述程序包进行软件升级的过程中将程序写入备份程序区。该实施方式降低了从设备的功耗,此外,在升级时首先进入boot程序,并且升级过程中程序写入备份程序区,从而可以保证升级的稳定性。
Description
【技术领域】
本发明涉及单片机技术领域,尤其涉及一种软件升级方法和软件升级系统。
【背景技术】
在大量无线射频通信设备的使用过程中,难免会出现设备固件需要升级的情况,普通的升级方式包括JTAG升级、USB升级、串口升级等。但是以上升级方式需要在设备上面引出IO,操作性十分麻烦。而无线射频设备本身具有无线通信方式,因此,相关技术采用无线通信方式来升级固件,从而可以解决有线网络升级时操作不便的问题。
然而,无线升级方式存在不稳定性的问题,例如,一些设备通过蓝牙的方式来升级程序,在升级过程中,稳定性不高,且升级过程功耗大、效率低。
【发明内容】
本发明要解决的技术问题是提供一种软件升级方法和软件升级系统,解决相关技术在进行软件升级时存在稳定性差、功耗大的技术问题。
本发明实施例的第一方面,提供一种软件升级方法,应用于主设备,所述方法包括:
所述主设备在预设时间内广播前导帧,以使从设备根据所述前导帧确定开窗时间;
在所述前导帧发送完毕并且所述从设备为开窗状态时,所述主设备发送升级指令,以使所述从设备根据所述升级指令进入boot程序并切换到无线升级信道;
所述主设备以预设的周期向所述从设备发送程序包,以使所述从设备根据所述程序包进行软件升级,其中,所述从设备根据所述程序包进行软件升级的过程中将程序写入备份程序区。
可选地,所述前导帧包括UID列表,所述UID列表包括需要升级的从设备ID,
当所述UID列表中不包括需要升级的从设备ID时,所述方法还包括:
接收所述需要升级的从设备发送的升级请求;
在确定所述需要升级的从设备能够升级时,在所述UID列表中添加所述需要升级的从设备所对应的ID。
可选地,所述方法还包括:
接收所述从设备发送的升级状态信息;
根据所述升级状态信息调整所述程序包的发送状态。
本发明实施例的第二方面,提供一种软件升级方法,应用于从设备,所述方法包括:
接收主设备发送的前导帧,根据所述前导帧确定开窗时间;
在到达所述开窗时间时,进入开窗状态,并接收所述主设备发送的升级指令,根据所述升级指令进入boot程序并切换到无线升级信道;
接收所述主设备发送的程序包,以根据所述程序包进行软件升级,其中,所述从设备根据所述程序包进行软件升级的过程中将程序写入备份程序区。
可选地,所述接收主设备发送的前导帧,根据所述前导帧确定开窗时间,包括:
获取主设备广播所述前导帧的时间T;
在所述主设备开始广播所述前导帧后,执行预开窗操作,以获取前导帧的帧编号;
根据获得的所述时间T和所述帧编号确定开窗时间;
其中,所述时间T内的每一秒发送一帧前导帧,所述每一帧前导帧包括其对应的帧编号。
可选地,所述执行预开窗操作包括:
在所述主设备广播所述前导帧的时间T内执行一次t时间内的开窗操作,其中,所述t为所述预开窗的时长,t<T。
可选地,所述前导帧包括UID列表,所述UID列表包括需要升级的从设备ID,所述方法还包括:
根据所述前导帧判断所述UID列表中是否包括所述从设备的ID;
若否,向所述主设备发送升级请求。
可选地,所述方法还包括:
向所述主设备发送升级状态信息,以使所述主设备根据所述升级状态信息调整所述程序包的发送状态,其中,所述升级状态信息包括所述从设备当前收到的程序包的映射表和已收到的程序包数量。
可选地,所述方法还包括:
当所述从设备获取到全部的程序包后,根据预设算法对接收到的程序包进行验证,以验证所述程序包的完整性;
在确定所述程序包为完整时,从boot程序跳转到应用程序,并启动所述应用程序,以完成所述从设备的软件升级。
本发明实施例的第三方面,提供一种软件升级系统,所述系统包括:主设备和从设备,
所述主设备包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上主设备应用的所述软件升级方法;
所述从设备包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上从设备应用的所述软件升级方法。
本发明实施例提供了一种软件升级方法和系统,通过主设备广播一定时间的前导帧,从设备根据该前导帧确定所述从设备的开窗时间,在从设备为开窗状态时,接收主设备发送升级指令,从设备根据该升级指令进入boot程序并切换到无线升级信道,与此同时接收主设备发送的程序包,从而根据接收的程序包进行软件升级。本发明提供的软件升级方法和系统可以使从设备不一直处于开窗状态,从而降低了从设备的功耗,此外,在升级时首先进入boot程序,并且升级过程中程序写入备份程序区,从而可以保证升级的稳定性。
【附图说明】
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明实施例提供的一种软件升级系统的结构示意图;
图2是本发明实施例提供的主设备110的结构示意图;
图3是本发明实施例提供的从设备120的结构示意图;
图4是本发明实施例提供的一种软件升级方法的流程图;
图5是本发明另一实施例提供的一种软件升级方法的流程图;
图6是本发明实施例提供的根据所述前导帧确定开窗时间的方法的流程图;
图7是本发明实施例提供的一种软件升级装置的结构示意图;
图8是本发明另一实施例提供的一种软件升级装置的结构示意图。
【具体实施方式】
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
需要说明的是,如果不冲突,本发明实施例中的各个特征可以相互组合,均在本发明的保护范围之内。另外,虽然在装置示意图中进行了功能模块的划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置示意图中的模块划分,或流程图中的顺序执行所示出或描述的步骤。
请参阅图1,图1是本发明实施例提供的一种软件升级系统的结构示意图。如图1所示,该系统100包括:主设备110和从设备120。所述主设备110与所述从设备120通信连接。
在本实施例中,所述软件升级系统100可以应用于各种无线通信场景,比如,投票场景,此时每个用户手持的投票器即是所述从设备120,接收投票信息的接收器即是所述主设备110。又比如,答题场景,用户用于答题的答题器即是所述从设备120,接收答题信息的答题器即是所述主设备110。
所述主设备110与所述从设备120形成一种绑定的关系,具体可以是一对多的关系,即一个主设备110对应多个从设备120。在特定的信道下,所述主设备110可以同时控制多个从设备120,从而实现信息传输。每一个从设备120都有其对应的ID,所述ID用于唯一识别其对应的从设备120。所述主设备110可以存储与其绑定成功的全部从设备120的ID。
在本实施例中,所述主设备110主要以广播的方式发送固件信息,所述固件信息包括需要升级的设备,设备的估计信息、固件块等。所述从设备120接收主设备110广播的信息,根据接收到的信息进行固件升级,并且在升级过程中向主设备110上报自己的升级状态,以使主设备110根据从设备120的升级状态调整数据的发送,以保证通信过程的数据传输速度。所述从设备120还具备备份机制,可以将下载的程序写入备份程序区,所述从设备120还具备校验机制,比如通过MD5算法对接收到的程序包进行校验,以确定接收到的程序的完整性。此外,所述从设备120在开始升级之前,是根据主设备110发送的前导帧来确定其开窗时间,在确定开窗后,开始进行软件升级。
具体地,如图2所示,所述主设备110包括:一个或多个处理器1101以及存储器1102,图2中以一个处理器1101为例。
处理器1101和存储器1102可以通过总线或者其他方式连接,图2中以通过总线连接为例。
处理器1101为任何类型的单线程或者多线程的,具有一个或者多个处理核心的处理器,作为主设备110的控制核心,用于获取数据、执行逻辑运算功能以及下发运算处理结果。
存储器1102作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的软件升级方法对应的程序指令/模块(例如,附图7所示的各个模块)。处理器1101通过运行存储在存储器1102中的非易失性软件程序、指令以及模块,从而执行软件升级装置的各种功能应用以及数据处理,即实现上述方法实施例的软件升级方法。
存储器1102可以包括存储程序区和存储数据区,其中,存储程序区用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,供处理器1101调用以使处理器1101执行一个或者多个方法步骤,例如执行图4中的方法步骤S11至步骤S13。此外,存储器1102可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。
如图3所示,所述从设备120包括:一个或多个处理器1201以及存储器1202,图3中以一个处理器1201为例。
处理器1201和存储器1202可以通过总线或者其他方式连接,图3中以通过总线连接为例。
处理器1201为任何类型的单线程或者多线程的,具有一个或者多个处理核心的处理器,作为主设备120的控制核心,用于获取数据、执行逻辑运算功能以及下发运算处理结果。
存储器1202作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的软件升级方法对应的程序指令/模块(例如,附图8所示的各个模块)。处理器1201通过运行存储在存储器1202中的非易失性软件程序、指令以及模块,从而执行软件升级装置的各种功能应用以及数据处理,即实现上述方法实施例的软件升级方法。
存储器1202可以包括存储程序区和存储数据区,其中,存储程序区用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,供处理器1201调用以使处理器1201执行一个或者多个方法步骤,例如执行图5中的方法步骤S21至步骤S23、执行图6中的方法步骤S211至步骤S213。此外,存储器1202可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。
在本实施例中,通过主设备110和从设备120的交互操作完成对软件的升级操作。区别于现有技术,该软件升级系统100能够降低设备功耗,并且保证了软件升级的稳定性。
在一些实施例中,同样请参阅图1,所述系统100还可以包括上位机130,该上位机130具体可以是PC机、服务器等。所述上位机130与所述主设备110通信连接。所述上位机130用于向主设备110发送指令,比如无线升级指令。所述上位机130还用于根据所述主设备110发送的指令返回运算处理结果,比如,所述主设备110向所述上位机130转发所述从设备120发送的升级请求,所述上位机130根据所述升级请求返回确认升级指令。所述上位机130还用于向所述主设备110发送程序包。所述上位机130可以用于获取数据、执行逻辑运算功能以及下发运算处理结果。
需要说明的是,在图1中,所述主设备110与所述上位机130作为单独的两个部分而存在,在一些实施例中,所述主设备110还可以集成于所述上位机130中,作为所述上位机130中的一个模块。
上述软件升级系统可执行本发明实施例所提供的软件升级方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
请参阅图4,图4是本发明实施例提供的一种软件升级方法的流程图。该方法由上述主设备110执行。如图4所示,该方法包括:
S11、所述主设备在预设时间内广播前导帧,以使从设备根据所述前导帧确定开窗时间。
在本实施例中,所述前导帧是所述主设备发送的,其用于使从设备不时刻处于开窗状态,从而降低从设备的功耗。所述前导帧具体可以是下述格式:
其中,所述前导帧编号用于唯一标识所述前导帧,即每一前导帧都有其对应的编号。所述UID列表包括需要升级的从设备ID。所述map具体可以是一个映射表,该映射表用于表示接收到的固件包情况。
所述开窗状态指的是从设备为启动状态,在启动状态时,所述从设备可以接收主设备发送的数据,该数据包括前导帧、程序包等。
所述预设时间可以根据实际应用的具体场景进行设置,比如设置为50ms、60ms等。
所述主设备在所述预设时间内广播前导帧时,具体可以是每一毫秒发送一帧前导帧,如果所述预设时间为50ms,那么即总共发送50次前导帧。当然,在实际应用过程中,还可以是每一毫秒发送两帧或三帧或多帧前导帧。
其中,所述从设备根据所述前导帧确定开窗时间包括:获取主设备广播所述前导帧的时间T;在所述主设备开始广播所述前导帧后,执行预开窗操作,以获取前导帧的帧编号;根据获得的所述时间T和所述帧编号确定开窗时间。
S12、在所述前导帧发送完毕并且所述从设备为开窗状态时,所述主设备发送升级指令,以使所述从设备根据所述升级指令进入boot程序并切换到无线升级信道。
所述升级指令可以是上位机发送给主设备,再由主设备发送给从设备。所述升级指令用于指示所述从设备开始升级,所述升级指令中可以包括UID列表,所述UID列表包括需要升级的从设备ID。
所述从设备接收到所述升级指令后,进入boot程序并切换到无线升级信道。其中,所述boot程序是专门用于升级的程序,其具备下载程序、启动程序的功能。
S13、所述主设备以预设的周期向所述从设备发送程序包,以使所述从设备根据所述程序包进行软件升级,其中,所述从设备根据所述程序包进行软件升级的过程中将程序写入备份程序区。
在所述从设备为开窗状态时,所述主设备可以以广播的方式发送所述程序包。具体可以是周期性的广播所述程序包,该周期可以由系统预先设定。比如,所述主设备发送完毕一组前导帧后,每隔100ms发送1包升级文件信息和7包文件块\8包文件块\9包文件块,等,所述升级文件信息指的升级的程序的基本信息,所述文件块指的是升级的程序的实际数据。所述升级文件信息具体可以表示为:
1byte | 40byte | 4byte | 3byte | 16byte | 16byte |
指令号 | 固件名 | 固件大小 | 固件版本 | MD5校验值 | 文件信息 |
所述文件块具体可以表示为:
2byte | 2byte | 1byte | 4byte | 1byte | Nbyte |
总包数 | 当前包号 | 数据类型 | 写入地址 | 数据长度 | 程序数据 |
所述从设备接收所述程序包,在接收完全部的程序包后,通过重启来执行软件的升级操作。
在一些实施例中,所述从设备可以在预开窗(也即是第一次开窗)时,根据获得的前导帧判断待升级的从设备中是否包括自己,具体可以判断所述UID列表中是否包括从设备的ID,如果不包括,则可以向所述主设备发送升级请求,主设备将该升级请求上报给上位机,由上位机控制是否同意升级,如果同意升级,则可以在所述UID列表中加上所述从设备的ID。
在一些实施例中,所述从设备在接收所述程序包的过程中,还向所述主设备反馈自己的升级状态,此时,所述主设备根据接收到的从设备的升级状态信息调整所述程序包的发送状态,比如,主设备根据已接收到的程序包的数量和已接收到的程序包的map,判断从设备的升级速度,并且可以去掉所有从设备都已经接收到的程序包,从而可以减少广播的程序包数量,提高升级速度。其中,所述程序包的map指的是包含程序包信息的映射表,比如程序一共有100包,当收到第一包程序时,对应的位数为1,如果没有收到第一包程序,则其对应的位数为0;类似的,记录其他数据包的位数,从而形成所述map。
其中,所述从设备反馈的升级状态具体可以为下述格式,即:
4byte | 2byte | 1byte | 64byte |
UID | 已收到的包数 | 指令号 | 收到的程序包的map图 |
在一些实施例中,所述主设备还用于根据从设备上传的升级信息判断所述从设备是否已经升级完成,如果是,所述主设备向所述从设备发送停止绑定指令,以使所述从设备根据该指令停止绑定,并重启设备。可选地,所述从设备在重启之前,还会先计算应用程序的MD5值,如果该计算得到的值与存储升级文件的MD5值相同,则说明所述应用程序完整,可以启动应用程序,从而完成升级。如果这两个MD5值不同,说明所述应用程序可能被破坏了,可以将备份程序复制到应用程序中,然后重启应用程序。由此,不会影响应用程序的数据,保证设备可以继续使用。
本发明实施例提供了一种软件升级方法,该方法由主设备广播前导帧,从而使从设备根据前导帧确定开窗时间,由此降低了从设备的功耗。该方法还通过主设备广播程序包和从设备定时返回升级状态,由此提高了升级速度。此外,在数据传输过程中对接收到的应用程序进行备份,在进行升级之前先对接收到的应用程序进行校验,从而提高了软件升级过程的稳定性和可靠性。
请参阅图5,图5是本发明实施例提供的一种软件升级方法的流程图。该方法由上述从设备120执行。如图5所示,该方法包括:
S21、接收主设备发送的前导帧,根据所述前导帧确定开窗时间。
其中,所述前导帧的具体含义可以参考上述实施例。如图6所示,所述接收主设备发送的前导帧,根据所述前导帧确定开窗时间,包括:
S211、获取主设备广播所述前导帧的时间T;
所述时间T即上述预设时间,也即是主设备发送一组前导帧所需要花费的总时间。比如,该时间T可以是40ms、50ms、60ms等。其中,可以是每一毫秒发送一帧前导帧,如果所述T为50ms,那么需要发送50次前导帧。
S212、在所述主设备开始广播所述前导帧后,执行预开窗操作,以获取前导帧的帧编号;
所述从设备可以获悉所述主设备何时开始广播所述前导帧,并且可以获悉主设备广播前导帧的时间,因此,在该时间T内执行一次预开窗操作必然可以接收到主设备发送的前导帧。其中,每一帧前导帧均包括其各自对应的编号,所述编号可以用于唯一识别所述前导帧。在执行所述预开窗操作时,可以根据获得的前导帧获取其编号。
其中,所述执行预开窗操作包括:在所述主设备广播所述前导帧的时间T内执行一次t时间内的开窗操作,所述t为所述预开窗的时长,t<T。
需要说明的是,所述预开窗的时长t是很短的,比如1ms、2ms等,只要通过该预开窗操作接收到至少一帧前导帧即可,而不用长时间开窗,从而降低从设备的功耗。
在一些实施例中,所述前导帧还包括UID列表,每一帧前导帧中均携带一UID列表,所述UID列表包含需要升级的各从设备的ID。所述从设备可以根据预开窗操作得到前导帧获得所述UID列表,根据该UID列表判断其中是否包含自身所对应的ID,如果不包含,则向所述主设备发送升级请求。由此,从设备可以主动请求升级,避免升级过程中部分从设备被漏掉。
S213、根据获得的所述时间T和所述帧编号确定开窗时间。
例如,所述预开窗操作所获得的帧编号为40,可以知道的是所述主设备广播前导帧的时间T为50ms,并且每1毫秒广播一帧前导帧,因此,所述从设备根据编号40可以确定所述开窗时间是10ms之后,在10ms之后所述前导帧全部广播完毕,此时所述主设备开始广播程序包,所述从设备可以定时10ms开窗,当其为开窗状态时,接收所述主设备广播的程序包。其中,所述从设备在收到所述编号后开始与所述主设备同步计时。
例如,所述预开窗操作所获得的帧编号为20,可以知道的是所述主设备广播前导帧的时间T为60ms,并且每2毫秒广播一帧前导帧,因此,所述从设备根据编号20可以确定的所述开窗时间是20ms之后,在20ms之后所述前导帧全部广播完毕,此时所述主设备开始广播程序包,所述从设备可以定时20ms开窗,当其为开窗状态时,接收所述主设备广播的程序包。其中,所述从设备在收到所述编号后开始与所述主设备同步计时。
需要说明的是,所述前导帧的编号除了可以是数字“1、2、3……”之外,还可以是字母或者数字与字母的组合等等。并且所述编号是按照一定的顺序排列的,比如,第一帧前导帧的编号为1,第二帧前导帧的编号为2,依次类推,第五十帧的前导帧的编号为50。根据前导帧的编号可以确定其对应的是哪一帧前导帧。
此外,如果在执行所述预开窗操作时获得多帧前导帧,比如前导帧的发送时间T为50ms,并且每一毫秒发送一帧前导帧,预开窗2ms得到编号为40和41的前导帧,根据编号的规则可以确定最近一次获得的前导帧是编号41,由此可以确定还有9帧前导帧待发送,因此,确定所述开窗时间是9ms之后,所述从设备可以定时9ms开窗。
S22、在到达所述开窗时间时,进入开窗状态,并接收所述主设备发送的升级指令,根据所述升级指令进入boot程序并切换到无线升级信道;
S23、接收所述主设备发送的程序包,以根据所述程序包进行软件升级,其中,所述从设备根据所述程序包进行软件升级的过程中将程序写入备份程序区。
在本实施例中,为了保证从设备的接收稳定性,可以在从设备flash中设置boot程序区、应用程序区、备份程序区。如果从设备内部flash的空间不够,可以将所述备份程序区存入外部flash中。在所述从设备接收所述程序包的过程中,可以将所述程序包写入备份程序区,以便备用。
所述从设备在接收所述程序包的过程中,还用于向所述主设备发送升级状态信息,以使所述主设备根据所述升级状态信息调整所述程序包的发送状态,其中,所述升级状态信息包括所述从设备当前收到的程序包的映射表和已收到的程序包数量。所述从设备可以周期性的发送所述升级状态信息,比如定时1s发送一次自己的升级状态。
比如,主设备根据已接收到的程序包的数量和已接收到的程序包的map,判断从设备的升级速度,并且可以去掉所有从设备都已经接收到的程序包,从而可以减少广播的程序包数量,提高升级速度。其中,所述程序包的map指的是包含程序包信息的映射表,比如程序一共有100包,当收到第一包程序时,对应的位数为1,如果没有收到第一包程序,则其对应的位数为0;类似的,记录其他数据包的位数,从而形成所述map。
当从设备接收到全部的程序包后,根据预设算法对接收到的程序包进行验证,以验证所述程序包的完整性。比如,可以根据MD5信息摘要算法计算收到的文件信息里的MD5值,由于从设备中预存了MD5的校验值,因此可以将计算得到的MD5值与所述校验值进行比较,如果两者相同,则说明收到的程序包没有被破坏,是完整的,此时可以直接启动应用程序,从而完成软件升级。如果上述两个MD5值不同,说明程序被损坏,此时需要计算一下备份程序的MD5值,将备份程序的MD5值与所述校验值进行比较,如果相同,说明备份程序没有被损坏,此时可以将所述MD5值更新到从设备的flash中,将备份程序复制到应用程序中,并启动应用程序,从而完成软件升级。
可以理解的是,本实施例上述方法是支持中断映射的,可以使boot程序跳转到应用程序,从而完成程序的升级。然而一些CPU的中断向量必须放在0地址位,这些CPU不能支持中断映射。
因此,在一些实施例中,所述方法还包括,在所述boot程序中将中断函数映射到一块固定的RAM中,并将应用程序的中断向量表复制到所述RAM下,以保证所述应用程序的中断能够通过0地址映射到所述RAM,在所述RAM中获取实质执行的程序位置,从而执行本发明实施例所提供的方法。
本发明实施例提供的软件升级方法,该方法由主设备广播前导帧,使从设备根据该前导帧确定开窗时间,由此降低了从设备的功耗。该方法还通过主设备广播程序包和从设备定时返回升级状态,由此提高了升级速度。此外,在数据传输过程中对接收到的应用程序进行备份,在进行升级之前先对接收到的应用程序进行校验,从而提高了软件升级过程的稳定性和可靠性。该方法适用于超低功耗的无线设备升级,以及一对多的无线软件升级,并可以保证升级中断产生的异常不影响从设备本身的程序。
请参阅图7,图7是本发明实施例提供的一种软件升级装置的结构示意图,所述装置30应用于上述主设备110。所述装置30包括:广播模块301、第一发送模块302以及第二发送模块303。
广播模块301,用于在预设时间内广播前导帧,以使从设备根据所述前导帧确定开窗时间;第一发送模块302,用于在所述前导帧发送完毕并且所述从设备为开窗状态时,发送升级指令,以使所述从设备根据所述升级指令进入boot程序并切换到无线升级信道;第二发送模块303,用于以预设的周期向所述从设备发送程序包,以使所述从设备根据所述程序包进行软件升级,其中,所述从设备根据所述程序包进行软件升级的过程中将程序写入备份程序区。
在一些实施例中,所述前导帧包括UID列表,所述UID列表包括需要升级的从设备ID,当所述UID列表中不包括需要升级的从设备ID时,同样请参阅图7,所述装置30还包括:第一接收模块304和第一处理模块305。所述接收模块304,用于接收所述需要升级的从设备发送的升级请求;所述处理模块305,用于在确定所述需要升级的从设备能够升级时,在所述UID列表中添加所述需要升级的从设备所对应的ID。
在一些实施例中,所述从设备接收所述程序包的过程中,还会向所述主设备反馈自己的升级状态,同样请参阅图7,所述装置30还包括:第二接收模块306和第二处理模块307。所述第二接收模块306,用于接收所述从设备发送的升级状态信息;所述第二处理模块306,用于根据所述升级状态信息调整所述程序包的发送状态。
值得说明的是,上述装置内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的上述主设备执行的方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
请参阅图8,图8是本发明实施例提供的一种软件升级装置的结构示意图,所述装置40应用于上述从设备120。所述装置40包括:第一处理模块401、第二处理模块402以及第一接收模块403。
第一处理模块401,用于接收主设备发送的前导帧,根据所述前导帧确定开窗时间;第二处理模块402,用于在到达所述开窗时间时,进入开窗状态,并接收所述主设备发送的升级指令,根据所述升级指令进入boot程序并切换到无线升级信道;第一接收模块403,用于接收所述主设备发送的程序包,以根据所述程序包进行软件升级,其中,所述从设备根据所述程序包进行软件升级的过程中将程序写入备份程序区。
其中,所述第一处理模块401具体用于:获取主设备广播所述前导帧的时间T;在所述主设备开始广播所述前导帧后,执行预开窗操作,以获取前导帧的帧编号;根据获得的所述时间T和所述帧编号确定开窗时间;其中,所述时间T内的每一秒发送一帧前导帧,所述每一帧前导帧包括其对应的帧编号。
其中,所述执行预开窗操作包括:在所述主设备广播所述前导帧的时间T内执行一次t时间内的开窗操作,其中,所述t为所述预开窗的时长,t<T。
在一些实施例中,所述前导帧包括UID列表,所述UID列表包括需要升级的从设备ID,同样请参阅图8,所述装置40还包括第三处理模块404,所述第三处理模块404用于:根据所述前导帧判断所述UID列表中是否包括所述从设备的ID;若否,向所述主设备发送升级请求。
在一些实施例中,同样请参阅图8,所述装置40还包括发送模块405,所述发送模块405用于:向所述主设备发送升级状态信息,以使所述主设备根据所述升级状态信息调整所述程序包的发送状态,其中,所述升级状态信息包括所述从设备当前收到的程序包的映射表和已收到的程序包数量。
在一些实施例中,同样请参阅图8,所述装置40还包括升级模块406,所述升级模块406用于:当所述从设备获取到全部的程序包后,根据预设算法对接收到的程序包进行验证,以验证所述程序包的完整性;在确定所述程序包为完整时,从boot程序跳转到应用程序,并启动所述应用程序,以完成所述从设备的软件升级。
值得说明的是,上述装置内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的上述从设备执行的方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件来实现。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (9)
1.一种软件升级方法,应用于主设备,其特征在于,所述方法包括:
所述主设备在预设时间内广播前导帧,以使从设备根据所述前导帧确定开窗时间;
在所述前导帧发送完毕并且所述从设备为开窗状态时,所述主设备发送升级指令,以使所述从设备根据所述升级指令进入boot程序并切换到无线升级信道;
所述主设备以预设的周期向所述从设备发送程序包,以使所述从设备根据所述程序包进行软件升级,其中,所述从设备根据所述程序包进行软件升级的过程中将程序写入备份程序区;
其中,所述从设备根据所述前导帧确定开窗时间包括获取主设备广播所述前导帧的时间T;在所述主设备开始广播所述前导帧后,执行预开窗操作,以获取前导帧的帧编号;根据获得的所述时间T和所述帧编号确定开窗时间;其中,所述时间T内的每一秒发送一帧前导帧,每一帧前导帧包括其对应的帧编号;其中,所述根据获得的所述时间T和所述帧编号确定开窗时间包括:根据所述帧编号和所述每一秒发送一帧前导帧确定所述帧编号对应的时间;计算所述时间T与所述帧编号对应的时间的差值,所述差值为所述开窗时间。
2.根据权利要求1所述的方法,其特征在于,所述前导帧包括UID列表,所述UID列表包括需要升级的从设备ID,
当所述UID列表中不包括需要升级的从设备ID时,所述方法还包括:
接收所述需要升级的从设备发送的升级请求;
在确定所述需要升级的从设备能够升级时,在所述UID列表中添加所述需要升级的从设备所对应的ID。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
接收所述从设备发送的升级状态信息;
根据所述升级状态信息调整所述程序包的发送状态。
4.一种软件升级方法,应用于从设备,其特征在于,所述方法包括:
获取主设备广播前导帧的时间T;
在所述主设备开始广播所述前导帧后,执行预开窗操作,以获取前导帧的帧编号;
根据获得的所述时间T和所述帧编号确定开窗时间;其中,所述时间T内的每一秒发送一帧前导帧,每一帧前导帧包括其对应的帧编号;
在到达所述开窗时间时,进入开窗状态,并接收所述主设备发送的升级指令,根据所述升级指令进入boot程序并切换到无线升级信道;
接收所述主设备发送的程序包,以根据所述程序包进行软件升级,其中,所述从设备根据所述程序包进行软件升级的过程中将程序写入备份程序区;
其中,所述根据获得的所述时间T和所述帧编号确定开窗时间包括:
根据所述帧编号和所述每一秒发送一帧前导帧确定所述帧编号对应的时间;
计算所述时间T与所述帧编号对应的时间的差值,所述差值为所述开窗时间。
5.根据权利要求4所述的方法,其特征在于,所述执行预开窗操作包括:
在所述主设备广播所述前导帧的时间T内执行一次t时间内的开窗操作,其中,所述t为所述预开窗的时长,t<T。
6.根据权利要求4或5所述的方法,其特征在于,所述前导帧包括UID列表,所述UID列表包括需要升级的从设备ID,所述方法还包括:
根据所述前导帧判断所述UID列表中是否包括所述从设备的ID;
若否,向所述主设备发送升级请求。
7.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
向所述主设备发送升级状态信息,以使所述主设备根据所述升级状态信息调整所述程序包的发送状态,其中,所述升级状态信息包括所述从设备当前收到的程序包的映射表和已收到的程序包数量。
8.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
当所述从设备获取到全部的程序包后,根据预设算法对接收到的程序包进行验证,以验证所述程序包的完整性;
在确定所述程序包为完整时,从boot程序跳转到应用程序,并启动所述应用程序,以完成所述从设备的软件升级。
9.一种软件升级系统,其特征在于,所述系统包括:主设备和从设备,
所述主设备包括:
至少一个处理器,以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至3任一项所述的方法;
所述从设备包括:
至少一个处理器,以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求4至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911283378.6A CN111078255B (zh) | 2019-12-13 | 2019-12-13 | 一种软件升级方法和软件升级系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911283378.6A CN111078255B (zh) | 2019-12-13 | 2019-12-13 | 一种软件升级方法和软件升级系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111078255A CN111078255A (zh) | 2020-04-28 |
CN111078255B true CN111078255B (zh) | 2023-05-23 |
Family
ID=70314427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911283378.6A Active CN111078255B (zh) | 2019-12-13 | 2019-12-13 | 一种软件升级方法和软件升级系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111078255B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596756A (zh) * | 2020-09-08 | 2021-04-02 | 天地(常州)自动化股份有限公司 | 一种多标签程序升级方法、装置及系统 |
CN114615204B (zh) * | 2022-02-17 | 2023-09-19 | 三一汽车起重机械有限公司 | 一种空中下载升级方法、系统及起重机 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101729948A (zh) * | 2009-12-02 | 2010-06-09 | 中兴通讯股份有限公司 | 远程升级方法及系统 |
CN102025712A (zh) * | 2009-09-15 | 2011-04-20 | 上海华为技术有限公司 | 一种数据更新方法、装置和系统 |
CN105813179A (zh) * | 2014-12-31 | 2016-07-27 | 华为技术有限公司 | 批量唤醒设备的方法,装置和设备 |
CN107579863A (zh) * | 2017-10-17 | 2018-01-12 | 锐捷网络股份有限公司 | 终端ota升级方法、装置及系统 |
CN110113805A (zh) * | 2018-02-01 | 2019-08-09 | 华为技术有限公司 | 一种系统消息更新的方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106713044B (zh) * | 2016-12-30 | 2020-04-07 | 深圳市优必选科技股份有限公司 | 数据升级方法及装置 |
-
2019
- 2019-12-13 CN CN201911283378.6A patent/CN111078255B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102025712A (zh) * | 2009-09-15 | 2011-04-20 | 上海华为技术有限公司 | 一种数据更新方法、装置和系统 |
CN101729948A (zh) * | 2009-12-02 | 2010-06-09 | 中兴通讯股份有限公司 | 远程升级方法及系统 |
CN105813179A (zh) * | 2014-12-31 | 2016-07-27 | 华为技术有限公司 | 批量唤醒设备的方法,装置和设备 |
CN107579863A (zh) * | 2017-10-17 | 2018-01-12 | 锐捷网络股份有限公司 | 终端ota升级方法、装置及系统 |
CN110113805A (zh) * | 2018-02-01 | 2019-08-09 | 华为技术有限公司 | 一种系统消息更新的方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111078255A (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106569847B (zh) | 一种用于车载系统基于移动网络实现iap远程升级的方法 | |
CN104579719B (zh) | 一种固件的升级方法和系统、上位机和光模块 | |
CN112947977B (zh) | 一种软件在线升级方法及系统 | |
CN111078255B (zh) | 一种软件升级方法和软件升级系统 | |
CN107066300B (zh) | 一种存储设备的固件升级方法和存储设备 | |
CN110837388B (zh) | 机器人的软件升级方法、升级服务器、机器人及存储介质 | |
CN108989103B (zh) | 设备升级方法、调试器、网络设备和网络系统 | |
CN103488501A (zh) | 光网络终端设备及其系统软件升级方法 | |
US20160313715A1 (en) | Method, Device and Computer Program Product for Programming a Plurality of Control Units | |
CN112732616B (zh) | 一种基于spi控制器的bmc启动方法、装置及设备 | |
CN105468390B (zh) | Boot在线升级装置及方法 | |
CN114035831B (zh) | 一种cpld升级方法、系统及计算机可读存储介质 | |
CN116400943A (zh) | 车辆控制器的升级方法、系统、设备、介质及车辆 | |
CN107015829B (zh) | 音频系统升级方法、装置 | |
CN113626059B (zh) | 系统升级方法、摄像机及计算机可读存储介质 | |
CN108845823B (zh) | 一种基于f2812芯片的软件在线升级方法 | |
US9690569B1 (en) | Method of updating firmware of a server rack system, and a server rack system | |
CN110308916B (zh) | 基于lorawan协议的OTA升级方法、装置、设备、系统及存储介质 | |
CN106933637A (zh) | 一种系统分区的修复方法及装置 | |
CN116483409A (zh) | 一种远程固件更新的方法、系统、电子设备及存储介质 | |
CN116360570A (zh) | Cpu上电时序的控制方法、控制装置和电子设备 | |
CN116185510A (zh) | 分区切换启动方法、阵列服务器和计算机可读存储介质 | |
CN114546455A (zh) | 一种双分区的mcu软件升级方法及装置 | |
CN115098138A (zh) | 电池管理系统的功能升级方法、装置、电子设备及介质 | |
CN113342385A (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 |