一种监测单片机升级成功与否的方法与流程
未命名
08-05
阅读:114
评论:0
1.本发明涉及单片机监测领域,尤其涉及一种监测单片机升级成功与否的方法。背景技术:
::2.单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器cpu、随机存储器ram、只读存储器rom、多种i/o口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统。3.目前,在单片机升级方法中一般将单片机flash分为至少两个区:app区与boot区,其中app区运行application程序,boot区运行bootloader程序,若考虑更安全可靠的单片机升级,一般还会分back区,临时备份升级文件的flash区域,在单片机升级过程中,先将升级文件下载保存至flash中后,跳转至boot区运行bootloader程序,在bootloader中一般校验升级文件、校验通过后将升级文件更新至app区、更新完成后跳转至app区运行application程序,在这整个单片机升级过程中,一般会用crc16、md5对升级文件进行校验,以及一些加密算法对升级文件进行保护,来避免一些错误导致的升级失败,假若碰到升级文件本身错误、升级文件更新覆盖app区错误等这类错误时,单片机程序从boot区无法成功跳转至app区运行application,这类错误,目前除了业务流程管理外,并无一种有效的方法对单片机升级过程进行监测以及避开这类错误,使单片机程序不至于“跑飞”。4.单片机升级过程中,可能会出现升级文件本身错误、升级文件更新覆盖app区错误等这类错误,这将导致单片机程序从boot区无法成功跳转至app区运行application,从而导致单片机程序“跑飞”了。5.因此,有必要提供一种监测单片机升级成功与否的方法解决上述技术问题。技术实现要素:6.本发明提供一种监测单片机升级成功与否的方法,解决了单片机升级过程中,可能会出现升级文件本身错误、升级文件更新覆盖app区错误等这类错误,这将导致单片机程序从boot区无法成功跳转至app区运行application,从而导致单片机程序“跑飞”的问题。7.为解决上述技术问题,本发明提供的一种监测单片机升级成功与否的方法,包括以下步骤:8.s1、将单片机通过辅助装置安装在检测装置上进行检测,在检测时将单片机的flash分成五个区:boot区、param区、app区、backup区、oldversion区;9.s2、制作差分压缩包,下载保存至单片机flash的backup区;利用md5对backup区的差分压缩包校验通过后,置位param区的升级标志、清零当前升级次数,然后系统复位进入boot区运行bootloader程序;10.s3、检测param区的当前升级次数是否超限,若未超限再检查param区是否有需要升级的标志,若有,调用差分还原算法与lzma解压算法,将backup区的差分包还原成新版本bin,并写入app区;若没有升级标志,则直接跳转至app区运行application,执行第五步,若当前升级次数已超限,直接拷贝oldversion区旧版本bin数据至app区;11.s4、开启窗口看门狗,param区的当前升级次数加1,程序跳转至app区,运行application;12.s5、在application开始处执行清除升级标志、清零当前升级次数、关闭窗口看门狗以及将新版本bin文件写入oldversion区等功能的程序;13.s6、若窗口看门狗未产生系统复位,单片机运行application正常,由于application中关闭了窗口看门狗,窗口看门狗不再会产生系统复位;14.s7、若窗口看门狗产生了系统复位,则会执行s3。15.优选的,所述s1中的boot区是指bootloader所在的flash区域,一般32kbyte。16.优选的,所述s1中的param区是指存放单片机升级相关的参数,一般为flash的一个扇区。17.优选的,所述s1中的backup区是指下载保存升级文件的flash区域,一般16kbyte以内。18.优选的,所述s1中的app区是指存放旧版本bin文件的flash区,所述oldversion区是指存放旧版本bin文件的flash区。19.优选的,所述s6中的窗口看门狗不再会产生系统复位,表明单片机升级成功。20.优选的,所述s3中当检测param区的当前升级次数已超限,直接拷贝oldversion区旧版本bin数据至app区。21.优选的,所述s4中的的窗口看门狗作用于自动监测单片机的升级过程,并拥有一定的纠错能力,确保单片机成功运行app的application,即避免单片机升级出问题。22.优选的,所述s1中的boot区作用于假若单片机升级出问题,单片机也不会一直卡在boot区的bootloader中,会自动拷贝正确的bin文件,成功跳转至app区运行application。23.优选的,所述s4中的看门狗当前升级次数的超限次数可设置为三次。24.与相关技术相比较,本发明提供的一种监测单片机升级成功与否的方法具有如下有益效果:25.本发明提供一种监测单片机升级成功与否的方法,若单片机发生了升级文件错误或单片机拷贝覆盖app区错误等这类错误,该方法会自动发现该类错误并拷贝oldversion区的旧版本bin文件,确保单片机正常运行application,即,假若单片机升级出问题了,单片机也不会一直卡在boot区的bootloader中,会自动拷贝正确的bin文件,成功跳转至app区运行application。附图说明26.图1为本发明提供的一种监测单片机升级成功与否的方法的第一实施例的结构示意图。具体实施方式27.下面结合附图和实施方式对本发明作进一步说明。28.第一实施例29.请结合参阅图1,其中,图1为本发明提供的一种监测单片机升级成功与否的方法的第一实施例的结构示意图。一种监测单片机升级成功与否的方法,包括以下步骤:30.s1、将单片机通过辅助装置安装在检测装置上进行检测,在检测时将单片机的flash分成五个区:boot区、param区、app区、backup区、oldversion区;31.s2、制作差分压缩包,下载保存至单片机flash的backup区;利用md5对backup区的差分压缩包校验通过后,置位param区的升级标志、清零当前升级次数,然后系统复位进入boot区运行bootloader程序;32.s3、检测param区的当前升级次数是否超限,若未超限再检查param区是否有需要升级的标志,若有,调用差分还原算法与lzma解压算法,将backup区的差分包还原成新版本bin,并写入app区;若没有升级标志,则直接跳转至app区运行application,执行第五步,若当前升级次数已超限,直接拷贝oldversion区旧版本bin数据至app区;33.s4、开启窗口看门狗,param区的当前升级次数加1,程序跳转至app区,运行application;34.s5、在application开始处执行清除升级标志、清零当前升级次数、关闭窗口看门狗以及将新版本bin文件写入oldversion区等功能的程序;35.s6、若窗口看门狗未产生系统复位,单片机运行application正常,由于application中关闭了窗口看门狗,窗口看门狗不再会产生系统复位;36.s7、若窗口看门狗产生了系统复位,则会执行s3。37.所述s1中的boot区是指bootloader所在的flash区域,一般32kbyte。38.所述s1中的param区是指存放单片机升级相关的参数,一般为flash的一个扇区。39.所述s1中的backup区是指下载保存升级文件的flash区域,一般16kbyte以内。40.所述s1中的app区是指存放旧版本bin文件的flash区,所述oldversion区是指存放旧版本bin文件的flash区。41.所述s6中的窗口看门狗不再会产生系统复位,表明单片机升级成功。42.所述s3中当检测param区的当前升级次数已超限,直接拷贝oldversion区旧版本bin数据至app区。43.所述s4中的的窗口看门狗作用于自动监测单片机的升级过程,并拥有一定的纠错能力,确保单片机成功运行app的application,即避免单片机升级出问题。44.所述s1中的boot区作用于假若单片机升级出问题,单片机也不会一直卡在boot区的bootloader中,会自动拷贝正确的bin文件,成功跳转至app区运行application。45.所述s4中的看门狗当前升级次数的超限次数可设置为三次。46.使用窗口看门狗的特性,自动监测单片机的升级过程,并拥有一定的纠错能力,确保单片机成功运行app的application,即避免单片机升级出问题。47.窗口看门狗,一般单片机(如stm32、gd32等)都有这个功能。在设定的上限时间与下限时间内进行喂狗,单片机不会产生系统复位,否则单片机会产生系统复位。此外,窗口看门狗的时钟一般来自于pclk1,欲使用窗口看门狗功能必先使能窗口看门狗的时钟,则关闭窗口看门狗时钟就可使窗口看门狗功能失效。在本提案中,就是利用窗口看门狗可关闭的特性,设置一套逻辑机制,监测单片机的升级过程,避免程序“跑飞”。48.本提案涉及的单片机升级文件与升级过程,建议使用差分压缩包与差分升级,即利用差分算法(colinpercival《differencesofexecutablecode》)将源版本bin文件与目标版本之间的差异的部分提取出来,再用lzma压缩算法制作成差分压缩包,然后在单片机上先用lzma解压算法解压差分压缩包,再通过差分还原算法将差异部分在源版本上进行还原从而升级成目标版本。49.与相关技术相比较,本发明提供的一种监测单片机升级成功与否的方法具有如下有益效果:50.本发明提供一种监测单片机升级成功与否的方法,若单片机发生了升级文件错误或单片机拷贝覆盖app区错误等这类错误,该方法会自动发现该类错误并拷贝oldversion区的旧版本bin文件,确保单片机正常运行application,即,假若单片机升级出问题了,单片机也不会一直卡在boot区的bootloader中,会自动拷贝正确的bin文件,成功跳转至app区运行application。51.以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的
技术领域:
:,均同理包括在本发明的专利保护范围内。当前第1页12当前第1页12
技术特征:
1.一种监测单片机升级成功与否的方法,其特征在于,包括以下步骤:s1、将单片机通过辅助装置安装在检测装置上进行检测,在检测时将单片机的flash分成五个区:boot区、param区、app区、backup区、oldversion区;s2、制作差分压缩包,下载保存至单片机flash的backup区;利用md5对backup区的差分压缩包校验通过后,置位param区的升级标志、清零当前升级次数,然后系统复位进入boot区运行bootloader程序;s3、检测param区的当前升级次数是否超限,若未超限再检查param区是否有需要升级的标志,若有,调用差分还原算法与lzma解压算法,将backup区的差分包还原成新版本bin,并写入app区;若没有升级标志,则直接跳转至app区运行application,执行第五步;s4、开启窗口看门狗,param区的当前升级次数加1,程序跳转至app区,运行application;s5、在application开始处执行清除升级标志、清零当前升级次数、关闭窗口看门狗以及将新版本bin文件写入oldversion区等功能的程序;s6、若窗口看门狗未产生系统复位,单片机运行application正常,由于application中关闭了窗口看门狗,窗口看门狗不再会产生系统复位;s7、若窗口看门狗产生了系统复位,则会执行s3。2.根据权利要求1所述的监测单片机升级成功与否的方法,其特征在于,所述s1中的boot区是指bootloader所在的flash区域,一般32kbyte。3.根据权利要求1所述的监测单片机升级成功与否的方法,其特征在于,所述s1中的param区是指存放单片机升级相关的参数,一般为flash的一个扇区。4.根据权利要求1所述的监测单片机升级成功与否的方法,其特征在于,所述s1中的backup区是指下载保存升级文件的flash区域,一般16kbyte以内。5.根据权利要求1所述的监测单片机升级成功与否的方法,其特征在于,所述s1中的app区是指存放旧版本bin文件的flash区,所述oldversion区是指存放旧版本bin文件的flash区。6.根据权利要求1所述的监测单片机升级成功与否的方法,其特征在于,所述s6中的窗口看门狗不再会产生系统复位,表明单片机升级成功。7.根据权利要求1所述的监测单片机升级成功与否的方法,其特征在于,所述s3中当检测param区的当前升级次数已超限,直接拷贝oldversion区旧版本bin数据至app区。8.根据权利要求1所述的监测单片机升级成功与否的方法,其特征在于,所述s4中的的窗口看门狗作用于自动监测单片机的升级过程,并拥有一定的纠错能力,确保单片机成功运行app的application,即避免单片机升级出问题。9.根据权利要求1所述的监测单片机升级成功与否的方法,其特征在于,所述s1中的boot区作用于假若单片机升级出问题,单片机也不会一直卡在boot区的bootloader中,会自动拷贝正确的bin文件,成功跳转至app区运行application。10.根据权利要求1所述的监测单片机升级成功与否的方法,其特征在于,所述s4中的看门狗当前升级次数的超限次数可设置为三次。
技术总结
本发明提供一种监测单片机升级成功与否的方法,包括以下步骤:将单片机通过辅助装置安装在检测装置上进行检测,在检测时将单片机的flash分成五个区:BOOT区、PARAM区、APP区、BACKUP区、OLDVERSION区,制作差分压缩包,下载保存至单片机flash的BACKUP区;利用MD5对BACKUP区的差分压缩包校验通过后,置位PARAM区的升级标志、清零当前升级次数,然后系统复位进入BOOT区运行bootloader程序。本发明提供的一种监测单片机升级成功与否的方法,若单片机发生了升级文件错误或单片机拷贝覆盖APP区错误等这类错误,该方法会自动发现该类错误并拷贝OLDVERSION区的旧版本bin文件,确保单片机正常运行application,即,假若单片机升级出问题了,单片机也不会一直卡在BOOT区的bootloader中。bootloader中。bootloader中。
技术研发人员:刘民强 张朋 廖家华 吴文凯
受保护的技术使用者:湖南华医电磁医学研究院有限公司
技术研发日:2023.05.17
技术公布日:2023/8/4
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
