一种单片机在线升级方法和系统技术方案

技术编号:20160095 阅读:36 留言:0更新日期:2019-01-19 00:12
本发明专利技术涉及单片机技术领域,特别涉及一种单片机在线升级方法和系统,其中方法包括:单片机接收到升级开始命令后初始化升级变量,并向上位机升级软件回复当前运行区域,以便上位机升级软件根据当前运行区域决定生成需要传送的升级Bin文件;单片机接收升级Bin文件,并将升级Bin文件存储在单片机当前未运行区域;单片机接收升级跳转命令后关闭中断,并将升级程序的中断向量区复制到单片机的中断向量区,软重启后运行新的程序,完成升级。本发明专利技术将单片机的FLASH分为中断向量区、应用程序A区和应用程序B区,中断向量区占用字节小,升级时只需复制中断向量区,节约FLASH空间和程序搬移时间;同时还可将升级Bin文件进行区域转换,在不中断业务情况下实现在线升级。

【技术实现步骤摘要】
一种单片机在线升级方法和系统
本专利技术涉及单片机
,特别涉及一种单片机在线升级方法和系统。
技术介绍
当前,市场上的电子产品越来越广泛地采用单片机。应用程序在单片机上运行来完成产品各种各样的功能,通常情况下,电子产品销售到客户手中后,厂家要对电子产品进行维护与升级,这就需要对CPU内的软件在客户现场就能进行下载升级,并且尽量不影响产品的正常工作。目前单片机的升级方式主要有两种:一种是将单片机的FLASH分为应用程序区和升级引导区,参考图1中左图,通过升级引导区给应用程序区升级;这种升级方式最大的问题是不能支持不中断业务,即升级的时候必须要在升级引导区进行。另一种升级方式是将单片机的FLASH分为应用程序区、升级备份区和升级引导区,参考图1中右图;这种升级方式虽然可以支持不中断业务的在线升级,但是,升级引导区占用较多的FLASH,而且,需将备用程序从升级备份区全部搬移到应用程序区,拷贝内容多,会花费较多的时间,造成时间浪费。鉴于此,克服上述现有技术所存在的缺陷是本
亟待解决的问题。
技术实现思路
本专利技术需要解决的技术问题是:传统升级方式中将单片机的FLASH分为应用程序区、升级备份区和升级引导区,升级引导区占用较多的FLASH,而且需将备用程序全部搬移到应用程序区,拷贝内容多,造成时间浪费。本专利技术通过如下技术方案达到上述目的:第一方面,本专利技术提供了一种单片机在线升级方法,将单片机的FLASH分为中断向量区、应用程序A区和应用程序B区,其中,所述中断向量区为所述应用程序A区和所述应用程序B区的公用区域,所述方法包括:单片机接收到升级开始命令后初始化升级变量,并向上位机升级软件回复当前运行的应用程序区域,以便上位机升级软件根据单片机当前运行区域来决定生成需要传送的升级Bin文件;单片机接收由上位机升级软件传送来的升级Bin文件,并将所述升级Bin文件存储在单片机FLASH当前未运行的应用程序区域;单片机接收升级跳转命令后关闭中断,并将升级程序的中断向量区复制到单片机的中断向量区,将单片机软重启并运行新的程序,完成升级。优选的,所述上位机升级软件根据单片机当前运行区域来决定需要传送的升级Bin文件,具体为:根据单片机回复的当前运行的应用程序区域,上位机升级软件判断升级程序是否与单片机当前运行区域同区,如果不同区,则直接将当前的升级Bin文件传送给单片机;如果同区,则上位机升级软件将当前的升级Bin文件转换成另一个区升级Bin文件,再将转换后的升级Bin文件传送给单片机。优选的,所述上位机升级软件将当前的升级Bin文件转换成另一个区升级Bin文件,具体为:根据转换的区域计算地址偏移量;读取当前的升级Bin文件的一个字节,通过查表获得对应指令包含的字节数N,并分析指令是否与地址有关;如果指令与地址有关,则将指令对应的地址加上或者减去一个地址偏移量,生成新的地址并替换原地址字节;如果指令与地址无关,则直接将N个字节复制到新的Bin文件中去。优选的,所述单片机接收由上位机升级软件传送来的升级Bin文件,并将所述升级Bin文件存储在单片机FLASH当前未运行的应用程序区域,具体为:单片机接收到由上位机升级软件传送来的升级Bin文件的数据包,计算并判断所述数据包的校验值是否正确,如果正确,将所述数据包写入单片机FLASH当前未运行的应用程序区;其中,如果是第一个升级Bin文件数据包,则先判断升级程序的区域是否正确,在正确的前提下再计算并判断所述数据包的校验值是否正确。优选的,在所述单片机接收升级开始命令之前,所述方法还包括:将编译器生成的Hex文件导入上位机升级软件,上位机升级软件将Hex文件转换成升级所需的Bin文件。优选的,所述升级Bin文件由中断向量区和程序代码区组成,所述升级Bin文件的中断向量区内设有文件信息区,用于存储所述升级Bin文件的文件长度和校验值;所述升级Bin文件的程序代码区内设有文件识别区,用于判断所述升级Bin文件是否为需要的升级文件。优选的,对于所述应用程序A区和所述应用程序B区,所述升级Bin文件的文件识别区位于固定地址,具体为:对于两个应用程序区域的升级Bin文件,文件识别区的地址差值与两个应用程序区域间的地址偏移量一致,且文件识别区的起始地址与各自应用程序区域的起始地址间的差值也一致。优选的,在所述单片机接收升级跳转命令后关闭中断之前,所述方法还包括:单片机接收升级校验命令,并对接收到的升级Bin文件进行校验,进而将升级校验结果回复给上位机升级软件;其中,所述升级Bin文件的校验具体为:分别对升级Bin文件的文件识别区、文件长度以及写入FLASH应用程序的校验值三者进行校验;如果三者均校验正确,则升级校验成功;如果有任一项校验错误,则升级校验失败。优选的,所述将单片机软重启并运行新的程序之后,单片机向上位机升级软件上报当前运行的应用程序区域,上位机升级软件根据上报的当前运行区域,判断升级是否成功。第二方面,本专利技术还提供了一种单片机在线升级系统,用于实现上述第一方面所述的单片机在线升级方法,包括单片机1、上位机升级软件2和通信接口3,所述单片机1的FLASH分为中断向量区、应用程序A区和应用程序B区,其中,所述中断向量区为所述应用程序A区和所述应用程序B区的公用区域;所述上位机升级软件2用于根据所述单片机1上报的运行区域,将同区的升级Bin文件转换生成另一个区的有效升级Bin文件,并完成在线升级;所述通信接口3用于实现所述单片机1与所述上位机升级软件2之间的通信连接。本专利技术的有益效果是:本专利技术提供的一种单片机在线升级方法和系统中,将单片机的FLASH分为中断向量区、应用程序A区和应用程序B区,中断向量区占用字节比传统的升级引导区小很多,升级时将升级程序的中断向量区复制到单片机的中断向量区,由于只需拷贝中断向量区,大大节约了FLASH和程序搬移时间;同时,上位机升级软件还可以根据单片机上报的当前运行区域,将生成的升级Bin文件转换成另一个区的有效升级Bin文件,在不中断业务的情况下顺利实现在线升级。【附图说明】为了更清楚地说明本专利技术实施例的技术方案,下面将对本专利技术实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为传统方案中的两种单片机FLASH分区示意图;图2为本专利技术实施例提供的一种单片机FLASH分区示意图;图3为本专利技术实施例提供的单片机应用程序A区及应用程序B区的代码分布示意图;图4为本专利技术实施例提供的一种单片机在线升级方法的流程示意图;图5为本专利技术实施例提供的升级Bin文件的示意图;图6为本专利技术实施例提供的升级完成后单片机的代码分布示意图;图7为本专利技术实施例提供的生成应用程序Bin文件的流程图;图8为本专利技术实施例提供的将Bin文件转换成另一区应用程序Bin文件的流程图;图9为本专利技术实施例提供的单片机接收升级文件的流程图;图10为本专利技术实施例提供的单片机校验升级文件的流程图;图11为本专利技术实施例提供的一种单片机在线升级方法的完整流程图;图12为本专利技术实施例提供的一种单片机在线升级系统的结构示意图。【具体实施方式】为了使本本文档来自技高网...

【技术保护点】
1.一种单片机在线升级方法,其特征在于,将单片机的FLASH分为中断向量区、应用程序A区和应用程序B区,其中,所述中断向量区为所述应用程序A区和所述应用程序B区的公用区域,所述方法包括:单片机接收到升级开始命令后初始化升级变量,并向上位机升级软件回复当前运行的应用程序区域,以便上位机升级软件根据单片机当前运行区域来决定生成需要传送的升级Bin文件;单片机接收由上位机升级软件传送来的升级Bin文件,并将所述升级Bin文件存储在单片机FLASH当前未运行的应用程序区域;单片机接收升级跳转命令后关闭中断,并将升级程序的中断向量区复制到单片机的中断向量区,单片机软重启后运行新的程序,完成升级。

【技术特征摘要】
1.一种单片机在线升级方法,其特征在于,将单片机的FLASH分为中断向量区、应用程序A区和应用程序B区,其中,所述中断向量区为所述应用程序A区和所述应用程序B区的公用区域,所述方法包括:单片机接收到升级开始命令后初始化升级变量,并向上位机升级软件回复当前运行的应用程序区域,以便上位机升级软件根据单片机当前运行区域来决定生成需要传送的升级Bin文件;单片机接收由上位机升级软件传送来的升级Bin文件,并将所述升级Bin文件存储在单片机FLASH当前未运行的应用程序区域;单片机接收升级跳转命令后关闭中断,并将升级程序的中断向量区复制到单片机的中断向量区,单片机软重启后运行新的程序,完成升级。2.根据权利要求1所述的单片机在线升级方法,其特征在于,所述上位机升级软件根据单片机当前运行区域来决定生成需要传送的升级Bin文件,具体为:根据单片机回复的当前运行的应用程序区域,上位机升级软件判断升级程序是否与单片机当前运行区域同区,如果不同区,则直接将当前的升级Bin文件传送给单片机;如果同区,则上位机升级软件将当前的升级Bin文件转换生成另一个区升级Bin文件,再将转换后的升级Bin文件传送给单片机。3.根据权利要求2所述的单片机在线升级方法,其特征在于,所述上位机升级软件将当前的升级Bin文件转换成另一个区升级Bin文件,具体为:根据转换的区域计算地址偏移量;读取当前的升级Bin文件的一个字节,通过查表获得对应指令包含的字节数N,并分析指令是否与地址有关;如果指令与地址有关,则将指令对应的地址加上或者减去一个地址偏移量,生成新的地址并替换原地址字节;如果指令与地址无关,则直接将N个字节复制到新的Bin文件中去。4.根据权利要求1所述的单片机在线升级方法,其特征在于,所述单片机接收由上位机升级软件传送来的升级Bin文件,并将所述升级Bin文件存储在单片机FLASH当前未运行的应用程序区域,具体为:单片机接收到由上位机升级软件传送来的升级Bin文件的数据包,计算并判断所述数据包的校验值是否正确,如果正确,将所述数据包写入单片机FLASH当前未运行的应用程序区;其中,如果是第一个升级Bin文件数据包,则先判断升级程序的区域是否正确,在正确的前提下再计算并判断所述数据包的校验值是否...

【专利技术属性】
技术研发人员:陈建宇胡毅张博
申请(专利权)人:武汉光迅科技股份有限公司
类型:发明
国别省市:湖北,42

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

1