单片机程序升级方法及装置制造方法及图纸

技术编号:12071509 阅读:68 留言:0更新日期:2015-09-18 04:38
本发明专利技术涉及电子技术领域,尤其涉及一种单片机升级方法及装置,单片机升级方法预先在单片机的用户程序代码区内设置一个只读存储区,用于存储单片机的默认程序;首先对单片机内分区的用户程序进行校验,当所有分区的用户程序都校验失败时,运行单片机的默认程序,使单片机退回到出厂模式,从而恢复可读写存储区内的用户程序,使单片机回退到升级之前的初始状态。使得在恢复所述用户程序之后,能够继续对单片机进行升级,提高了整个分布式系统的安全性及可靠性。而且,当对用户程序校验成功且单片机的用户程序允许升级时,接收上位机通过广播方式下发的目标版本号对应的用户程序,实现多节点同时升级,提高了升级效率。

【技术实现步骤摘要】

本专利技术涉及电子
,特别是涉及一种单片机程序升级方法及装置
技术介绍
IAP (in-applicat1n programming,应用编程)技术是指在用户程序运行过程中进行编程。IAP技术是从结构上将单片机内的Flash存储器内存储用户程序的存储空间划分为两个存储区,当运行一个存储区域内存储的用户程序时,可以对另一个存储区域内存储的用户程序进行重新编程,然后,再运行重新编程后的存储体上的用户程序。现有大多数的IAP升级方案都是针对单个节点(一个节点即一个单片机)设计的,对于分布式系统而言,存在多个单片机节点,如果采用单个节点逐个升级的方案,多个节点程序升级所需时间等于各个节点升级时间的总和,因此升级效率很低。
技术实现思路
本专利技术实施例中提供了一种单片机程序升级方法及装置,以解决现有技术中的多节点升级效率低的问题。为了解决上述技术问题,本专利技术实施例公开了如下技术方案:第一方面,本专利技术提供一种单片机程序升级方法,应用于多节点分布式系统中的单片机,预先在所述单片机的程序代码区内设置至少三个分区,其中一个分区为只读存储区用于存储单片机的默认程序,剩余分区为可读写存储区,用于存储用户程序,所述方法包括:校验指定分区内的用户程序是否能够运行;当所述指定分区内的所述用户程序校验失败时,将下一个分区作为指定分区,并返回执行检验指定分区内的的用户程序是否能够运行的步骤,直到全部分区的用户程序都校验失败时,进入存储单片机的默认程序的分区,并运行所述单片机的默认程序;当所述指定分区内的用户程序校验成功时,接收上位机通过广播方式下发的程序升级命令,所述程序升级命令携带所述用户程序的目标版本号;根据所述目标版本号判断所述用户程序是否允许升级;当确定所述用户程序允许升级时,接收上位机通过广播方式下发的所述目标版本号对应的用户程序;校验所述目标版本号对应的用户程序是否能够运行,校验成功后将所述用户程序更新为所述目标版本号对应的用户程序。优选地,在校验指定分区内的用户程序是否能够运行之前,所述方法还包括:记录所述单片机的上电复位次数;判断所述上电复位次数是否超过预设次数,当所述上电复位次数超过预设次数时,进入存储单片机的默认程序的分区,并运行所述单片机的默认程序;当所述上电复位次数未超过所述预设次数时,执行校验指定分区内的所述用户程序是否能够运行的步骤。优选地,在所述执行校验指定分区内的用户程序是否能够运行的步骤之前,所述方法还包括:获取所述单片机内存储的全部用户程序中最新版本号的用户程序所在分区的分区识别号,并将所述分区识别号对应的分区作为所述指定分区。优选地,所述对所述目标版本号对应的用户程序进行校验,包括:计算所述目标版本号对应的用户程序的第一整体校验值;接收上位机下发的升级结束命令,所述升级结束命令携带所述目标版本号对应的用户程序的第二整体校验值;判断所述第一整体校验值与所述第二整体校验值是否相同,当所述第一整体校验值与所述第二整体校验值相同时,确定所述目标版本号对应的用户程序校验成功。优选地,在将所述用户程序更新为所述目标版本号对应的用户程序之后,还包括:所述单片机在预设时长内与所述上位机进行握手检测,当握手成功时,所述单片机将可读写的分区内存储的用户程序的最新版本号上传给所述上位机,所述最新版本号用于使上位机判断所述最新版本号与所述目标版本号是否相同,得到验证结果;当所述单片机接收到表明所述用户程序升级成功的验证结果时,修改所述分区的程序认证标识,修改后的所述程序认证标识表明所述用户程序能够运行;当所述单片机与所述上位机握手失败时,尝试下一次握手检测,直到所述单片机与所述上位机握手失败的次数达到预设值,删除所述最新版本号的用户程序。第二方面本专利技术提供一种单片机程序升级方法,应用于多节点分布式系统中的上位机,所述方法包括:上位机检测到各个单片机上电后,通过广播方式向各个所述单片机下发程序升级命令,所述程序升级命令携带所述用户程序的目标版本号,所述目标版本号用于使所述单片机判断是否允许用户程序升级;当所述上位机接收到所述单片机发送的允许所述用户程序升级的判断结果时,所述上位机通过广播方式向各个所述单片机下发所述目标版本号对应的用户程序,其中,所述上位机的广播次数大于一次;所述上位机向各个所述单片机下发包含目标版本号的升级结束命令,所述升级结束命令用于使各个所述单片机对所述目标版本号对应的用户程序进行校验,并在校验成功后更新所述用户程序;所述上位机验证各个所述单片机的用户程序升级是否成功,如果验证成功,向单片机下发升级成功的验证结果。优选地,所述上位机验证各个所述单片机的用户程序升级是否成功,如果验证成功,向单片机下发升级成功的验证结果,包括:所述上位机在预设时长内与所述单片机进行握手检测;当握手成功时,所述上位机接收单片机上传的单片机内存储的用户程序的最新版本号;所述上位机判断所述最新版本号与所述目标版本号是否相同;当所述最新版本号与所述目标版本号相同时,向单片机下发升级成功的验证结果,所述升级成功的验证结果用于使所述单片机修改所述用户程序对应的程序认证标识,修改后的所述程序认证标识表明所述用户程序能够运行;当握手失败时,返回执行所述上位机在预设时长内与所述单片机进行握手检测,直到握手失败的次数达到预设值。第三方面,本专利技术提供一种单片机程序升级装置,应用于多节点分布式系统中的单片机,预先在所述单片机的程序代码区内设置至少三个分区,其中一个分区为只读存储区,用于存储所述单片机的默认程序;剩余分区为可读写存储区,用于存储用户程序;所述装置包括:第一校验单元,用于校验指定分区内的用户程序是否能够运行,当所述指定分区内的所述用户程序校验失败时,将下一个分区作为指定分区,并执行检验指定分区内的的用户程序是否能够运行;第一默认程序执行单元,用于当所述单片机内的全部用户程序都校验失败时,进入存储单片机的默认程序的分区,并运行所述单片机的默认程序;第一接收单元,用于当所述指定分区的用户程序校验成功时,接收上位机通过广播方式下发的程序升级命令,所述程序升级命令携带所述用户程序的目标版本号;第一判断单元,用于根据所述目标版本号判断所述用户程序是否允许升级;第二接收单元,用于当确定所述用户程序允许升级时,接收上位机通过广播方式下发的所述目标版本号对应的用户程序;第二校验单元,用于对所述目标版本号对应的用户程序进行校验;更新单元,用于当所述目标版本号对应的用户程序校验成功后,将所述用户程序更新为所述目标版本号对应的用户程序。优选地,所述装置还包括:上电次数记录单元,用于记录所述单片机的上电复位次数;第二判断单元,用于判断所述上电复位次数是否超过预设次数,当所述上电复位次数未超过预设次数时,控制所述第一校验单元执行校验指定分区内的用户程序是否能够运行;第二默认程序执行单元,用于当所述上电复位次数超过预设次数时,进入存储单片机的默认程序的分区,并运行所述单片机的默认程序。优选地,所述装置还包括:第一获取单元,用于获取所述单片机内存储的全部用户程序中最新版本号的用户程序所在分区的分区识别号,并将所述分区识别号对应的分区作为所述指定分区。优选地,所述装置还包括:握手检测单元,用于在预设时长内与所述上位机进行握手检测,当握手本文档来自技高网...

【技术保护点】
一种单片机程序升级方法,其特征在于,应用于多节点分布式系统中的单片机,预先在所述单片机的程序代码区内设置至少三个分区,其中一个分区为只读存储区,用于存储单片机的默认程序,剩余分区为可读写存储区,用于存储用户程序,所述方法包括:校验指定分区内的用户程序是否能够运行;当所述指定分区内的所述用户程序校验失败时,将下一个分区作为指定分区,并返回执行检验指定分区内的的用户程序是否能够运行的步骤,直到全部分区的用户程序都校验失败时,进入存储单片机的默认程序的分区,并运行所述单片机的默认程序;当所述指定分区内的用户程序校验成功时,接收上位机通过广播方式下发的程序升级命令,所述程序升级命令携带所述用户程序的目标版本号;根据所述目标版本号判断所述用户程序是否允许升级;当确定所述用户程序允许升级时,接收上位机通过广播方式下发的所述目标版本号对应的用户程序;校验所述目标版本号对应的用户程序是否能够运行,校验成功后将所述用户程序更新为所述目标版本号对应的用户程序。

【技术特征摘要】

【专利技术属性】
技术研发人员:邵起明王建刚
申请(专利权)人:奇点新源国际技术开发北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1