一种远程嵌入式固件在线升级方法与流程

文档序号:16207115发布日期:2018-12-08 07:15阅读:209来源:国知局
一种远程嵌入式固件在线升级方法与流程
本发明涉及固件升级方法,特别是一种远程嵌入式固件在线升级方法。
背景技术
智能采集控制器可用于无人值守站点。智能采集控制器可采集站点开关量、模拟量以及设备运行状态信息,通过4g通信方式和远端数据中心通信服务器之间通过tcp/ip连接进行通讯。采集的数据信息发送到远端数据中心进行处理。用户可通过手机app、web客户端进行信息查询。远端数据服务中心通过手机app、web客户端发送控制指令给智能采集控制器,控制器分析控制指令,并执行控制操作实现远程操控。通常情况下,如果需要对智能采集控制器的嵌入式软件代码进行升级,或者对产品进行修改,就必须到现场重新烧写程序。这样,从时间到成本都造成了很大的开销,非常不方便不灵活。技术实现要素:有鉴于此,本发明提供了一种可安全、高效地远程更新嵌入式固件的远程嵌入式固件在线升级方法,以解决上述问题。一种远程嵌入式固件在线升级方法,包括app程序和bootload程序,所述app程序包括:步骤s1:设置偏移中断向量表;步骤s2:初始化智能采集控制器的时钟及外设;步骤s3:执行用户设定的程序,采用tcp/ip协议和服务器建立通信连接;步骤s4:智能采集控制器接收并识别服务器发出的请求升级固件的指令;步骤s5:智能采集控制器判断是否同意升级;步骤s6:若同意升级,则智能采集控制器标记升级标志位;步骤s7:智能采集控制器发出响应信号;之后进入bootload程序;所述bootload程序包括:步骤s8:初始化app程序的偏移量,将偏移中断向量表置零;步骤s9:智能采集控制器判断升级标志位是否为特定的标记,是则进入步骤s10,否则返回app程序;步骤s10:智能采集控制器接收并识别服务器发出的包含固件数据的数据包;步骤s11:智能采集控制器判断固件数据是否完整、正确,是则进入步骤s12,否则返回步骤s10;步骤s12:智能采集控制器将固件数据烧写至其闪存中,同时将升级标志位置零;步骤s13:智能采集控制器发出固件升级反馈信号给服务器,之后返回app程序。进一步地,所述智能采集控制器与服务器之间采用数据包的方式进行信息交换,所述数据包包括起始位、数据长度、功能代码、状态码、序列号、数据、crc校验以及结束位。进一步地,所述起始位为固定值aah,所述结束位为固定值55h。进一步地,所述服务器发出的请求升级固件的指令的功能代码为0x89。进一步地,所述智能采集控制器发出的响应信号的功能代码为0x09。进一步地,所述智能采集控制器发出的响应信号的状态码为0x00时表示同意升级,状态码为0x01时表示不同意升级。进一步地,所述服务器在接收到的响应信号的状态码为0x00时,发出包含固件数据的数据包。进一步地,所述服务器发出的包含固件数据的数据包的功能代码为0x8a。进一步地,所述智能采集控制器发出的固件升级反馈信号的功能代码为0x0a,所述固件升级反馈信号的状态码为0x00时表示升级成功,状态码为0x01时表示参数错误。进一步地,所述app程序从bootload程序之后一定的偏移量的地址开始,app程序的偏移中断向量表中设有相应偏移量。与现有技术相比,本发明的远程嵌入式固件在线升级方法包括app程序和bootload程序,所述app程序包括步骤s1:设置偏移中断向量表;步骤s2:初始化智能采集控制器的时钟及外设;步骤s3:执行用户设定的程序,采用tcp/ip协议和服务器建立通信连接;步骤s4:智能采集控制器接收并识别服务器发出的请求升级固件的指令;步骤s5:智能采集控制器判断是否同意升级;步骤s6:若同意升级,则智能采集控制器标记升级标志位;步骤s7:智能采集控制器发出响应信号;之后进入bootload程序;所述bootload程序包括:步骤s8:初始化app程序的偏移量,将偏移中断向量表置零;步骤s9:智能采集控制器判断升级标志位是否为特定的标记,是则进入步骤s10,否则返回app程序;步骤s10:智能采集控制器接收并识别服务器发出的包含固件数据的数据包;步骤s11:智能采集控制器判断固件数据是否完整、正确,是则进入步骤s12,否则返回步骤s10;步骤s12:智能采集控制器将固件数据烧写至其闪存中,同时将升级标志位置零;步骤s13:智能采集控制器发出固件升级反馈信号给服务器,之后返回app程序。如此可安全、高效地远程更新嵌入式固件。附图说明以下结合附图描述本发明的实施例,其中:图1为本发明提供的远程嵌入式固件在线升级方法中的智能采集控制器的方框示意图。图2为本发明提供的远程嵌入式固件在线升级方法中的app程序的流程示意图。图3为本发明提供的远程嵌入式固件在线升级方法中的bootload程序的流程示意图。具体实施方式以下基于附图对本发明的具体实施例进行进一步详细说明。应当理解的是,此处对本发明实施例的说明并不用于限定本发明的保护范围。请参考图1及图2,其为本发明提供的一种远程嵌入式固件在线升级方法。智能采集控制器100包括控制器stm32f103vct6,具有在线可编程功能(iap),即用自己的程序在程序运行过程中对用户闪存(userflash)进行烧写。控制器stm32f103vct6采用通用异步收发传输器(uart1)和4g模块相连。控制器stm32f103vct6使用uart1,通过at指令操作4g模块。当4g模块和平台通信服务器建立了tcp/ip连接后,即采用透传模式进行数据传输。本发明提供的一种远程嵌入式固件在线升级方法,用于对智能采集控制器100进行远程更新嵌入式固件,智能采集控制器100中存储有app程序110和bootload程序120,其中智能采集控制器100通过app程序110执行以下步骤:步骤s1:设置偏移中断向量表,偏移中断向量表是指中断服务程序入口地址的偏移量与段基值,一个中断向量占据4字节空间。中断向量表是cortex-m3系统存储器中最低端的字节空间,它的作用就是按照中断类型号从小到大的顺序存储对应的中断向量,总共存储83个中断向量。在中断响应过程中,mcu通过从接口电路获取的中断类型号(中断向量号)计算对应中断向量在表中的位置,并从中断向量表中获取中断向量,将程序流程转向中断服务程序的入口地址。步骤s2:初始化智能采集控制器100的时钟及外设。步骤s3:执行用户设定的程序,采用tcp/ip协议和服务器建立通信连接。步骤s4:智能采集控制器100接收并识别服务器发出的请求升级固件的指令。步骤s5:智能采集控制器100判断是否同意升级。智能采集控制器100接收到请求升级固件的指令后,根据自身的工作状态判断是否同意升级,如智能采集控制器100正在采集或发送站点开关量、模拟量以及设备运行状态信息而无法中断时则不同意升级,进入步骤s7;若智能采集控制器100处于空闲状态或处于可中断工作时则同意升级,则进入步骤s6。步骤s6:智能采集控制器100标记升级标志位,用于表示智能采集控制器100已做好了升级固件的准备。步骤s7:智能采集控制器100发出响应信号。若智能采集控制器100同意升级,且步骤s7发出的响应信号包含同意升级的信号后,智能采集控制器100通过bootload程序120执行以下步骤:步骤s8:初始化app程序的偏移量,将偏移中断向量表置零。步骤s9:智能采集控制器100判断升级标志位是否为特定的标记,是则进入步骤s10,否则返回app程序,如步骤s1。步骤s10:智能采集控制器100接收并识别服务器发出的包含固件数据的数据包,若智能采集控制器100发出的响应信号包含同意升级的信号,则服务器发出包含固件数据的数据包。如此服务器根据智能采集控制器100的响应信号发出包含固件数据的数据包,避免智能采集控制器100无法进行升级时服务器直接发出数据包,造成数据包传输浪费,占用带宽、影响工作效率。步骤s11:智能采集控制器100判断固件数据是否完整、正确,是则进入步骤s12,否则返回步骤s10。步骤s12:智能采集控制器100将固件数据烧写至其闪存中,同时将升级标志位置零。步骤s13:智能采集控制器100发出固件升级反馈信号给服务器。之后返回步骤s1,如此反复。智能采集控制器100与服务器之间采用数据包的方式进行信息交换,每一次收发数据都使用如下特定的帧格式:起始位数据长度功能代码状态码序列号数据crc校验结束位aahxxxxhxxhxxhxxxxhxxxxhxxxxh55h数据包包括起始位、数据长度、功能代码、状态码、序列号、数据、crc校验以及结束位。字节编码使用网络字节顺序(bigendian)。其中:起始位(head):固定值aah。数据长度:数据字节数。功能代码(opcode):操作代码,用于表示该数据包的属性或功能。状态码:操作状态码,用于表示响应信号。序列号:帧的序列号。数据:具体的数据。crc校验:循环冗余码校验,从起始位到数据结尾的ccitt校验值,多项式为:x16+x12+x5+1(0x1021)。结束位(tail):固定值55h。其中服务器和智能采集控制器100之间固件升级的命令帧格式如下:1、服务器发出的请求升级固件的指令2、智能采集控制器100发出的响应信号:3、服务器发出的包含固件数据的数据包4、智能采集控制器100发出的固件升级反馈信号:在控制器stm32f103vct6的程序存储器中,bootload程序120和app程序110存储在闪存的不同地址范围。比如程序存储器最底端放置bootload程序120,其上放置app程序110,互不重叠。app程序110在bootload程序120的某个偏移量x的地址开始,app程序110的偏移中断向量表做相应的移动,偏移量为x。与现有技术相比,本发明的远程嵌入式固件在线升级方法包括app程序和bootload程序,所述app程序包括步骤s1:设置偏移中断向量表;步骤s2:初始化智能采集控制器的时钟及外设;步骤s3:执行用户设定的程序,采用tcp/ip协议和服务器建立通信连接;步骤s4:智能采集控制器接收并识别服务器发出的请求升级固件的指令;步骤s5:智能采集控制器判断是否同意升级;步骤s6:若同意升级,则智能采集控制器标记升级标志位;步骤s7:智能采集控制器发出响应信号;之后进入bootload程序;所述bootload程序包括:步骤s8:初始化app程序的偏移量,将偏移中断向量表置零;步骤s9:智能采集控制器判断升级标志位是否为特定的标记,是则进入步骤s10,否则返回app程序;步骤s10:智能采集控制器接收并识别服务器发出的包含固件数据的数据包;步骤s11:智能采集控制器判断固件数据是否完整、正确,是则进入步骤s12,否则返回步骤s10;步骤s12:智能采集控制器将固件数据烧写至其闪存中,同时将升级标志位置零;步骤s13:智能采集控制器发出固件升级反馈信号给服务器,之后返回app程序。如此可安全、高效地远程更新嵌入式固件。以上仅为本发明的较佳实施例,并不用于局限本发明的保护范围,任何在本发明精神内的修改、等同替换或改进等,都涵盖在本发明的权利要求范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1