智能远传表嵌入式软件远程升级方法与流程

文档序号:27220883发布日期:2021-11-03 16:27阅读:163来源:国知局
智能远传表嵌入式软件远程升级方法与流程

1.本发明涉及表具技术领域,特别涉及一种智能远传表嵌入式软件远程升级方法。


背景技术:

2.智能远传气表是指带有控制芯片,并且支持4g或nb

iot无线通讯的远传气表。智能远传气表的嵌入式软件,在产品生产时,通过有线烧录方式写入程序存储区。智能远传气表部署后,安装到千家万户。随客户业务的发展要求,智能远传气表的功能会有部分调整,因此需要对智能远传气表嵌入式软件进行升级。基于智能远传气表安装的分散性,不可能现场直接对智能远传气表嵌入式软件进行升级,只能利用升级服务器,借助智能远传气表所支持的无线通讯方式,将升级所需要的升级文件,通过无线网络传输到智能远传气表,实现远程升级。目前是将升级后的程序传输给智能远传气表,在通信正常的情况下,智能远传气表的升级包能够传输成功,但是也时常存在传输失败的情况,继而导致升级失败。


技术实现要素:

3.本发明的目的在于改善现有技术中所存在的容易出现因传输失败而导致升级失败的情况,提供一种智能远传表嵌入式软件远程升级方法。
4.为了实现上述发明目的,本发明实施例提供了以下技术方案:一种智能远传表嵌入式软件远程升级方法,包括以下步骤:根据原程序和升级程序生成升级包,所述升级包包括升级信息和升级增量数据,所述升级增量数据为新增数据以及与原程序相同数据的描述信息;升级服务器将升级包发送给智能远传表;所述智能远传表接收升级包,并根据所述升级增量数据和原程序复原得到升级程序,以及根据所述升级信息判断是否执行升级操作。
5.所述智能远传表根据所述升级增量数据和原程序复原得到升级程序的步骤,包括:所述智能远传表根据升级增量数据中的所述与原程序相同数据的描述信息,确定出与原程序相同数据在原程序中的位置;智能远传表根据所述位置从原程序中提取出所述相同数据;智能远传表将所述相同数据与升级增量数据中的所述新增数据组合,得到所述升级程序。
6.描述信息直接是相同数据的位置信息,一方面,位置的描述信息相比于直接的数据要小很多,实现数据量缩小的目的;另一方面,根据位置描述可以准确地从原程序中提取出相同数据,继而将相同数据与新增数据组合得到升级程序,提高升级数据的准确性。
7.所述与原程序相同数据的描述信息通过以下方式获得:假设原程序数据olddata大小为m个字节,升级程序数据newdata大小为n个字节,构造一个宽为n、高为m的矩阵e,若newdata[i]与olddata[j]值相等,则e[i,j]为1;否则为
0;在矩阵e中找到多条由1组成的长度不小于设定阈值的连续右斜线'\'形成的斜线,在这些右斜线中找出覆盖newdata最佳的一种直线组合,由该直线组合确定出与原程序相同数据在升级程序中位置、原程序位置及数据长度,所述描述信息包含所述与原程序相同数据在升级程序中位置、原程序位置及数据长度。
[0008]
上述方案中,首先构造矩阵,然后再基于矩阵得到与原程序相同数据的描述信息,不仅可以得到更加简化的升级包,而且得到的升级包也更加准确,避免基于升级包复原升级程序时出现错误,保障远程升级的可靠性。
[0009]
所述新增数据为newdata中没有被覆盖到的数据。通过构造矩阵的形式,对于新增数据也很容易被发现,即很容易确定出新增数据的位置,继而方便于从升级程序中提取出新增数据,与所述描述信息一起放入升级包。
[0010]
所述升级信息包括原程序版本号、升级程序大小、升级包crc校验码中的任一项或多项。本方案中,通过这些信息验证升级包是否正确,既避免了升级程序自身的错误(例如用错升级程序),也避免了因传输过程中出错(例如数据遗失)而导致升级包错误,可以有效地保障升级包的准确性,避免因升级包错误而导致复原得到的升级程序错误,继而导致升级失败。
[0011]
智能远传表根据所述升级信息判断是否执行升级操作的步骤,包括:判断升级包中的原程序版本号与当前运行程序的版本号是否一致,如果不一致则不执行升级操作,否则进一步判断升级包中的升级程序的大小与复原得到的升级程序的大小是否一致,如果不一致则不执行升级操作,否则进一步判断升级包中的升级包crc校验码与生成的校验码一致,则执行升级操作,否则不执行升级操作。本方案适用于已经复原得到升级程序后再进行验证的情况。
[0012]
智能远传表根据所述升级增量数据和原程序复原得到升级程序,以及根据所述升级信息判断是否执行升级操作的步骤,包括:先从接收到的升级包中获取原程序版本号,并与当前运行程序的版本号比较,如果两者一致,则执行下一步,否则不执行升级操作;利用接收到的升级包计算校验值,并将计算出的校验值与升级包中的升级包crc校验码做比较,如果两者一致,则执行下一步,否则不执行升级操作;根据所述升级增量数据和原程序复原得到升级程序,并判断升级包中的升级程序大小与复原得到的升级程序的大小是否一致,如果一致则执行升操作,否则不执行升级操作。
[0013]
本方案适用于先进行判断,再复原得到升级程序的情况,本方案更加优化,可以预先检测出版本号不一致和校验值不一致的情况,避免此种情况下也复原升级程序,避免智能远传表的无效复原操作。
[0014]
所述升级信息还包括智能远传表每次可读入原程序的分块大小、升级程序存储代码区的起始地址。
[0015]
所述升级包由所述升级服务器生成。升级包可以由其他设备生成,然后提交至升级服务器,也可以由升级服务器直接执行,由升级服务器直接执行的操作可以避免升级包的上传操作,更简化。
[0016]
与现有技术相比,本发明具有以下有益效果:无线传输的文件越小,传输的成功性越高,本发明方法从原程序和升级程序数据
中,获取升级程序增量数据来生成升级包,所以升级包比升级程序文件小很多,通常升级包大小只是升级程序大小的10%左右,升级时只传输升级包,大大提高了无线通讯效率,且保障了传输的可靠性。同时利用校验算法,智能远传气表对接收到升级包校验数据进行检查,确保通讯过程数据准确,继而保障复原得到的升级程序的准确性。
附图说明
[0017]
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0018]
图1为升级服务器和智能远传表组成的拓扑图。
[0019]
图2为实施例中智能远传表嵌入式软件远程升级方法的流程图。
[0020]
图3为示例中所举例的矩阵图。
[0021]
图中标记:10

升级服务器;20

智能远传表;30

升级包;40

升级程序;50

原程序。
具体实施方式
[0022]
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0023]
如图1所示,升级服务器10根据原程序50和升级程序40生成升级包30,并将升级包30通过无线网络发送给智能远传表20。其中,升级包包括升级信息和升级增量数据,所述升级增量数据为升级程序与原程序相比的新增数据,以及与原程序相同数据的描述信息。智能远传表接收升级服务器发送的升级包,并根据所述升级增量数据和原程序复原得到升级程序,以及根据所述升级信息判断是否执行升级操作。
[0024]
一方面,本方案中升级服务器只传输升级包,而不是完整的升级程序,升级包相比于完整的升级程序要小很多,因此通过本方法可以极大地降低传输量,在保障传输可靠性的基础上还可以提高传输效率。另一方面,得到升级包后,或者是复原得到升级程序后,并不是直接基于升级程序进行升级,而是要先根据升级信息判断是否升级,继而有效保障升级程序的准确性,即保障升级成功。
[0025]
本方案中,升级包的生成操作由升级服务器执行,但是也容易理解的,升级包也可以由其他设备生成后,提交到升级服务器的升级库。
[0026]
升级包的前64字节,用于定义升级信息,主要用来对升级各环节进行严格的检查,保障数据准确。升级信息主要由以下几部分组成:1)原程序版本号原程序版本号为智能远传气表当前运行程序版本号,当智能远传气表接收到升级包后,先检查当前运行版本号,当检查出当前运行版本号跟升级包中的原始程序版本号一
致才能进行升级。
[0027]
2)升级程序文件大小升级程序文件大小为升级程序文件字节数,当智能远传气表接收升级包后,通过恢复升级程序算法,产生的升级程序,跟升级包中定义的升级程序文件大小一致,才能升级。
[0028]
3)升级包文件crc校验智能远传气表接收升级包后,对接收数据进行校验检查,即基于crc校验算法(与升级包中的crc校验码的生成算法一致)生成校验码,将基于接收数据生成的校验码与升级包文件中的crc校验码进行比较,如果校验码相同,说明接收包通过无线传输后,数据无误,可以继续处理。
[0029]
4)分块大小智能远传气表控制芯片内存有限,在进行升级程序恢复处理时,根据智能远传气表实际可使用内存,限制每次可读入原程序的大小,即分块大小,避免内存溢出。
[0030]
5)升级程序存储代码区起始地址根据智能远传气表升级程序大小及程序存储代码区使用情况,定义升级程序在程序存储区的存放起始地址。
[0031]
将升级程序的数据和原程序的数据相比较,升级程序文件数据一般包括:保留的数据(即与原程序相同的数据)、增加的数据(与源程序相比新增的数据)、删除的数据(与原程序相比,减少的数据)。由于删除的数据是升级程序中没有的,因此不需要考虑,因此只考虑保留的数据和增加的数据。保留的数据可以从原程序中获得,只需要知道保留的数据在原程序中的位置即可,以便于从原程序中正确地提取出升级程序所需要的与原程序相同数据。因此,本方案中,升级增量数据由新增数据和与原程序相同数据的描述信息组成,该描述信息即为与原程序相同数据的位置描述信息。位置描述信息相比于具体的数据而言,要小很多,因此通过本发明方法可以降低传输的数据量。
[0032]
定义原程序的数据为olddata,升级程序的数据为newdata,两个数据之间的相同数据的描述信息为updata,智能远传气表接收到updata后,能够结合原程序olddata和描述信息updata重新生成newdata,进而完成智能远传气表嵌入式软件升级。
[0033]
本方案中,是通过矩阵方式获得与原程序相同数据的描述信息。具体的,假设原程序数据olddata大小为m字节,升级程序数据newdata大小为n字节,升级程序通常只是部分功能升级,所以原程序和新程序有很多相同的数据段。根据原程序文件和升级程序文件大小,构造一个 n(宽)*m(高)大小,仅包含0和1的矩阵e,若newdata[i]与olddata[j]值相等,则e[i,j]为1;否则为0。例如,根据某原程序和升级程序建立的表如下:
矩阵e中相邻的连续的1值将组成很多的直线段:1)横坐标(同一行)e[i,j]

e[i,k]产生的横直线
“‑”
,表示olddata中有一段数据由单个相同字符组成,如e[0,0].e[0,1],e[0,2],e[0,3],表示olddata第一到第四字节,跟newdata的第一字节相等,对升级包的生成没有任何意义;2)纵坐标(同一列)e[j,i]...e[k,i]产生的竖线“|”,说明newdata中有一段数据由单个相同字符组成,如e[0,0].e[1,0],e[2,0],e[3,0],表示newdata第一到第四字节,跟olddata的第一字节相等,对最后的压缩效果不大;3)左斜线'/'说明有一段newdata和一段olddata数据正好顺序颠倒,一般的应用中很少见,因此不予考虑。
[0034]
4)右斜线'\'说明有一段newdata和一段olddata数据相同,如e[0,0].e[1,1],e[2,2],e[3,3],表示newdata和olddata的前四个字节相同。
[0035]
因此,本发明中与原程序相同数据的描述信息的生成算法,主要是在矩阵e中找到多条由1组成的连续右斜线'\'形成的斜线。为达到优化效果,这些右斜线长度不小于一个设定的常数(例如常数设为7)。右斜线有很多数据是重叠的,因此在这些右斜线中找出覆盖newdata最佳的一种直线组合,那么描述信息updata将由该直线组合得到,即该直线组合所代表的与原程序相同数据在升级程序中位置、原程序位置及数据长度,即为所述描述信息,由此得到的与原程序相同数据的描述信息原则上是最好的描述信息。升级程序中可能有很多段数据跟原程序相同,每段相同数据的描述信息中由多根直线组成,找出最佳直线组合的操作是,在这多根直线中找到最长相同数据线段,去掉包含在最长线段中的线段。
[0036]
例如可参考图3,假设升级程序前20字节跟原程序前20字节数据全相同,根据升级程序和原程序得到如图3所示的矩阵,斜线长度不小于7的有三条,中间较粗的右斜线为长数据段,覆盖升级程序前20字节,其余两根较细的右斜线包含在中间较粗的右斜线中。因此,描述信息包括前20字节在升级程序中位置、原程序位置及数据长度,相同数据越长,达到压缩效果越好。而第21至25字节,没被右斜线覆盖,因此升级程序中的这部分数据即为新增数据,要复制到升级增量数据中。
[0037]
在另外的处理方式中,也可以是若newdata[i]与olddata[j]值相等,则e[i,j]为0;否则为1,此时则在矩阵e中找到多条由0组成的连续右斜线'\'形成的斜线。或者等同的,也可以是在newdata[i]与olddata[j]值相等时,e[i,j]为k(k为任一一个数字);否则为非k
的数字,此时则在矩阵e中找到多条由k组成的连续右斜线'\'形成的斜线。
[0038]
基于这种方式得到的描述信息,复原升级程序时,按升级包中的直线段描述从原程序中拷贝数据到升级程序数据区中,然后再拷贝升级包中包含的新增数据到升级程序数据区中,合并后即可生成得到升级程序。嵌入式软件一般升级改动内容不大,因此本发明尤其适用于嵌入式程序的升级。
[0039]
智能远传表接收到升级包后,可以是先基于升级包和原程序复原得到升级程序,然后再基于升级信息判断是否执行升级操作。也可以是先基于升级包中的升级信息判断是否执行升级操作,然后在确定执行升级操作的情况下再复原得到升级程序。为了减少无效(复原了升级程序,但是最终判断出来不执行升级操作)的复原升级程序的操作,优选采用后者方案,因此智能远传表接收到升级包后,执行以下操作:步骤1,先从接收到的升级包中获取原程序版本号,并与当前运行程序的版本号比较,如果两者一致,说明传输对象没有出错,则执行下一步,否则不执行升级操作;步骤2,利用接收到的升级包计算校验值(即校验码),并将计算出的校验值与升级包中的升级包crc校验码做比较,如果两者一致,说明经过无线通讯后数据没有变化,则执行下一步,否则不执行升级操作;步骤3,根据所述升级增量数据和原程序复原得到升级程序,并判断升级包中的升级程序文件大小与复原得到的升级程序的大小是否一致,如果一致说明复原正确,则执行升级操作,否则不执行升级操作。
[0040]
简言之,如图2所示,不能发明提供了一种智能远传表嵌入式软件远程升级方法,包括以下步骤:s11,升级服务器或其他设备根据原程序和升级程序生成升级包,所述升级包包括升级信息和升级增量数据,所述升级增量数据为新增数据以及与原程序相同数据的描述信息;s12,升级服务器将升级包发送给智能远传表;s13,所述智能远传表接收升级包,并根据所述升级增量数据和原程序复原得到升级程序,以及根据所述升级信息判断是否执行升级操作。
[0041]
其中,智能远传表根据所述升级增量数据和原程序复原得到升级程序的步骤,优选包括:所述智能远传表根据升级增量数据中的所述与原程序相同数据的描述信息,确定出与原程序相同数据在原程序中的位置;智能远传表根据所述位置从原程序中提取出所述相同数据;智能远传表将所述相同数据与升级增量数据中的所述新增数据组合,得到所述升级程序。
[0042]
本发明方法根据智能远传气表原程序和升级程序,通过算法生成升级所需的升级包,当需要智能远传气表远程升级时,将生成的升级包文件放到升级服务器,升级服务器根据升级包中的版本信息,将升级包通过无线通讯传输到需要升级的智能远传气表,智能远传气表接收到升级包后,通过升级包本身的校验信息,检查升级包在无线传输过程中是否准确,智能远传气表接收到的升级包数据准确后,通过恢复算法生成完整的升级程序,检查升级程序正确后,最终完成智能远传气表嵌入式软件升级。升级包由升级信息及升级增量
数据组成,由于仅包升级信息及增量信息,因此升级包文件长度远比升级程序小,继而可以保障传输的可靠性。
[0043]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1