CN107957881A - 单片机程序更新方法、系统以及计算机可读存储介质 - Google Patents
单片机程序更新方法、系统以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN107957881A CN107957881A CN201711280906.3A CN201711280906A CN107957881A CN 107957881 A CN107957881 A CN 107957881A CN 201711280906 A CN201711280906 A CN 201711280906A CN 107957881 A CN107957881 A CN 107957881A
- Authority
- CN
- China
- Prior art keywords
- program
- microcontroller
- scm
- startup program
- host computer
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种单片机程序更新方法、系统以及计算机可读存储介质,该方法包括步骤:当通过单片机应用程序接收到上位机发送的跳转指令后,根据跳转指令写单片机程序闪存地址对应的状态值,并跳转到单片机启动程序中,由单片机启动程序在接收到上位机发送的更新指令后,通过状态值检测是否需要更新单片机程序;若确定需要更新单片机程序,则由单片机启动程序发送提示信息给上位机,以供上位机在接收到提示信息后,发送更新数据包给单片机启动程序;当单片机启动程序接收到更新数据包,且检验更新数据包正确后,则由单片机启动程序根据更新数据包更新单片机程序。本发明简化了单片机程序更新流程,提高了单片机程序的更新效率。
Description
技术领域
本发明涉及单片机技术领域,尤其涉及一种单片机程序更新方法、系统以及计算机可读存储介质。
背景技术
如今使用单片机作为控制中心来开发设备的人越来越多,而其中使用stm32单片机的就占了大多数。这是因为stm32的开发库功能强大,极大缩短了开发周期。但是无论是设备开发过程中,还是在设备使用过程中,在更新单片机程序时,需要一系列的接线操作和设置stm32的管脚BOOT0位,有些开发好的产品因为放置在某些设备的内部,从而导致对应的单片机程序更新困难,以及更新流程繁琐。
发明内容
本发明的主要目的在于提供一种单片机程序更新方法、系统以及计算机可读存储介质,旨在解决现有的单片机程序更新困难,以及更新流程繁琐的技术问题。
为实现上述目的,本发明提供一种单片机程序更新方法,所述单片机程序更新方法包括步骤:
当通过单片机应用程序接收到上位机发送的跳转指令后,根据所述跳转指令写单片机程序闪存地址对应的状态值,并跳转到单片机启动程序中,由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序;
若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,发送更新数据包给所述单片机启动程序;
当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序。
优选地,所述若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,发送更新数据包给所述单片机启动程序的步骤包括:
若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,根据所述提示信息将更新数据包拆分成预设长度的子数据包,将所述子数据包发送给所述单片机启动程序;
所述当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序的步骤包括:
当所述单片机启动程序接收到所述子数据包,且检验所述子数据包正确后,则由所述单片机启动程序根据所述子数据包更新所述单片机程序。
优选地,所述当所述单片机启动程序接收到所述子数据包,且检验所述子数据包正确后,则由所述单片机启动程序根据所述子数据包更新所述单片机程序的步骤包括:
当所述单片机启动程序接收到第一子数据包后,由所述单片机启动程序计算所述第一子数据包的校验码;
将计算所得的校验码与所述第一子数据包中末尾的校验码进行对比;
若计算所得的校验码与所述第一子数据包中末尾的校验码相同,则确认所述第一子数据包正确,并返回第一响应消息给所述上位机;
当所述上位机接收到所述第一响应消息后,由所述上位机发送第二子数据包给所述单片机启动程序;
当所述单片机启动程序接收到所有的子数据包后,由所述单片机启动程序根据所述子数据包更新所述单片机程序。
优选地,所述将计算所得的校验码与所述第一子数据包中末尾的校验码进行对比的步骤之后,还包括:
若计算所得的校验码与所述第一子数据包中末尾的校验码不相同,则返回第二响应消息给所述上位机,以供所述上位机根据所述第二响应消息重新发送所述第一子数据包给所述单片机启动程序。
优选地,所述若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,根据所述提示信息将更新数据包拆分成预设长度的子数据包,将所述子数据包发送给所述单片机启动程序的步骤之后,还包括:
若所述上位机在预设时间内未接收到所述单片机启动程序接收到所述子数据包后发送的响应消息,则由所述上位机重新发送所述子数据包给所述单片机启动程序。
优选地,所述当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序的步骤之后,还包括:
当成功更新所述单片机程序后,由所述单片机启动程序擦除所写入的所述闪存地址对应的状态值。
优选地,所述由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序的步骤包括:
当所述单片机启动程序接收到所述上位机发送的更新指令后,由所述单片机启动程序检测上一次更新所述单片机程序的更新操作是否执行成功;
若所述更新操作执行成功,则通过所述状态值检测是否需要更新所述单片机程序。
优选地,所述单片机应用程序包括hex文件和bin文件,所述单片机启动程序包括hex文件。
此外,为实现上述目的,本发明还提供一种单片机程序更新系统,所述单片机程序更新系统包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的单片机程序更新程序,所述单片机程序更新程序被所述处理器执行时实现如上所述的单片机程序更新方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有单片机程序更新程序,所述单片机程序更新程序被处理器执行时实现如上所述的单片机程序更新方法的步骤。
本发明通过当通过单片机应用程序接收到上位机发送的跳转指令后,根据所述跳转指令写单片机程序闪存地址对应的状态值,并跳转到单片机启动程序中,由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序;若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,发送更新数据包给所述单片机启动程序;当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序。将单片机程序分为单片机应用程序和单片机启动程序,以实现更新数据包的无线下载,实现了在更新单片机程序过程中,不需要接线操作和设置stm32的管脚BOOT0位,实现了无线更新单片机程序,简化了单片机程序更新流程,提高了单片机程序的更新效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的结构示意图;
图2为本发明单片机程序更新方法第一实施例的流程示意图;
图3为本发明实施例上位机的一种示意图;
图4为本发明单片机程序更新方法第二实施例的流程示意图;
图5为本发明实施例中当所述单片机启动程序接收到所述子数据包,且检验所述子数据包正确后,则由所述单片机启动程序根据所述子数据包更新所述单片机程序的一种流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的解决方案主要是:当通过单片机应用程序接收到上位机发送的跳转指令后,根据所述跳转指令写单片机程序闪存地址对应的状态值,并跳转到单片机启动程序中,由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序;若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,发送更新数据包给所述单片机启动程序;当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序。以解决现有的单片机程序更新困难,以及更新流程繁琐的问题。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的结构示意图。
本发明实施例终端可以是PC,也可以是智能手机、平板电脑、电子书阅读器、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、便携计算机等具有显示功能的可移动式终端设备。
如图1所示,该单片机程序更新系统可以包括:处理器1001,例如CPU,网络接口1004,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,单片机程序更新系统还可以包括RF(Radio Frequency,射频)电路,传感器、WiFi模块等等。
本领域技术人员可以理解,图1中示出的单片机程序更新系统结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及单片机程序更新程序。其中,操作系统是管理和控制单片机程序更新系统硬件和软件资源的程序,支持单片机程序更新程序以及其它软件或程序的运行。
在图1所示的单片机程序更新系统中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;处理器1001可以用于调用存储器1005中存储的单片机程序更新程序,并执行以下操作:
当通过单片机应用程序接收到上位机发送的跳转指令后,根据所述跳转指令写单片机程序闪存地址对应的状态值,并跳转到单片机启动程序中,由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序;
若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,发送更新数据包给所述单片机启动程序;
当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序。
进一步地,所述若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,发送更新数据包给所述单片机启动程序的步骤包括:
若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,根据所述提示信息将更新数据包拆分成预设长度的子数据包,将所述子数据包发送给所述单片机启动程序;
所述当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序的步骤包括:
当所述单片机启动程序接收到所述子数据包,且检验所述子数据包正确后,则由所述单片机启动程序根据所述子数据包更新所述单片机程序。
进一步地,所述当所述单片机启动程序接收到所述子数据包,且检验所述子数据包正确后,则由所述单片机启动程序根据所述子数据包更新所述单片机程序的步骤包括:
当所述单片机启动程序接收到第一子数据包后,由所述单片机启动程序计算所述第一子数据包的校验码;
将计算所得的校验码与所述第一子数据包中末尾的校验码进行对比;
若计算所得的校验码与所述第一子数据包中末尾的校验码相同,则确认所述第一子数据包正确,并返回第一响应消息给所述上位机;
当所述上位机接收到所述第一响应消息后,由所述上位机发送第二子数据包给所述单片机启动程序;
当所述单片机启动程序接收到所有的子数据包后,由所述单片机启动程序根据所述子数据包更新所述单片机程序。
进一步地,所述将计算所得的校验码与所述第一子数据包中末尾的校验码进行对比的步骤之后,处理器1001还可以用于调用存储器1005中存储的单片机程序更新程序,并执行以下步骤:
若计算所得的校验码与所述第一子数据包中末尾的校验码不相同,则返回第二响应消息给所述上位机,以供所述上位机根据所述第二响应消息重新发送所述第一子数据包给所述单片机启动程序。
进一步地,所述若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,根据所述提示信息将更新数据包拆分成预设长度的子数据包,将所述子数据包发送给所述单片机启动程序的步骤之后,处理器1001还可以用于调用存储器1005中存储的单片机程序更新程序,并执行以下步骤:
若所述上位机在预设时间内未接收到所述单片机启动程序接收到所述子数据包后发送的响应消息,则由所述上位机重新发送所述子数据包给所述单片机启动程序。
进一步地,所述当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序的步骤之后,处理器1001还可以用于调用存储器1005中存储的单片机程序更新程序,并执行以下步骤:
当成功更新所述单片机程序后,由所述单片机启动程序擦除所写入的所述闪存地址对应的状态值。
进一步地,所述由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序的步骤包括:
当所述单片机启动程序接收到所述上位机发送的更新指令后,由所述单片机启动程序检测上一次更新所述单片机程序的更新操作是否执行成功;
若所述更新操作执行成功,则通过所述状态值检测是否需要更新所述单片机程序。
进一步地,所述单片机应用程序包括hex文件和bin文件,所述单片机启动程序包括hex文件。
基于上述的硬件结构,提出单片机程序更新方法的各个实施例。
参照图2,图2为本发明单片机程序更新方法第一实施例的流程示意图。
在本实施例中,提供了单片机程序更新方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中,单片机程序更新方法可选应用于单片机程序更新系统中。
所述单片机程序更新方法包括:
步骤S10,当通过单片机应用程序接收到上位机发送的跳转指令后,根据所述跳转指令写单片机程序闪存地址对应的状态值,并跳转到单片机启动程序中,由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序。
在本发明实施例中,单片机程序更新系统包括单片机应用程序、单片机启动程序和上位机。其中,上位机是指可以直接发出操控命令的计算机。单片机应用程序包括hex文件和bin文件,单片机启动程序包括hex文件。即单片机启动程序和单片机应用程序合并组成hex文件。bin文件是二进制文件,其用途依系统或应用而定。hex文件格式是可以烧写到单片机中,被单片机执行的一种文件格式,生成hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。
当单片机上电后,会跳转到单片机程序的起始位置对应的地址开始执行单片机程序。上位机中存在下载按钮,用户可通过该下载按钮触发跳转指令和更新指令。可以理解的是,也可以在上位机中设置定时任务,定时触发上位机中的下载按钮,触发跳转指令和更新指令。
在通过下载按钮触发跳转指令和更新指令之前,用户需要根据无线设备的类型选择合适的串口和波特率。当上位机侦测到选择串口和波特率的选择指令后,上位机根据选择指令选择对应的串口和波特率。当选择串口后,打开该串口,上位机根据用户选择固件的选择指令选择固件,通过该固件确定单片机程序更新所需的bin文件,以得到更新数据包。在本实施例中,波特率可根据具体情况进行选择,如可选择为115200。具体地,可参照图3。由图3可知,上位机通过其“无效下载器”软件实现单片机程序更新。
当上位机触发跳转指令后,将跳转指令发送给单片机应用程序。当单片机应用程序接收到该跳转指令之后,单片机应用程序根据该跳转指令更改单片机程序FLASH(闪存)地址对应的状态值。需要说明的是,当FLASH地址对应的状态值为1时,表明单片机程序需要更新,处于待更新状态;否则,表明单片机程序不需要更新,处于已更新状态。因此,当单片机应用程序接收到跳转指令后,将FLASH地址对应的状态值写为1,并通过软复位跳转到单片机启动程序中。当跳转到单片机启动程序后,单片机启动程序会检测是否接收到上位机发送的更新指令。当单片机启动程序接收到上位机发送的更新指令之后,单片机启动程序检测FLASH地址的状态值,根据该状态值确定是否需要更新单片机程序。当单片机启动程序检测到状态值为1时,表明需要更新单片机程序;否则,表明不需要更新单片机程序。需要说明的是,也可以采用其它字符串来表示FLASH地址对应的状态值,在此不做限制。
进一步地,当单片机应用程序接收到跳转指令后,单片机应用程序返回对应的响应消息给上位机,以提示上位机其已接收到跳转指令。
进一步地,所述由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序的步骤包括:
步骤a,当所述单片机启动程序接收到所述上位机发送的更新指令后,由所述单片机启动程序检测上一次更新所述单片机程序的更新操作是否执行成功。
步骤b,若所述更新操作执行成功,则通过所述状态值检测是否需要更新所述单片机程序。
进一步地,当单片机启动程序接收到上位机发送的更新指令后,单片机启动程序检测上一次更新单片机程序的更新操作是否执行成功。若上一次更新单片机程序的更新操作执行成功,单片机启动程序则通过FLASH地址对应的状态值检测是否需要更新单片机程序。若上一次更新单片机程序的更新操作执行失败,单片机应用程序则不会跳转到单片机启动程序中,单片机启动程序不会接收更新指令。
步骤S20,若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,发送更新数据包给所述单片机启动程序。
若确定需要更新单片机程序,单片机启动程序则发送提示信息给上位机。当上位机接收到单片机启动程序发送的提示信息后,上位机根据该提示信息发送更新数据包给单片机启动程序。需要说明的是,更新数据包为bin文件。
进一步地,当确定不需要更新单片机程序后,单片机启动程序则获取单片机应用程序对应的地址,根据该地址跳转至单片机应用程序中,以运行单片机程序。
步骤S30,当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序。
当单片机启动程序接收到上位机发送的更新数据包后,单片机启动程序检验更新数据包是否正确。若更新数据包正确,单片机启动程序则根据更新数据包更新单片机程序。
进一步地,单片机程序更新方法还包括:
步骤c,当成功更新所述单片机程序后,由所述单片机启动程序擦除所写入的所述闪存地址对应的状态值。
进一步地,当成功更新单片机程序后,单片机启动程序擦除所写入的闪存地址对应的状态值,并通过软复位跳转到单片机应用程序中。
本实施例通过当通过单片机应用程序接收到上位机发送的跳转指令后,根据所述跳转指令写单片机程序闪存地址对应的状态值,并跳转到单片机启动程序中,由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序;若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,发送更新数据包给所述单片机启动程序;当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序。将单片机程序分为单片机应用程序和单片机启动程序,以实现更新数据包的无线下载,实现了在更新单片机程序过程中,不需要接线操作和设置stm32的管脚BOOT0位,简化了单片机程序更新流程,实现了无线更新单片机程序,提高了单片机程序的更新效率。
进一步地,提出本发明单片机程序更新方法第二实施例。
所述单片机程序更新方法第二实施例与所述单片机程序更新方法第一实施例的区别在于,参照图4,步骤S20包括:
步骤S21,若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,根据所述提示信息将更新数据包拆分成预设长度的子数据包,将所述子数据包发送给所述单片机启动程序。
当确定需要更新单片机程序后,单片机启动程序发送提示信息给上位机。当上位机接收到提示信息后,根据提示信息将更新数据包拆成预设长度的子数据包,并将拆分后的子数据包发送给单片机启动程序。具体地,预设长度可根据具体需要而设置,如可设置为1KB(Kilobyte,千字节),或者设置为2KB等。可以理解的是,最后一个子数据包的大小等于或者小于预设长度。
步骤S30包括:
步骤S31,当所述单片机启动程序接收到所述子数据包,且检验所述子数据包正确后,则由所述单片机启动程序根据所述子数据包更新所述单片机程序。
当单片机启动程序接收到该子数据包,且检验子数据包正确后,单片机启动程序根据子数据包更新单片机程序。
进一步地,单片机程序更新方法还包括:
步骤d,若所述上位机在预设时间内未接收到所述单片机启动程序接收到所述子数据包后发送的响应消息,则由所述上位机重新发送所述子数据包给所述单片机启动程序。
进一步地,上位机在发送子数据包给单片机启动程序后,上位机检测是否在预设时间接收到单片机启动程序返回的响应消息。当单片机启动程序接收到上位机发送的子数据包后,且检验该子数据包正确后,单片机启动程序会返回响应消息给上位机。其中,预设时间可根据具体需要而设置,如可以设置为3秒、5秒或者8秒等。
若上位机在预设时间内未接收到单片机启动程序返回的响应消息,上位机则重新发送子数据包给单片机启动程序,以供单片机启动程序重新接收子数据包,根据重新接收的子数据包重新下载该单片机程序。
本实施例通过将更新数据包拆分成预设长度的子数据包发送给单片机启动程序,以实现在某一个子数据包出现错误时,重发该出现错误的子数据包即可,不需要重发全部的子数据包。
进一步地,提出本发明单片机程序更新方法第三实施例。
所述单片机程序更新方法第三实施例与所述单片机程序更新方法第二实施例的区别在于,参照图5,步骤S31包括:
步骤S311,当所述单片机启动程序接收到第一子数据包后,由所述单片机启动程序计算所述第一子数据包的校验码。
当上位机将更新数据包拆分成预设长度的子数据包后,上位机先将第一子数据包发送给单片机启动程序。当单片机启动程序接收到第一子数据包后,单片机启动程序根据第一子数据包计算第一子数据包的校验码。需要说明的是,单片机启动程序计算第一子数据包校验码的算法是与上位机预先协商好的,如该算法可为CRC(Cyclic RedundancyCode,循环冗余校验),或者其它可以实现校验功能的算法。
步骤S312,将计算所得的校验码与所述第一子数据包中末尾的校验码进行对比。
步骤S313,若计算所得的校验码与所述第一子数据包中末尾的校验码相同,则确认所述第一子数据包正确,并返回第一响应消息给所述上位机。
当单片机启动程序计算出第一子数据包的检验码后,将计算所得的校验码与第一子数据包末尾的校验码进行对比。若计算所得的校验码与第一子数据包末尾的校验码相同,单片机启动程序则确认第一子数据包正确。当单片机启动程序确认第一子数据包正确后,单片机启动程序生成第一响应消息,并将第一响应消息发送给上位机。需要说明的是,每一个子数据包的末尾都为检验码。
步骤S314,当所述上位机接收到所述第一响应消息后,由所述上位机发送第二子数据包给所述单片机启动程序。
步骤S315,当所述单片机启动程序接收到所有的子数据包后,由所述单片机启动程序根据所述子数据包更新所述单片机程序。
当上位机接收到第一响应消息后,上位机发送第二子数据包给单片机启动程序。当单片机启动程序接收到第二子数据包,且第二子数据包正确后,再次返回响应消息给上位机,以供上位机在接收到响应消息后,发送第三子数据包给单片机启动程序,依此类推,直到单片机启动程序接收到更新数据包对应的所有子数据包。当单片机启动程序接收到所有子数据包后,单片机启动程序根据所接收的所有子数据包更新单片机程序。
进一步地,单片机程序更新方法还包括:
步骤e,若计算所得的校验码与所述第一子数据包中末尾的校验码不相同,则返回第二响应消息给所述上位机,以供所述上位机根据所述第二响应消息重新发送所述第一子数据包给所述单片机启动程序。
进一步地,若计算所得的校验码与第一子数据包中末尾的校验码不相同,单片机启动程序则返回第二响应消息给上位机。当上位机接收到第二响应消息后,上位机根据第二响应消息重新发送第一子数据包给单片机启动程序。
本实施例通过根据在每一个子数据包的末尾设置校验码,以供单片机器启动程序在接收到子数据包后,通过子数据包的末尾设置校验码的检测子数据包在传输过程是否丢失,子数据包是否错误等。提高了单片机程序更新的成功率。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有单片机程序更新程序,所述单片机程序更新程序被处理器执行时实现如下步骤:
当通过单片机应用程序接收到上位机发送的跳转指令后,根据所述跳转指令写单片机程序闪存地址对应的状态值,并跳转到单片机启动程序中,由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序;
若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,发送更新数据包给所述单片机启动程序;
当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序。
进一步地,所述若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,发送更新数据包给所述单片机启动程序的步骤包括:
若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,根据所述提示信息将更新数据包拆分成预设长度的子数据包,将所述子数据包发送给所述单片机启动程序;
所述当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序的步骤包括:
当所述单片机启动程序接收到所述子数据包,且检验所述子数据包正确后,则由所述单片机启动程序根据所述子数据包更新所述单片机程序。
进一步地,所述当所述单片机启动程序接收到所述子数据包,且检验所述子数据包正确后,则由所述单片机启动程序根据所述子数据包更新所述单片机程序的步骤包括:
当所述单片机启动程序接收到第一子数据包后,由所述单片机启动程序计算所述第一子数据包的校验码;
将计算所得的校验码与所述第一子数据包中末尾的校验码进行对比;
若计算所得的校验码与所述第一子数据包中末尾的校验码相同,则确认所述第一子数据包正确,并返回第一响应消息给所述上位机;
当所述上位机接收到所述第一响应消息后,由所述上位机发送第二子数据包给所述单片机启动程序;
当所述单片机启动程序接收到所有的子数据包后,由所述单片机启动程序根据所述子数据包更新所述单片机程序。
进一步地,所述将计算所得的校验码与所述第一子数据包中末尾的校验码进行对比的步骤之后,所述单片机程序更新程序被处理器执行时实现如下步骤:
若计算所得的校验码与所述第一子数据包中末尾的校验码不相同,则返回第二响应消息给所述上位机,以供所述上位机根据所述第二响应消息重新发送所述第一子数据包给所述单片机启动程序。
进一步地,所述若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,根据所述提示信息将更新数据包拆分成预设长度的子数据包,将所述子数据包发送给所述单片机启动程序的步骤之后,所述单片机程序更新程序被处理器执行时实现如下步骤:
若所述上位机在预设时间内未接收到所述单片机启动程序接收到所述子数据包后发送的响应消息,则由所述上位机重新发送所述子数据包给所述单片机启动程序。
进一步地,所述当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序的步骤之后,所述单片机程序更新程序被处理器执行时实现如下步骤:
当成功更新所述单片机程序后,由所述单片机启动程序擦除所写入的所述闪存地址对应的状态值。
进一步地,所述由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序的步骤包括:
当所述单片机启动程序接收到所述上位机发送的更新指令后,由所述单片机启动程序检测上一次更新所述单片机程序的更新操作是否执行成功;
若所述更新操作执行成功,则通过所述状态值检测是否需要更新所述单片机程序。
进一步地,所述单片机应用程序包括hex文件和bin文件,所述单片机启动程序包括hex文件。
本发明计算机可读存储介质具体实施方式与上述单片机程序更新方法各实施例基本相同,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种单片机程序更新方法,其特征在于,所述单片机程序更新方法包括以下步骤:
当通过单片机应用程序接收到上位机发送的跳转指令后,根据所述跳转指令写单片机程序闪存地址对应的状态值,并跳转到单片机启动程序中,由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序;
若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,发送更新数据包给所述单片机启动程序;
当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序。
2.如权利要求1所述的单片机程序更新方法,其特征在于,所述若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,发送更新数据包给所述单片机启动程序的步骤包括:
若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,根据所述提示信息将更新数据包拆分成预设长度的子数据包,将所述子数据包发送给所述单片机启动程序;
所述当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序的步骤包括:
当所述单片机启动程序接收到所述子数据包,且检验所述子数据包正确后,则由所述单片机启动程序根据所述子数据包更新所述单片机程序。
3.如权利要求2所述的单片机程序更新方法,其特征在于,所述当所述单片机启动程序接收到所述子数据包,且检验所述子数据包正确后,则由所述单片机启动程序根据所述子数据包更新所述单片机程序的步骤包括:
当所述单片机启动程序接收到第一子数据包后,由所述单片机启动程序计算所述第一子数据包的校验码;
将计算所得的校验码与所述第一子数据包中末尾的校验码进行对比;
若计算所得的校验码与所述第一子数据包中末尾的校验码相同,则确认所述第一子数据包正确,并返回第一响应消息给所述上位机;
当所述上位机接收到所述第一响应消息后,由所述上位机发送第二子数据包给所述单片机启动程序;
当所述单片机启动程序接收到所有的子数据包后,由所述单片机启动程序根据所述子数据包更新所述单片机程序。
4.如权利要求3所述的单片机程序更新方法,其特征在于,所述将计算所得的校验码与所述第一子数据包中末尾的校验码进行对比的步骤之后,还包括:
若计算所得的校验码与所述第一子数据包中末尾的校验码不相同,则返回第二响应消息给所述上位机,以供所述上位机根据所述第二响应消息重新发送所述第一子数据包给所述单片机启动程序。
5.如权利要求2所述的单片机程序更新方法,其特征在于,所述若确定需要更新所述单片机程序,则由所述单片机启动程序发送提示信息给所述上位机,以供所述上位机在接收到所述提示信息后,根据所述提示信息将更新数据包拆分成预设长度的子数据包,将所述子数据包发送给所述单片机启动程序的步骤之后,还包括:
若所述上位机在预设时间内未接收到所述单片机启动程序接收到所述子数据包后发送的响应消息,则由所述上位机重新发送所述子数据包给所述单片机启动程序。
6.如权利要求1所述的单片机程序更新方法,其特征在于,所述当所述单片机启动程序接收到所述更新数据包,且检验所述更新数据包正确后,则由所述单片机启动程序根据所述更新数据包更新所述单片机程序的步骤之后,还包括:
当成功更新所述单片机程序后,由所述单片机启动程序擦除所写入的所述闪存地址对应的状态值。
7.如权利要求1所述的单片机程序更新方法,其特征在于,所述由所述单片机启动程序在接收到所述上位机发送的更新指令后,通过所述状态值检测是否需要更新所述单片机程序的步骤包括:
当所述单片机启动程序接收到所述上位机发送的更新指令后,由所述单片机启动程序检测上一次更新所述单片机程序的更新操作是否执行成功;
若所述更新操作执行成功,则通过所述状态值检测是否需要更新所述单片机程序。
8.如权利要求1至7任一项所述的单片机程序更新方法,其特征在于,所述单片机应用程序包括hex文件和bin文件,所述单片机启动程序包括hex文件。
9.一种单片机程序更新系统,其特征在于,所述单片机程序更新系统包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的单片机程序更新程序,所述单片机程序更新程序被所述处理器执行时实现如权利要求1至8中任一项所述的单片机程序更新方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有单片机程序更新程序,所述单片机程序更新程序被处理器执行时实如权利要求1至8中任一项所述的单片机程序更新方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711280906.3A CN107957881A (zh) | 2017-12-06 | 2017-12-06 | 单片机程序更新方法、系统以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711280906.3A CN107957881A (zh) | 2017-12-06 | 2017-12-06 | 单片机程序更新方法、系统以及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107957881A true CN107957881A (zh) | 2018-04-24 |
Family
ID=61958237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711280906.3A Pending CN107957881A (zh) | 2017-12-06 | 2017-12-06 | 单片机程序更新方法、系统以及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107957881A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113568629A (zh) * | 2020-04-28 | 2021-10-29 | 中车株洲电力机车研究所有限公司 | 基于can的软件升级方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1564131A (zh) * | 2004-03-29 | 2005-01-12 | 中兴通讯股份有限公司 | 一种实现单片机软件版本更新的方法和装置 |
CN102945174A (zh) * | 2012-11-08 | 2013-02-27 | 大连捷成实业发展有限公司 | 通过接着片外Flash实现单片机程序升级的方法 |
CA2684743C (en) * | 2007-04-20 | 2013-04-09 | Elster Electricity Llc | Over the air microcontroller flash memory updates |
CN106020861A (zh) * | 2016-05-05 | 2016-10-12 | 惠州Tcl移动通信有限公司 | 一种智能手表的fota升级方法及系统 |
-
2017
- 2017-12-06 CN CN201711280906.3A patent/CN107957881A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1564131A (zh) * | 2004-03-29 | 2005-01-12 | 中兴通讯股份有限公司 | 一种实现单片机软件版本更新的方法和装置 |
CA2684743C (en) * | 2007-04-20 | 2013-04-09 | Elster Electricity Llc | Over the air microcontroller flash memory updates |
CN102945174A (zh) * | 2012-11-08 | 2013-02-27 | 大连捷成实业发展有限公司 | 通过接着片外Flash实现单片机程序升级的方法 |
CN106020861A (zh) * | 2016-05-05 | 2016-10-12 | 惠州Tcl移动通信有限公司 | 一种智能手表的fota升级方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113568629A (zh) * | 2020-04-28 | 2021-10-29 | 中车株洲电力机车研究所有限公司 | 基于can的软件升级方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105262627B (zh) | 一种固件升级方法、装置及系统 | |
KR101161083B1 (ko) | 주문형 무선 서비스들에 대한 적응성 스트리밍 | |
CN110597542B (zh) | 软件自动ota升级方法及装置、电子设备 | |
CN103399761B (zh) | 固件烧录方法及其装置 | |
EP1624641A1 (en) | System for downloading contents, and client terminal for downloading contents from contents server | |
CN102004657B (zh) | 一种电子设备及其升级方法 | |
CN109753297A (zh) | 终端待机时软件升级方法、装置及可读存储介质 | |
CN107370804B (zh) | 软件应用处理方法和装置 | |
CN108804118A (zh) | 固件升级方法、设备及存储介质 | |
CN108228230A (zh) | Ufs固件的升级方法、终端及计算机可读存储介质 | |
CN108089873A (zh) | 一种应用组件即时更新的方法及终端 | |
JP3824580B2 (ja) | 移動通信携帯端末及びダウンロードプログラムファイル管理用プログラム | |
CN107908416A (zh) | 单片机固件升级方法、装置及计算机可读存储介质 | |
WO2024078218A1 (zh) | 系统启动方法及电子设备 | |
CN108322540A (zh) | 客制化数据导入方法、终端及计算机可读存储介质 | |
CN112286586B (zh) | 一种插件的配置方法及相关设备 | |
CN111796853A (zh) | 固件升级方法、系统、设备及计算机存储介质 | |
CN109144532A (zh) | 升级方法及装置 | |
CN105095003A (zh) | 一种智能终端的系统软件恢复的方法及装置 | |
CN110580167A (zh) | 一种系统升级方法、智能设备及服务器 | |
CN110213313A (zh) | 一种文件上传的方法、相关装置及系统 | |
RU2006127036A (ru) | Терминал связи и программа для него | |
CN107957881A (zh) | 单片机程序更新方法、系统以及计算机可读存储介质 | |
CN108108173A (zh) | 一种信息处理方法和装置 | |
CN109828770A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180424 |