CN110633097A - 一种单片机的ota升级方法及装置 - Google Patents

一种单片机的ota升级方法及装置 Download PDF

Info

Publication number
CN110633097A
CN110633097A CN201810645212.3A CN201810645212A CN110633097A CN 110633097 A CN110633097 A CN 110633097A CN 201810645212 A CN201810645212 A CN 201810645212A CN 110633097 A CN110633097 A CN 110633097A
Authority
CN
China
Prior art keywords
firmware
upgrading
data
area
upgrade
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
Application number
CN201810645212.3A
Other languages
English (en)
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.)
Ennew Digital Technology Co Ltd
Original Assignee
Ennew Digital 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 Ennew Digital Technology Co Ltd filed Critical Ennew Digital Technology Co Ltd
Priority to CN201810645212.3A priority Critical patent/CN110633097A/zh
Publication of CN110633097A publication Critical patent/CN110633097A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

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

本发明提出了一种单片机OTA升级的方法及装置,所述方法采用了升级发起‑服务器应答‑数据下载‑服务器应答‑升级结束‑服务器应答的设计流程进行升级,方法简单,易于实现;同时,针对单片机存储区域提出了独特的区域划分结构和数据存储方式,能够有效解决固件升级失败而导致的设备损坏无法运行的情形;同时针对固件升级中的数据传输过程,采用定制的传输协议格式,能够简单的进行数据的发送和解析,对数据传输过程进行加密和校验,并在发生异常情形时执行相应的异常处理机制,有效保证了升级过程的顺利进行。

Description

一种单片机的OTA升级方法及装置
技术领域
本发明涉及无线通信技术领域,更具体地,涉及一种单片机的OTA升级方法及装置。
背景技术
在智能物联网时代,各种智能设备越来越多的出现在人们的生活中。以单片机为控制器核心的智能设备,因为成本低、功耗低、可靠性高的原因被大量采用。现在许多物联网智能设备在用户使用过程中,因为功能升级或者性能不完善的原因,需要对产品固件进行远程升级。智能设备OTA固件升级对升级方法的易用性、安全性、鲁棒性等具有较高的要求,如果升级方法设计不可靠,就会造成升级失败,严重的产品直接报废;如果升级方法设计过于复杂,也会造成升级速度慢,实现困难。
因此,对于升级方法的设计来说,首先,升级方法要求简单可靠,实现起来容易;其次,升级过程中要求数据安全性高,防止程序泄密,还要防止来自网络的黑客攻击;再次,升级过程中出现异常要有对策,即使产品升级不成功,也可以让产品保留在现在的固件版本,无论如何不能让产品损坏。
传统的智能设备OTA升级方法,一般都采用Ymodem协议进行升级。 Ymodem协议是在Xmodem协议基础上演变而来的,但使用Ymodem协议升级的方法,缺点主要是该协议比较复杂,实现起来繁琐,并且升级过程缺少加密算法,数据安全性不高,同时也缺少对于升级过程中出现的异常进行处理的机制。
发明内容
有鉴于此,本发明实施例期望提供一种以单片机为控制器核心的智能设备的OTA升级方法和装置,以提供一种实现简单、数据保密性高、可靠性高的固件升级方案。
为达到上述目的,本发明的技术方案实现如下:
本发明提供一种单片机OTA升级方法,所述方法应用于智能设备,所述方法包括:
接收服务器下发的固件升级请求指令;
响应于所述固件升级请求指令,接收固件升级包数据,将所述升级包数据存放在代码运行空闲区;
查找设备的EEROM存储区,根据所述EEROM存储区确定设备固件区域以进行固件升级。
优选地,所述设备的单片机存储区域至少包括程序启动区、代码运行区、代码运行空闲区,代码运行区是设备当前固件所在区域。
优选地,所述EEROM存储区存储有一固件启动代码选择标识,所述根据所述EEROM存储区确定设备固件区域包括:
根据所述固件启动代码选择标识所指向的区域确定设备固件所在区域。
优选地,响应于全部升级包数据接收完成,将所述固件启动代码选择标识所指向的区域修改为新的升级包数据所在的区域。
优选地,所述升级包数据包括多个升级子包数据;
所述接收固件升级包数据,将所述升级包数据存放在代码运行空闲区具体包括:
分别接收所述多个升级子包数据,并将所述多个升级子包数据存储在代码运行空闲区的连续区域。
优选地,每当接收一个升级子包数据,设备向升级服务器发送接收成功反馈。
优选地,所述接收服务器下发的固件升级请求指令、和/或接收固件升级包数据还包括:采用统一的数据传输协议格式;
所述传输协议格式的字段包括协议标识、协议版本、数据方向、加密因子、指令代码、绝对ID、报文长度、报文内容、校验信息、结束符;
其中,不同的指令通过指令代码相区分。
优选地,采用AES128算法对所述数据传输进行加密和解密。
优选地,采用CRC16对数据传输过程进行校验。
优选地,在数据传输过程中当确认传输协议格式错误、和/或数据解密错误、和/或数据校验错误时,停止接收固件升级包数据。
根据本发明的另一技术方案,本发明提供另一种单片机OTA升级方法,所述方法包括:
对智能设备固件版本进行版本查询;
对查询到的智能设备的固件版本与服务器存储的固件版本进行比对,当确定智能设备的固件版本低于服务器的最新版本时,向智能设备发出固件升级请求指令;
响应于智能设备发送的升级准备就绪反馈,向智能设备发送固件升级包数据;
响应于智能设备发送的数据包接收成功反馈,向智能设备发送升级结束指令。
本发明提供一种单片机OTA升级装置,包括:
接收模块,用于接收服务器下发的固件升级请求指令;
存储模块,用于响应于所述固件升级请求指令,接收固件升级包数据,将所述升级包数据存放在代码运行空闲区;
升级模块,用于查找设备的EEROM存储区,根据所述EEROM存储区确定设备固件区域以进行固件升级;
其中,所述设备的EEROM存储区域至少包括程序启动区、代码运行区、代码运行空闲区,代码运行区是设备当前固件所在区域;所述EEROM存储区存储包含固件启动代码选择标识。
本发明提供一种单片机OTA升级装置,包括:
查询模块,用于对智能设备固件版本进行版本查询;
分析模块,用于对查询到的智能设备的固件版本与服务器存储的固件版本进行比对,当确定智能设备的固件版本低于服务器的最新版本时,向智能设备发出固件升级请求指令;
第一发送模块,用于响应于智能设备发送的升级准备就绪反馈,向智能设备发送固件升级包数据;
第二发送模块,用于响应于智能设备发送的数据包接收成功反馈,向智能设备发送升级结束指令。
本发明的OTA升级方法简单可靠,通过OTA升级发起-服务器应答-数据下载-服务器应答-升级结束-服务器应答的设计流程进行升级,升级过程中使用AES128加密,使用CRC校验,并对MCU存储区合理划分子区域用于新旧固件版本的存储,该升级方法简单,安全性高,可避免出现升级数据错误。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所述的固件升级方法的整体流程图。
图2为本发明实施例所述的单片机存储区的划分结构。
具体实施方式
以下结合说明书附图及具体实施例对本发明的技术方案进行清楚、完整地描述。
实施例一:
参照附图1,本实施例提供一种固件升级方法,其应用于一智能设备以及对应的升级服务器中。该智能设备可以是任意类型的智能终端、处理器、控制器等,本发明实施例以单片机为例进行说明,应该理解到,所揭露的设备和方法,可以通过其它的方式实现,以下所描述的设备实施例仅仅是示意性的。
参照附图1,本发明的固件升级方法的技术方案实现流程如下:
步骤S1,当有新的固件版本将要发布时,技术人员会将新的固件版本上传到服务器,以供智能设备升级使用。上传到服务器的固件至少包括升级所需要的数据内容、以及该固件所对应的最新版本信息,例如版本号等。
步骤S2,智能设备在正常工作中会连接到服务器。智能设备本身具有相应的固件版本,该版本信息可用版本号来进行标识。
步骤S3,当有新的设备连接到服务器时,服务器会对连接到它的智能设备进行固件版本查询。例如服务器可对存储在智能设备上的与智能设备的固件版本相对应的版本号进行查询,以确定智能设备当前所运行固件的版本信息。
步骤S4,服务器对读取到的智能设备固件版本与服务器的固件版本进行比对。
具体地,可将服务器上最新的固件版本信息与智能设备的固件版本信息进行对比;当服务器确定智能设备的固件版本低于服务器的最新版本时,表明智能设备需要进行固件升级,此时转到步骤S5;当服务器确定智能设备的固件版本与服务器当前的最新版本一致时,表明智能设备无需进行固件升级,则不进入到升级过程,继而进行其它的智能设备与服务器的数据交互过程。
步骤S5,服务器向智能设备发出固件升级指令。
步骤S6,当智能设备收到服务器发送的固件升级指令后,向服务器反馈升级准备就绪。
具体地,当智能设备接收到服务器发送的固件升级指令后,会对工作现场进行处理,例如暂停当前运行的数据处理工作、将当前所处理的数据和系统状态参数等存入缓冲以用于现场恢复等;在对工作现场处理完成后,智能设备向服务器发送指令以将当前的升级就绪状态通知给服务器。
步骤S7,服务器接收到智能设备发送的升级就绪指令后,开始向智能设备下传所要升级固件的数据包。应该理解到,所下发的数据包是固件新版本的至少一部分信息,其大小是可设定的,可依据服务器、智能设备的数据处理能力、或者网络传输能力相应设置每次下发数据包的大小,其在此不受限定。
步骤S8,当智能设备收到服务器的一包数据时,都会做出收到应答。
具体地,当智能设备接收完毕一包数据后,产生一接收完毕的指令发送给服务器。服务器在接收到智能设备反馈的接收完毕指令之前,暂停发送剩余的数据包。
步骤S9,服务器收到智能设备发送的数据包接收成功应答后,继续发送下一包数据;重复执行步骤S8至步骤S9的过程,直到所要升级的全部固件数据发送完毕。
步骤S10,当所有的升级数据都发送完成后,服务器向智能设备下发升级结束通知。
具体地,当固件升级数据全部发送完成后,服务器产生一升级结束指令并发送给智能设备。
步骤S11,智能设备收到升级结束通知后,产生回复信息发送给服务器。该回复信息例如可以表示智能设备将要开始进行本地升级。
步骤S12,智能设备开始进行固件升级,升级完成后程序会自动重启,重启后按新固件程序运行。
至此,固件升级的过程处理完成,智能设备能够运行于最新的固件版本。
上述方法采用了升级发起-服务器应答-数据下载-服务器应答-升级结束- 服务器应答的设计流程进行升级,方法简单,易于实现。
根据实施例一所述的固件升级方法,所述方法由服务器提供固件升级数据,智能终端接收升级数据后进行固件升级。为了使本发明的技术方案更加清楚完整,以下通过实施例二和实施例三分别对本发明的固件升级方法在智能设备端以及服务器端的处理过程进行说明。
实施例二:
本实施例提供一种单片机OTA升级方法,所述方法运行于智能设备处。
当有新的固件版本时,智能设备将接收到服务器下发的固件升级请求指令。当接收到固件升级请求指令时,智能设备将进行升级前的准备。如果设备已准备好接收新的升级数据,其将会将当前的就绪状态上报给服务器,以通知服务器可以开始传输升级包数据。
响应于服务器开始传送升级包数据,智能设备开始接收所述升级包数据,并将升级包数据存放在单片机的存储区域。
可以理解,升级包数据根据实际情形可具有不同的数据容量。优选地,当所要升级的数据量较大时,可将升级包数据拆分为多个数据子包,则智能设备在接收升级包数据时,每次接收的是一个数据子包,该数据子包的大小可根据智能设备的数据处理能力、或者网络传输能力等相应设置,其在此不受限定。
智能设备每接收一个数据子包,都会将其存放在单片机的存储区域中,优选地,可将所接收的多个数据子包连续地存储在单片机的存储区域中,以方便固件升级时数据的查找。
在智能设备接收每一个所述数据子包后,可分别产生一个数据接收成功的反馈,并将该数据接收成功反馈发送至服务器,以通知服务器该升级数据子包传送成功,并以此告知服务器其已做好接收下一数据子包的准备。如此,可在智能设备接收服务器的升级包数据时,提高数据传输的完整性,保证升级过程的准确性。
智能设备通过以上方法接收服务器端的升级数据,直至所有升级数据完整接收。优选地,智能设备可以通过接收服务器端发送的一升级结束指令来确定所有升级数据接收完成。
所有升级数据接收完成后,智能设备开始进行本地升级。智能设备开始读取单片机存储区域中所存储的升级数据并进行固件升级,升级完成后可进行设备重启,以使得智能设备按新固件程序运行。
通过以上方式,智能设备完成了固件的升级,升级过程中通过数据接收—接收成功反馈的处理模式,提高了数据传输的完整性和准确性,提高了升级过程的可靠行。
实施例三:
本实施例提供一种单片机OTA升级方法,所述方法运行于升级服务器处。
所述服务器是能够提供智能设备访问的任何类型的服务器,其同时能够为智能设备的固件提供版本升级。
服务器上存储有最新的可供智能设备使用的固件版本,该固件版本可由技术人员上传到服务器,以供智能设备升级使用。
当有智能设备连接到服务器时,服务器会对连接到它的智能设备进行固件版本查询。例如服务器可对存储在智能设备上的与智能设备的固件版本相对应的版本号进行查询,以确定智能设备当前所运行固件的版本信息。
当读取到智能设备的固件版本信息后,服务器将其与自身存储的最新固件版本进行比对。若服务器确定智能设备的固件版本与服务器当前的最新版本一致,则表明智能设备无需进行固件升级,则不进入到升级过程,继而进行其它的智能设备与服务器的数据交互过程。若比较得出智能设备的固件版本较低,则服务器将会通知智能设备进行固件升级,例如可生成一固件升级请求指令发送至智能设备。
在发送所述固件升级请求指令后,服务器将等待智能设备的回应,以确定智能设备是否已处于升级就绪状态。当服务器接收到智能设备发送的升级就绪反馈后,则可以开始向智能设备发送升级包数据。
当所有升级包数据发送完成后,服务器可以生成一结束指令,以通知智能设备所有升级数据发送完毕。
其中,当所述升级包数据的数据容量较大时,可以将其进行拆分,以通过多次传输的方式分别发送至智能设备。优选地,可将升级包数据拆分为多个数据子包,则服务器在发送升级包数据时,每次发送的是一个数据子包。
为提高数据发送的可靠性,当服务器每次发送完一个数据子包后,暂停发送下一个数据子包,此时服务器会等待智能设备反馈的数据接收成功的通知,若接收到智能设备发送的数据接收成功通知,则服务器继续发送下一个数据子包,否则,若没有接收到智能设备发送的接收成功通知,则说明智能设备未接收到升级数据、或者所接收的数据不正确,此时服务器会停止发送升级数据,从而停止固件升级过程。
通过以上方式,服务器能够向智能设备发送完整的固件升级数据,该传输过程能够保证数据传输的完整性,保证升级过程的顺序进行。
实施例四:
在固件升级的过程中,常出现升级中断、数据错误等不可预期的因素而导致升级失败,升级失败后设备既未升级到最新的固件版本,有时更无法保留住现有的固件版本,进而导致设备无法运行,造成设备损坏。
基于此,本发明在实施例一所披露的固件升级方法的基础上,为了继续提高升级过程的可靠性,本发明继续提出以下优化方案:
本实施例中的智能设备示例性地以单片机为核心,然而可以理解,所揭露的设备和方法可以通过其它的方式实现,以下所描述的设备实施例仅仅是示意性的,本发明不限于此。
参照附图2所示,其示出了本发明的单片机存储区域的设计方案。智能设备的核心单片机具有一存储区域,该存储区域至少被划分为3个子区域,包括程序启动区、第一固件区APP1、第二固件区APP2;其中,第一固件区 APP1和第二固件区APP2的存储区域大小相同。可以理解,第一固件区APP1 和第二固件区APP2的大小可以根据固件数据的大小相应设置,在此不作限制。
其中,程序启动区中存储有单片机启动时所需的数据,程序每次启动运行都从程序启动区开始;第一固件区APP1和第二固件区APP2用于保存固件数据。
其中,所述第一固件区APP1和所述第二固件区APP2中的一个为代码运行区,另一个为代码运行空闲区;代码运行区是设备当前固件所在的运行区,代码运行空闲区是设备当前空闲的存储区域,
所述单片机还连接有一外接存储设备,例如EEROM或其他存储介质(以下以EEROM为例进行说明)。
单片机产品出厂时,在单片机存储区域的程序启动区和第一固件区APP1 中写入程序代码,第二固件区APP2为空。具体地,在程序启动区写入单片机启动的引导程序代码,在第一固件区APP1中写入完整的固件数据。在 EEROM内设置一固件启动代码选择标志,该标志可指向第一固件区APP1 或第二固件区APP2,产品出厂时该标志指向第一固件区APP1,也即指向存储有固件数据的存储区。
在单片机启动时,程序从程序启动区开始,在程序启动区程序首先会读取EEROM中的固件启动代码选择标志,判断该标志指向的是第一固件区 APP1还是第二固件区APP2。如果EEROM中的固件启动代码选择标志指向第一固件区APP1,程序就会跳转到第一固件区APP1中运行,如果EEROM 中的固件启动代码选择标志指向第二固件区APP2,程序就会跳转到第二固件区APP2运行。
以上是对单片机及其存储区域初始状态的说明,而当单片机进行固件升级时,为提高升级过程的可靠性,避免单片机因升级失败而造成损坏,本发明的技术方案如下:
当智能设备连接到服务器时,服务器会对连接到它的智能设备进行固件版本查询。服务器查询智能设备的固件版本时,此时能够确定智能设备当前的固件数据是运行在第一固件区APP1还是第二固件区APP2。如果确定智能设备固件当前运行在第一固件区APP1,则表明第二固件区APP2处于空闲状态,那么在固件升级时则将新的固件数据发送到第二固件区APP2,也即在空闲的第二固件区APP2存放新的固件升级数据;如果确定智能设备固件当前运行在第二固件区APP2,则表明第一固件区APP1处于空闲状态,那么在固件升级时则将新的固件数据发送到第一固件区APP1,也即在空闲的第一固件区APP1存放新的固件升级数据。
智能设备接收到升级包数据后,将升级包数据依次存放在代码运行空闲区。
待所有固件升级数据下载完毕后,智能设备将EEROM中的固件启动代码选择标志进行修改,将其修改为指向下载的升级包所在的存储区,即当前的代码运行空闲区。具体地,例如智能设备当前运行的固件数据是存储在第一固件区APP1,则第二固件区APP2处于空闲状态,EEROM中的固件启动代码选择标志指向的就是第一固件区APP1;固件升级时设备接收的最新的固件数据被存储在空闲的第二固件区APP2,待所有升级数据下载完成后,对EEROM中的固件启动代码选择标志进行修改,让其指向到存储有最新固件数据的第二固件区APP2。
在处理完上述过程后,智能设备会自动进行复位重启,因为程序每次启动运行都从程序启动区开始,此时在程序启动区,程序会读取EEROM中的固件启动代码选择标志,此时的标志已经指向了存储有最新固件数据的存储区域;如果EEROM中的固件启动代码选择标志指向第一固件区APP1,程序就会跳转到第一固件区APP1运行,如果EEROM中的固件启动代码选择标志指向第二固件区APP2,程序就会跳转到第二固件区APP2运行。如此,可保证设备在重启后能够基于最新的固件数据运行。
由上述处理方法可知,新的升级数据将会保存在单片机存储区域的空闲区,与当前的固件数据分离存储,升级过程不会对当前的固件数据产生影响;并且通过在EEROM中设置固件启动代码选择标志来指向固件数据,只有当新的固件数据全部升级成功后,该固件启动代码选择标志才会被修改为指向到新的固件数据存储区域,从而使得设备在自动复位重启后能够运行于升级后的固件数据下。
因而基于此,即便固件升级的过程中出现升级中断、数据错误等情形导致升级失败,也可以让产品保留住现有的固件版本,并使其继续基于原有的固件数据运行,而不会出现设备无法运行的情形,能够避免出现设备损坏的状况。
实施例五:
在本发明实施例一所提供的固件升级方法中,由升级服务器向智能设备提供升级数据,升级过程包括服务器查询智能设备的固件版本信息、向智能设备发送升级指令、固件程序下发、向智能设备发送升级结束指令等,同时针对该些所发送的指令和数据包,智能设备在每次接收后均需要进行反馈,例如通知服务器数据接收成功等。
然而在服务器与智能设备之间进行OTA升级和通讯时,数据在传输过程中容易受到监听和仿冒,造成升级程序的泄密或者进行了错误的升级。
基于此,本发明在实施例一所披露的固件升级方法的基础上,为了继续提高升级过程的安全性,本发明继续提出以下优化方案:
首先,针对升级流程中的固件版本信息查询、发送升级指令、固件程序下发、发送升级结束指令、以及智能设备的每一次应答,在服务器与智能设备间传输这些指令、数据时均采取同样的协议格式,以使得数据解析变得简单而不容易出错,升级过程中所涉及的不同的指令通过指令代码相区分。具体地,本发明所使用的传输协议格式如表1中所示。
表1协议格式
Figure BDA0001703356410000121
Figure BDA0001703356410000131
在本发明所提出的通讯协议格式中,包括协议标识、协议版本、数据方向(数据上行、下行)、加密因子、指令代码、绝对ID、报文长度、报文内容、校验信息、结束符等字段,每个字段都具体设置了对应的长度,升级过程中所涉及的指令、数据包等内容均依照上述通讯协议格式进行传输,因此无论对于数据的发送、还是数据的解析,其均能够变得简单而不容易出错。
其次进一步地,对于采用上述协议格式进行传输的内容,都采用AES128 算法进行加密解密。AES128算法使用8组以上的秘钥,每次数据交互都采用随机的加密因子(秘钥号),并且AES128秘钥可根据需要定时更新,进一步增加了安全性。
并且对于每次传输的数据内容,位于校验位之前的所有数据都进行 CRC16校验。具体地,CRC16校验算法因子(2个字节内容)由服务器随机生成,放置于发送信息报文的尾部,每次OTA升级时,例如服务器下发固件升级指令时,在数据域部分通过AES128加密后发送至智能设备,智能设备接收后再重新计算接收到的信息报文的CRC,比较得到的CRC是否与接收到的相一致,如果一致则传输成功,如果不一致则表明数据传输出现错误。
通过上述方式,可有效防止来自网络的攻击;即使整个升级流程的数据包都被截获,或者所有的协议格式均已被披露,然而数据的传输仍能保持较好的安全性;AES128秘钥是随机的,在数据传输过程中无法进行截获,所以截获到的加密数据不能被还原出固件升级包,也不能还原出CRC校验因子。所以即使用截获到的数据向一台智能设备攻击,发出升级指令,智能设备虽然此时可以响应升级请求,但对于下一数据包的升级数据,攻击方则会获取到错误的数据,因为CRC16校验因子是随机的,并且是被加密过的,所以攻击方无法正确计算出下发的错误升级包数据的CRC校验数据,也就无法进行固件升级的仿冒。
因此,本发明实施例在固件升级的方法中,设计了方便数据传输的传输协议格式,并在数据传输时加入AES128加密算法和CRC16校验,使得整个数据传输过程简单、安全,保证了升级数据的私密性,
更进一步地,针对本发明所提出的传输协议格式、数据加密方法以及校验方法,本发明还提出了一种相应的异常处理机制:
一方面,根据本发明提出的CRC校验方法,当智能设备接收到OTA升级指令、OTA升级数据、OTA升级结束指令等时需进行CRC16校验,若校验失败,则智能设备生成升级失败指令,然后反馈给服务器,并结束本次升级过程。
第二方面,当智能设备升级过程中出现通讯协议格式错误时,智能设备生成升级失败指令,然后反馈给服务器,并结束本次升级过程。
第三方面,智能设备接收到加密的数据并对其进行AES128解密,若判断解密后的数据发生错误时,智能设备生成升级失败指令,然后反馈给服务器,并结束本次升级过程。
通过以上三个方面的异常处理机制,当在固件升级的任何过程出现异常时,智能设备均会停止当前的升级过程,避免出现数据传输错误、或升级过程遭受外部攻击的情形,从而保证升级的安全性。
此外,在发生异常情形导致升级失败后,本次升级的数据将全部被忽略,待服务器发起下一次的固件升级时,升级过程将重新开始。
本发明还提供一种单片机OTA升级的装置,该装置包含:接收模块、存储模块、升级模块;具体说明如下:
接收模块,用于接收服务器下发的固件升级请求指令;
存储模块,用于响应于所述固件升级请求指令,接收固件升级包数据,将所述升级包数据存放在代码运行空闲区;
升级模块,用于查找设备的EEROM存储区,根据所述EEROM存储区确定设备固件区域以进行固件升级;
其中,所述设备的EEROM存储区域至少包括程序启动区、代码运行区、代码运行空闲区,代码运行区是设备当前固件所在区域;所述EEROM存储区存储包含固件启动代码选择标识。
本发明还提供一种单片机OTA升级的装置,该装置包含:查询模块,分析模块,第一发送模块,第二发送模块,具体说明如下:
查询模块,用于对智能设备固件版本进行版本查询;
分析模块,用于对查询到的智能设备的固件版本与服务器存储的固件版本进行比对,当确定智能设备的固件版本低于服务器的最新版本时,向智能设备发出固件升级请求指令;
第一发送模块,用于响应于智能设备发送的升级准备就绪反馈,向智能设备发送固件升级包数据;
第二发送模块,用于响应于智能设备发送的数据包接收成功反馈,向智能设备发送升级结束指令。
综上所述,本发明提出了一种单片机OTA升级的方法及装置,上述方法及装置采用了升级发起-服务器应答-数据下载-服务器应答-升级结束-服务器应答的设计流程进行升级,方法简单,易于实现;同时,针对单片机存储区域提出了独特的区域划分结构和数据存储方式,能够有效解决固件升级失败而导致的设备损坏无法运行的情形;同时针对固件升级中的数据传输过程,采用定制的传输协议格式,能够简单的进行数据的发送和解析,对数据传输过程进行加密和校验,并在发生异常情形时执行相应的异常处理机制,有效保证了升级过程的顺利进行。
本发明流程简单,程序实现容易,数据加密安全性高,即可以防止数据出错,也可防止网络攻击,异常处理机制可以保证升级不成功的情况下,产品也不会报废。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
以上仅是本发明的具体步骤,对本发明的保护范围不构成任何限制,其可扩展应用于任何智能设备的任何待升级对象中,凡采用等同变换或者等效替换而形成的技术方案,均落在本发明权利保护范围之内。

Claims (10)

1.一种单片机OTA升级方法,包括:
接收服务器下发的固件升级请求指令;
响应于所述固件升级请求指令,接收固件升级包数据,将所述升级包数据存放在代码运行空闲区;
查找设备的EEROM存储区,根据所述EEROM存储区确定设备固件区域以进行固件升级;
其中,所述设备的EEROM存储区域至少包括程序启动区、代码运行区、代码运行空闲区,代码运行区是设备当前固件所在区域;所述EEROM存储区存储包含固件启动代码选择标识。
2.如权利要求1所述的单片机OTA升级方法,其特征在于:
根据所述EEROM存储区确定设备固件区域还包括:
根据所述固件启动代码选择标识所指向的区域,确定设备固件所在区域;
响应于全部升级包数据接收完成,将所述固件启动代码选择标识所指向的区域修改为新的升级包数据所在的区域。
3.如权利要求1所述的单片机OTA升级方法,其特征在于,
所述升级包数据包括多个升级子包数据;
所述接收固件升级包数据,将所述升级包数据存放在代码运行空闲区具体包括:
分别接收所述多个升级子包数据,并将所述多个升级子包数据存储在代码运行空闲区的连续区域。
4.如权利要求3所述的单片机OTA升级方法,其特征在于:
每当接收一个升级子包数据,设备向升级服务器发送接收成功反馈。
5.如权利要求1所述的单片机OTA升级方法,其特征在于:
所述接收服务器下发的固件升级请求指令、和/或接收固件升级包数据还包括:采用统一的数据传输协议格式;
所述传输协议格式的字段包括协议标识、协议版本、数据方向、加密因子、指令代码、绝对ID、报文长度、报文内容、校验信息、结束符;
其中,不同的指令通过指令代码相区分。
6.如权利要求5所述的单片机OTA升级方法,其特征在于:
采用AES128算法对所述数据传输进行加密和解密;
采用CRC16对数据传输过程进行校验。
7.如权利要求1或6所述的单片机OTA升级方法,其特征在于:
在数据传输过程中当确认传输协议格式错误、和/或数据解密错误、和/或数据校验错误时,停止接收固件升级包数据。
8.一种单片机OTA升级方法,包括:
对智能设备固件版本进行版本查询;
对查询到的智能设备的固件版本与服务器存储的固件版本进行比对,当确定智能设备的固件版本低于服务器的最新版本时,向智能设备发出固件升级请求指令;
响应于智能设备发送的升级准备就绪反馈,向智能设备发送固件升级包数据;
响应于智能设备发送的数据包接收成功反馈,向智能设备发送升级结束指令。
9.一种单片机OTA升级装置,包括:
接收模块,用于接收服务器下发的固件升级请求指令;
存储模块,用于响应于所述固件升级请求指令,接收固件升级包数据,将所述升级包数据存放在代码运行空闲区;
升级模块,用于查找设备的EEROM存储区,根据所述EEROM存储区确定设备固件区域以进行固件升级;
其中,所述设备的EEROM存储区域至少包括程序启动区、代码运行区、代码运行空闲区,代码运行区是设备当前固件所在区域;所述EEROM存储区存储包含固件启动代码选择标识。
10.一种单片机OTA升级装置,包括:
查询模块,用于对智能设备固件版本进行版本查询;
分析模块,用于对查询到的智能设备的固件版本与服务器存储的固件版本进行比对,当确定智能设备的固件版本低于服务器的最新版本时,向智能设备发出固件升级请求指令;
第一发送模块,用于响应于智能设备发送的升级准备就绪反馈,向智能设备发送固件升级包数据;
第二发送模块,用于响应于智能设备发送的数据包接收成功反馈,向智能设备发送升级结束指令。
CN201810645212.3A 2018-06-21 2018-06-21 一种单片机的ota升级方法及装置 Pending CN110633097A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810645212.3A CN110633097A (zh) 2018-06-21 2018-06-21 一种单片机的ota升级方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810645212.3A CN110633097A (zh) 2018-06-21 2018-06-21 一种单片机的ota升级方法及装置

Publications (1)

Publication Number Publication Date
CN110633097A true CN110633097A (zh) 2019-12-31

Family

ID=68966941

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810645212.3A Pending CN110633097A (zh) 2018-06-21 2018-06-21 一种单片机的ota升级方法及装置

Country Status (1)

Country Link
CN (1) CN110633097A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984285A (zh) * 2020-07-10 2020-11-24 星展测控科技股份有限公司 动中通设备的软件升级的方法、动中通设备和服务器
CN112181455A (zh) * 2020-09-24 2021-01-05 深圳数联天下智能科技有限公司 微控制器的在线升级方法、微控制器及存储介质
CN112181471A (zh) * 2020-10-16 2021-01-05 北京紫光展锐通信技术有限公司 差分升级方法及装置、存储介质、计算机设备
CN112286556A (zh) * 2020-10-30 2021-01-29 芯讯通无线科技(上海)有限公司 通信设备及其mcu的远程升级方法
CN112612492A (zh) * 2020-12-18 2021-04-06 百望股份有限公司 企业发票软件系统远程升级的方法
CN113204366A (zh) * 2021-06-02 2021-08-03 上海酒贝乐信息技术有限公司 一种智能售酒机系统的远程升级方法
CN113918202A (zh) * 2021-09-16 2022-01-11 海南云智联科技有限公司 一种支持iap功能的单片机远程升级固件的方法与设备
CN113961212A (zh) * 2021-10-29 2022-01-21 重庆长安汽车股份有限公司 一种基于以太网的ota安装包部署方法及系统、升级车辆控制器的方法
CN114398055A (zh) * 2021-12-31 2022-04-26 南京理控物联技术有限公司 一种单灯控制器固件远程批量升级装置及升级方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080295087A1 (en) * 2007-05-25 2008-11-27 Samsung Electronics Co., Ltd. Firmware upgrade system and control method thereof
CN102314369A (zh) * 2011-10-09 2012-01-11 杭州先锋电子技术股份有限公司 一种远程在线监控系统中设备自升级方法
CN105278998A (zh) * 2015-11-17 2016-01-27 北京联合众为科技发展有限公司 一种单片机固件升级方法
CN105591824A (zh) * 2016-01-14 2016-05-18 杭州赫智电子科技有限公司 一种固件升级的方法、系统
CN106648669A (zh) * 2016-12-26 2017-05-10 广东芬尼克兹节能设备有限公司 产品设备远程固件升级方法及系统
EP3249524A1 (en) * 2016-05-25 2017-11-29 Beijing Xiaomi Mobile Software Co., Ltd. Method and device for upgrading a zigbee device
CN107608701A (zh) * 2017-10-20 2018-01-19 深圳市道通科技股份有限公司 一种升级固件的方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080295087A1 (en) * 2007-05-25 2008-11-27 Samsung Electronics Co., Ltd. Firmware upgrade system and control method thereof
CN102314369A (zh) * 2011-10-09 2012-01-11 杭州先锋电子技术股份有限公司 一种远程在线监控系统中设备自升级方法
CN105278998A (zh) * 2015-11-17 2016-01-27 北京联合众为科技发展有限公司 一种单片机固件升级方法
CN105591824A (zh) * 2016-01-14 2016-05-18 杭州赫智电子科技有限公司 一种固件升级的方法、系统
EP3249524A1 (en) * 2016-05-25 2017-11-29 Beijing Xiaomi Mobile Software Co., Ltd. Method and device for upgrading a zigbee device
CN106648669A (zh) * 2016-12-26 2017-05-10 广东芬尼克兹节能设备有限公司 产品设备远程固件升级方法及系统
CN107608701A (zh) * 2017-10-20 2018-01-19 深圳市道通科技股份有限公司 一种升级固件的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
冯光升等: "《计算机网络原理与技术》", 31 December 2017, 哈尔滨:哈尔滨工程大学出版社, pages: 227 - 230 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984285A (zh) * 2020-07-10 2020-11-24 星展测控科技股份有限公司 动中通设备的软件升级的方法、动中通设备和服务器
CN112181455A (zh) * 2020-09-24 2021-01-05 深圳数联天下智能科技有限公司 微控制器的在线升级方法、微控制器及存储介质
CN112181455B (zh) * 2020-09-24 2024-04-26 深圳数联天下智能科技有限公司 微控制器的在线升级方法、微控制器及存储介质
CN112181471A (zh) * 2020-10-16 2021-01-05 北京紫光展锐通信技术有限公司 差分升级方法及装置、存储介质、计算机设备
CN112286556A (zh) * 2020-10-30 2021-01-29 芯讯通无线科技(上海)有限公司 通信设备及其mcu的远程升级方法
CN112612492A (zh) * 2020-12-18 2021-04-06 百望股份有限公司 企业发票软件系统远程升级的方法
CN113204366A (zh) * 2021-06-02 2021-08-03 上海酒贝乐信息技术有限公司 一种智能售酒机系统的远程升级方法
CN113918202A (zh) * 2021-09-16 2022-01-11 海南云智联科技有限公司 一种支持iap功能的单片机远程升级固件的方法与设备
CN113961212A (zh) * 2021-10-29 2022-01-21 重庆长安汽车股份有限公司 一种基于以太网的ota安装包部署方法及系统、升级车辆控制器的方法
CN113961212B (zh) * 2021-10-29 2024-05-10 重庆长安汽车股份有限公司 一种基于以太网的ota安装包部署方法及系统、升级车辆控制器的方法
CN114398055A (zh) * 2021-12-31 2022-04-26 南京理控物联技术有限公司 一种单灯控制器固件远程批量升级装置及升级方法
CN114398055B (zh) * 2021-12-31 2023-11-03 南京理控物联技术有限公司 一种单灯控制器固件远程批量升级装置及升级方法

Similar Documents

Publication Publication Date Title
CN110633097A (zh) 一种单片机的ota升级方法及装置
CN106569847B (zh) 一种用于车载系统基于移动网络实现iap远程升级的方法
CN106250192B (zh) 上位机的软件升级方法及系统
JP5989807B2 (ja) ソフトウェアのインストール方法、デバイスおよびシステム
CN105373410B (zh) 基站软件差分升级方法及其装置
KR101517286B1 (ko) 보안 요소를 위한 운영체제 업데이트
EP3179701B1 (en) File upload and download methods and associated server
US7047448B2 (en) Software self-repair toolkit for electronic devices
KR101299099B1 (ko) 임베디드 시스템에서 최적화된 가상화 모듈을 관리하는 장치 및 방법
EP2454679B1 (en) Management of an instant message session
CN111240713A (zh) 一种用电检测远程断点续传的方法
US20090158383A1 (en) System and Method for Upgrading a Multiprocessor Set-Top Box Device with a Monolithilic Firmware Image
CN111538516A (zh) 服务器电源固件升级方法、装置、设备及可读存储介质
US9430638B2 (en) Authentication method, authentication apparatus and authentication device
JP5676823B2 (ja) データカードを更新する方法、パーソナルコンピュータ、およびデータカード
CN115879111A (zh) 一种安全启动的方法、装置和系统
KR20130018397A (ko) 원격 소스로부터의 명령을 수행하는 시스템 및 방법
CN114268614A (zh) 一种设备固件升级方法、装置及系统
JP3944216B2 (ja) 認証装置、携帯端末、及び、認証方法
CN116466986A (zh) 储能系统的设备软件升级方法、装置、通讯模块以及介质
US10979287B2 (en) Method and apparatus for receiving a solution when configuration function verification fails in a terminal
CN114780122A (zh) 嵌入式设备固件更新方法以及嵌入式设备
WO2015127758A1 (zh) 备份文件的数据重传方法及装置、系统
CN113692065A (zh) 一种固件升级方法和电池管理系统
CN114579166A (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