一种基于串口通信静默升级单片机固件的方法技术

技术编号:17541369 阅读:100 留言:0更新日期:2018-03-24 18:07
本发明专利技术公开一种基于串口通信静默升级单片机固件的方法,具体为:上位机从服务器下载最新版本固件并传输至对应单片机进行静默升级,所述上位机与所述单片机之间采用串口通信,串口通信中的数据编码组成为:AT Command,head,index,length,data,check,end;其中,AT Command是用来识别数据指令,head是数据编码的固定头标志,index是数据包的序号,length当前数据包的数据长度,data是数据包有效数据,check是数据包校验,end是数据编码的结束标志。本发明专利技术可以有效解决低成本、容量小的单片机升级问题,本申请升级方案,安全、可靠,不需要人为参与,占用单片机容量小,降低成本、且大大提升了Flash的使用空间,避免浪费。

A method to upgrade the firmware of single chip microcomputer based on serial communication silence

【技术实现步骤摘要】
一种基于串口通信静默升级单片机固件的方法
本专利技术涉及一种升级单片机固件的方法,更具体的涉及一种基于串口通信静默升级单片机固件的方法。
技术介绍
当今社会,智能设备普及,物联网火爆全球。为了得到高收益、低成本,选择一款合适的控制芯片是重中之重。因此微型单片机使用越来越广,但是由于单片机Flash等硬件限制,造成很难对单片机固件更新。目前,对单片机固件的升级通常基于IAP(InApplicationProgramming)技术,从结构上将单片机的Flash存储器映射为两个存储体,两个存储体内分别编写两个项目代码,通过运行第一个存储体上的特定程序来对另一存储体进行编程操作,编程完成后跳转到新用户程序开始运行,如果IAP程序被破坏,产品必须返厂才能重新烧写程序,这是很麻烦并且非常耗费时间和金钱的,而且,在单片机固件升级过程中,采用串口通信,串口间是采用bit传输的,数据帧长度为10bit,传输的数据就只能是小数据,因为升级数据包较大,传输困难,很多频率低、容量小的单片机无法适应这种升级方式。
技术实现思路
专利技术目的:本专利技术目的在于针对现有技术的不足,提供一种基于串口通信静默升级单片机固件的方法,可以有效解决低成本、容量小的单片机静默升级问题。技术方案:本专利技术所述一种基于串口通信静默升级单片机固件的方法,具体为:上位机从服务器下载最新版本固件并传输至对应单片机进行静默升级,所述上位机与所述单片机之间采用串口通信,串口通信中的数据编码组成为:ATCommand,head,index,length,data,check,end;其中,ATCommand是用来识别数据指令,head是数据编码的固定头标志,index是数据包的序号,length当前数据包的数据长度,data是数据包有效数据,check是数据包校验,end是数据编码的结束标志。本专利技术技术方案的进一步限定为,所述上位机与所述单片机之间采用的串口通信为全双工模式,波特率为115200,无校验位,无停止位。进一步地,所述上位机与所述单片机之间的数据通信方式为:S1、所述上位机发送大数据包总长度的数据编码,即ATCommand为数据长度指令,所述单片机收到数据长度指令数据编码后,回复收到ACK指令;S2、所述上位机对大数据进行分片,从第一个分片包index=0开始分片发送;S3、所述单片机收到分片数据包,确认无误后保存数据,并回复预期index分片包的indexACK指令,所述预期index为当前index+1;S4、所述上位机收到预期indexACK指令后,根据预期index发送下一个分片包;S5、重复执行步骤S3和S4,直至所有的分片包全部发送完成。进一步地,所述上位机与所述单片机之间的数据通信还包括数据重传机制,具体为:步骤S3中,所述单片机收到分片数据包后,校验此分片包时发现误码,回复的预期index分片包的indexACK指令时,所述预期index为当前index。进一步地,所述单片机的FLASH分为ImageA和ImageB两个区域,所述ImageA区域用来存放串口驱动和用来搬运数据的逻辑固件,占整个FLASH存储容量的1~2%;ImageB区域用来存放单片机固件以及用户数据,占整个FLASH存储容量的98%~99%。进一步地,所述单片机接收到最新版本固件后进行升级的方法为:执行ImageA区域中的用来搬运数据的逻辑固件,将最新版本的固件通过串口通信传输至ImageB区域将ImageB区域中的单片机版本进行升级。有益效果:本专利技术提出一种基于串口通信静默升级单片机固件的方法,建立在串口协议上层,在串口间进行数据传输时,对数据包采用特殊的数据编码,数据编码具有易扩展性,根据需要命令可以随意扩展;数据传输具有可靠性,编码中含有数据长度、校验位,确保数据的正确;同时支持大数据传输,编码中含有序号等,可以通过这种编码规则传输大数据。本专利技术可以有效解决低成本、容量小的单片机升级问题,本申请升级方案,安全、可靠,不需要人为参与,占用单片机容量小,降低成本、且大大提升了Flash的使用空间,避免浪费。附图说明图1为本专利技术提供的一种基于串口通信静默升级单片机固件的方法的流程图;图2为本专利技术提供的一种基于串口通信静默升级单片机固件的方法中单片机的FLASH的区域划分示意图;图3为本专利技术提供的一种基于串口通信静默升级单片机固件的方法中串口通信连接示意图;图4为本专利技术提供的一种基于串口通信静默升级单片机固件的方法中通信的数据编码结构图;图5为本专利技术提供的一种基于串口通信静默升级单片机固件的方法中可靠传输的流程图;图6为本专利技术提供的一种基于串口通信静默升级单片机固件的方法中数据重传机制流程图。具体实施方式下面通过附图对本专利技术技术方案进行详细说明,但是本专利技术的保护范围不局限于所述实施例。实施例1:本专利技术提出单片机静默升级固件,是在发现有升级的固件更新时,静默自助升级固件,不需要人为参与,且保证了当前固件是最新的,本实施例提供一种基于串口通信静默升级单片机固件的方法,具体为:上位机从服务器下载最新版本固件并传输至对应单片机进行静默升级。上位机做为服务器和单片机之间的桥梁,与单片机之间的接口标准采用串口通信,其串口通信连接示意图如图3所示,串口物理引脚有RX,TX,GND.将单片机RX连接主控芯片或上位机TX,单片机TX连接主控芯片或上位机RX,GND互连。单片机串口驱动加载,主控芯片或上位机配置相同的通信参数。这时候单片机和主控芯片或上位机就可以通过串口通信了。串口是一种接口标准。串口通信是一个字符一个字符的传输,每个字符一位一位的传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。本实施例中,上位机与所述单片机之间采用的串口通信为全双工模式,波特率为115200,无校验位,无停止位。受到单片机硬件限制,每个数据包传输都不得超过256字节限制(单片机硬件规定),使得它不能满足有大量数据需要传输的应用场景,本实施例在串口通信协议的基础上,采用如下数据编码解决此问题。上位机与单片机建立连接之后进行数据通信时采用的数据编码结构图如图4所示,具体组成为:ATCommand,head,index,length,data,check,end;其中,ATCommand是用来识别数据指令,最小占3byte,最大占15byte;head是数据编码的固定头标志,占2byte;index是数据包的序号,占2byte;length当前数据包的数据长度,占1字节;data是数据包有效数据,最小占0byte,最大占232byte;check是数据包校验,占1byte;end是数据编码的结束标志,占2byte。因此,ATCommand和data的长度是可变的,因此扩展性强。算法运行时,首先根据ATCommand来识别当前需要执行的指令,然后验证head固定头是否匹配,其次根据length连续接收数据,接受完毕之后,判断end是否匹配,然后根据checksum校验判断数据是否正确,最后处理当前指令内容。基于上述数据编码和全双工通信模式,上位机与所述单片机之间实现一个具有分片和重组的传输层。传输层将数据包按照每255字节划分为一个有效载荷分片,在每个分片包上本文档来自技高网...
一种基于串口通信静默升级单片机固件的方法

【技术保护点】
一种基于串口通信静默升级单片机固件的方法,具体为:上位机从服务器下载最新版本固件并传输至对应单片机进行静默升级,其特征在于,所述上位机与所述单片机之间采用串口通信,串口通信中的数据编码组成为:AT Command, head, index, length, data, check, end;其中,AT Command是用来识别数据指令,head是数据编码的固定头标志,index是数据包的序号,length当前数据包的数据长度,data是数据包有效数据,check是数据包校验,end是数据编码的结束标志。

【技术特征摘要】
2017.06.23 CN 20171048555531.一种基于串口通信静默升级单片机固件的方法,具体为:上位机从服务器下载最新版本固件并传输至对应单片机进行静默升级,其特征在于,所述上位机与所述单片机之间采用串口通信,串口通信中的数据编码组成为:ATCommand,head,index,length,data,check,end;其中,ATCommand是用来识别数据指令,head是数据编码的固定头标志,index是数据包的序号,length当前数据包的数据长度,data是数据包有效数据,check是数据包校验,end是数据编码的结束标志。2.根据权利要求1所述的一种基于串口通信静默升级单片机固件的方法,其特征在于,所述上位机与所述单片机之间采用的串口通信为全双工模式,波特率为115200,无校验位,无停止位。3.根据权利要求1所述的一种基于串口通信静默升级单片机固件的方法,其特征在于,所述上位机与所述单片机之间的数据通信方式为:S1、所述上位机发送大数据包总长度的数据编码,即ATCommand为数据长度指令,所述单片机收到数据长度指令数据编码后,回复收到ACK指令;S2、所述上位机对大数据进行分片,从第一个分片包index=0开始分片发送;S3、所述单片机收到分片数据...

【专利技术属性】
技术研发人员:张恩贵吕健荣
申请(专利权)人:南京悦控智能科技有限公司
类型:发明
国别省市:江苏,32

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

1