CN109522040A - 一种用于电表的数据包数变长远程升级方法 - Google Patents
一种用于电表的数据包数变长远程升级方法 Download PDFInfo
- Publication number
- CN109522040A CN109522040A CN201811135036.5A CN201811135036A CN109522040A CN 109522040 A CN109522040 A CN 109522040A CN 201811135036 A CN201811135036 A CN 201811135036A CN 109522040 A CN109522040 A CN 109522040A
- Authority
- CN
- China
- Prior art keywords
- data packet
- data
- packet
- sent
- ammeter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种用于电表的数据包数变长远程升级方法,该方法通过主站对升级程序目标代码数据包的有效性实时判断,无效数据包不再发送,电表端对主站没有发送的数据包统一初始化为0xFF,不再保存和拷贝,节约了大量通讯传输时间和表计读写外部Flash和MCU内部Flash时间,提高了升级效率。
Description
技术领域
本发明涉及电子数据升级领域,尤其涉及一种用于电表的数据包数变长远程升级方法。
背景技术
现有的电表数据升级主要采用如下方式,主站将编译器生成的整个机器码转换为升级目标代码后,再对目标代码按照通信缓冲大小进行分包,然后通过通讯信道将所有数据包传输到电表外部Flash保存,最后电表将外部Flash存储的升级数据拷贝到MCU内部Flash,完成代码升级。
这个方案没有对目标码的无效数据包进行检测,使得无效数据包也被传输,一定程度上导致了传输时长变长,而电表一般采用直接将传输过来的数据全部保存和拷贝,这使得电表MCU保存和拷贝无效数据包也要花费大量时间,导致远程升级效率非常低。
发明内容
鉴于上述问题,本发明的目的在于提供能根据实际升级有效目标码的大小,采用升级包数变长形式发送升级数据包,减少主站端通讯发送和电表端保存及拷贝数据包的个数,大大降低升级时间的一种用于电表的数据包数变长远程升级方法。
为了实现上述目的,本发明采用的技术方案为:一种用于电表的数据包数变长远程升级方法,所述方法包括,
S1、设置机器码编译器,填充0xFF无效程序存储空间,置CRC16校验和至机器码最后两字节,生成机器码并分包;
S2、发送远程升级准备信息;
S3、传输数据包总包数;
S4、发送传输程序升级数据包,判断当前待发送数据包,若数据全为0xFF,发送当前数据包至倒数第二包数据全为无效数据信息,发送传输最后一数据包;若数据非0xFF,发送当前待发送数据包,至发送完最后一数据包。
优选的,所述方法在完成S4后,进行操作:
S5、读取信息,判断所有数据包接收状态位,若全部置位,结束数据传输;若非全部置位,传输遗漏数据包。
优选的,所述方法在完成S5后,还进行操作:
S6、发送升级程序验证信息,验证通过,发送升级程序激活信息。
优选的,所述若数据全为0xFF,发送当前数据包至倒数第二包数据全为无效数据信息,发送传输最后一数据包对应有电表操作,接收所述无效数据信息,置0xFF对应数据包接收状态位,接收最后一数据包,置位接收状态位。
优选的,所述发送远程升级准备信息对应有电表操作,接收远程升级准备信息,初始化外部flash升级程序空间为全0xFF;
优选的,所述传输数据包总包数对应有电表操作,清零所有数据包接收状态位。
优选的,所述若数据非0xFF,发送当前待发送数据包,至发送完最后一数据包对应有电表操作,正确接收程序升级数据包,置位对应数据包接收状态位,非正确接收,不置位对应数据包接收状态位。
优选的,所述发送升级程序验证信息对应有电表操作,计算所有外部flash程序升级数据包CRC校验和,比较当前计算的CRC校验和与接收到的最后一数据包最后字节CRC校验和。
优选的,所述验证通过,发送升级程序激活信息对应有电表操作,复制外部flash程序升级数据包至MCU程序存储空间,进行远程升级。
优选的,所述传输遗漏数据包对应有电表操作,正确接收传递的所述遗漏数据包,置位对应数据包接收状态位。
与现有技术相比,本发明的优点在于:主站实时判断升级程序目标代码数据包的有效性,无效数据包不再发送,电表端对主站没有发送的数据包统一初始化为0xFF,不再保存和拷贝,这样节约了大量通讯传输时间和表计读写外部Flash和MCU内部Flash的时间,从而提高了传输效率。
附图说明
图1为本发明用于电表的数据包数变长远程升级方法中数据传输流程图。
图2为本发明在完成数据传输后的升级操作流程。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
如图1-2所示,为本发明用于电表的数据包数变长远程升级方法流程图。该方法对应有主站和待升级的电表。本发明变长数据包远程升级的原理在于,编译器在生成机器码之前,选择将没有使用的程序空间填充为0xFF,并且机器码CRC校验和总是放在程序存储空间的最后几个字节,编译器在生成机器码时,有效的程序从程序存储空间的开头连续存放,没有使用的程序存储空间放最后并且填充0xFF。主站传输升级目标码数据包时,如果检测到某包升级程序数据全都是0xFF,则认为从这包升级程序数据开始直到最后倒数第二包数据均无效,便不再将其发送到电表,转而直接传输最后一包带校验和的有效数据包至电表;对应的,电表端在接收升级数据包时,按照通讯数据包号依次保存到外部Flash,主站没有传输的无效数据包不进行保存,保留开始升级程序执行外部Flash擦除命令后的初始值0xFF。
这样,升级目标码里面没有传输的无效0xFF与外部Flash里面擦除后的初始值0xFF保持一致,无效的数据没有传输,电表也没有进行保存操作,而升级时候也不会对无效的数据进行复制,从而节省了时间。
依据图1和图2的流程图,现从主站、电表两个角度分别对升级操作流程进行如下详述。主站方面,执行如下操作,
S1、设置机器码编译器,填充0xFF无效程序存储空间,置CRC16校验和至机器码最后两字节,生成机器码并分包;
S2、发送远程升级准备信息;
S3、传输数据包总包数;
S4、发送传输程序升级数据包,判断当前待发送数据包,若数据全为0xFF,发送当前数据包至倒数第二包数据全为无效数据信息,发送传输最后一数据包;若数据非0xFF,发送当前待发送数据包,至发送完最后一数据包。
S5、读取信息,判断所有数据包接收状态位,若全部置位,结束数据传输;若非全部置位,传输遗漏数据包。
S6、发送升级程序验证信息,验证通过,发送升级程序激活信息。
而电表方面,则对应执行如下操作:
在接收到主站发送的当前数据包至倒数第二包数据全为无效数据信息,主站发送传输最后一数据包后,电表通过接收所述无效数据信息,置0xFF对应数据包接收状态位,并接收最后一数据包,置位接收状态位;而当主站发送有效的数据包时,电表会正确接收程序升级数据包,置位对应数据包接收状态位,若没有正确接收,则不置位对应数据包接收状态位。
在主站发送了远程升级准备信息后,电表接收远程升级准备信息,并初始化外部flash升级程序空间为全0xFF;而在主站发送了传输数据包总包数后,电表清零所有数据包接收状态位。
在完成最后一数据包传输后,主站通过前述S5的分析判断是否有数据包遗漏,若有遗漏,则补发遗漏的数据包,与此同时,电表则进行正确接收传递的所述遗漏数据包,置位对应数据包接收状态位的操作。
完成所有数据发送后,需要对整个升级程序数据包进行校验,以判断升级传输命令是否有效,主站即对应操作前述S6中的发送升级程序,而电表则进行对应反馈,即计算所有外部flash程序升级数据包CRC校验和,比较当前计算的CRC校验和与接收到的最后一数据包最后字节CRC校验和,若计算的校验和与接收到的校验和相同,则表示验证通过,主站即执行前述S6中的发送升级程序激活信息,电表则对应进行操作,复制外部flash程序升级数据包至MCU程序存储空间,进行远程升级。
如上,通过主站传输时滤除无效的升级代码,同样电表在保存和拷贝时也滤除无效的升级代码,整个远程升级流程可以节约大量的时间,大大提高升级效率。
除了上述改进外,其他相类似的改进也包含在本发明的改进范围内,此处就不在赘述。尽管已经示出和描述了本发明的实施例,本领域技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变形,本发明的范围由权利要求及其等同物限定。
Claims (10)
1.一种用于电表的数据包数变长远程升级方法,所述方法包括,
S1、设置机器码编译器,填充0xFF无效程序存储空间,置CRC16校验和至机器码最后两字节,生成机器码并分包;
S2、发送远程升级准备信息;
S3、传输数据包总包数;
S4、发送传输程序升级数据包,判断当前待发送数据包,若数据全为0xFF,发送当前数据包至倒数第二包数据全为无效数据信息,发送传输最后一数据包;若数据非0xFF,发送当前待发送数据包,至发送完最后一数据包。
2.根据权利要求1所述的方法,其特征在于:所述方法在完成S4后,进行操作,
S5、读取信息,判断所有数据包接收状态位,若全部置位,结束数据传输;若非全部置位,传输遗漏数据包。
3.根据权利要求2所述的方法,其特征在于:所述方法在完成S5后,还进行操作,
S6、发送升级程序验证信息,验证通过,发送升级程序激活信息。
4.根据权利要求1所述的方法,其特征在于:
所述若数据全为0xFF,发送当前数据包至倒数第二包数据全为无效数据信息,发送传输最后一数据包对应有电表操作,接收所述无效数据信息,置0xFF对应数据包接收状态位,接收最后一数据包,置位接收状态位。
5.根据权利要求1所述的方法,其特征在于:
所述发送远程升级准备信息对应有电表操作,接收远程升级准备信息,初始化外部flash升级程序空间为全0xFF。
6.根据权利要求1所述的方法,其特征在于:
所述传输数据包总包数对应有电表操作,清零所有数据包接收状态位。
7.根据权利要求1所述的方法,其特征在于:
所述若数据非0xFF,发送当前待发送数据包,至发送完最后一数据包对应有电表操作,正确接收程序升级数据包,置位对应数据包接收状态位,非正确接收,不置位对应数据包接收状态位。
8.根据权利要求5所述的方法,其特征在于:
所述发送升级程序验证信息对应有电表操作,计算所有外部flash程序升级数据包CRC校验和,比较当前计算的CRC校验和与接收到的最后一数据包最后字节CRC校验和。
9.根据权利要求3所述的方法,其特征在于:
所述验证通过,发送升级程序激活信息对应有电表操作,复制外部flash程序升级数据包至MCU程序存储空间,进行远程升级。
10.根据权利要求2所述的方法,其特征在于:
所述传输遗漏数据包对应有电表操作,正确接收传递的所述遗漏数据包,置位对应数据包接收状态位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811135036.5A CN109522040A (zh) | 2018-09-27 | 2018-09-27 | 一种用于电表的数据包数变长远程升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811135036.5A CN109522040A (zh) | 2018-09-27 | 2018-09-27 | 一种用于电表的数据包数变长远程升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109522040A true CN109522040A (zh) | 2019-03-26 |
Family
ID=65769805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811135036.5A Pending CN109522040A (zh) | 2018-09-27 | 2018-09-27 | 一种用于电表的数据包数变长远程升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522040A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111596939A (zh) * | 2020-05-18 | 2020-08-28 | 杭州海兴电力科技股份有限公司 | 一种电能表的升级方法、装置以及集中器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571370A (zh) * | 2003-07-18 | 2005-01-26 | 华为技术有限公司 | 一种通信设备数据加载的方法 |
CN101135972A (zh) * | 2006-08-29 | 2008-03-05 | 中兴通讯股份有限公司 | 一种对终端Flash软件进行升级的方法 |
CN102023884A (zh) * | 2010-11-25 | 2011-04-20 | 深圳市科陆电子科技股份有限公司 | 一种嵌入式系统开发程序校验码自动生成的方法 |
CN103200268A (zh) * | 2013-04-11 | 2013-07-10 | 山东大学 | 一种用于电动汽车的远程监控、升级及标定的系统及方法 |
CN104951341A (zh) * | 2015-06-18 | 2015-09-30 | 烟台东方威思顿电气股份有限公司 | 一种采集器的远程升级方法 |
CN105117253A (zh) * | 2015-08-27 | 2015-12-02 | 常州大学 | 一种基于BootLoader的UV LED固化系统远程升级方法 |
-
2018
- 2018-09-27 CN CN201811135036.5A patent/CN109522040A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571370A (zh) * | 2003-07-18 | 2005-01-26 | 华为技术有限公司 | 一种通信设备数据加载的方法 |
CN101135972A (zh) * | 2006-08-29 | 2008-03-05 | 中兴通讯股份有限公司 | 一种对终端Flash软件进行升级的方法 |
CN102023884A (zh) * | 2010-11-25 | 2011-04-20 | 深圳市科陆电子科技股份有限公司 | 一种嵌入式系统开发程序校验码自动生成的方法 |
CN103200268A (zh) * | 2013-04-11 | 2013-07-10 | 山东大学 | 一种用于电动汽车的远程监控、升级及标定的系统及方法 |
CN104951341A (zh) * | 2015-06-18 | 2015-09-30 | 烟台东方威思顿电气股份有限公司 | 一种采集器的远程升级方法 |
CN105117253A (zh) * | 2015-08-27 | 2015-12-02 | 常州大学 | 一种基于BootLoader的UV LED固化系统远程升级方法 |
Non-Patent Citations (3)
Title |
---|
BINGQI23: "CheckSum计算工具1--bin文件", 《HTTPS://BLOG.51CTO.COM/BIGNQI/1348370》 * |
TAOFUZHAO2: "把bin填充0xFF到指定大小(含源码)", 《HTTPS://DOWNLOAD.CSDN.NET/DOWNLOAD/TAOFUZHAO/9720790》 * |
欧海: "单片机升级bin文件增加文件头软件", 《HTTPS://BLOG.CSDN.NET/LINDABELL/ARTICLE/DETAILS/78812259》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111596939A (zh) * | 2020-05-18 | 2020-08-28 | 杭州海兴电力科技股份有限公司 | 一种电能表的升级方法、装置以及集中器 |
CN111596939B (zh) * | 2020-05-18 | 2023-09-15 | 杭州海兴电力科技股份有限公司 | 一种电能表的升级方法、装置以及集中器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2013127273A1 (zh) | 机动车辆轮胎压力监测系统传感器的设定方法、传感器及传感器设定器 | |
CN107579863A (zh) | 终端ota升级方法、装置及系统 | |
CN105117253A (zh) | 一种基于BootLoader的UV LED固化系统远程升级方法 | |
US10122691B2 (en) | Receiving apparatus and packet processing method thereof | |
CN105573810A (zh) | 一种无线传感器网络节点远程升级方法及装置 | |
CN110086885A (zh) | 空间下载技术的升级包下载方法及装置、存储介质和终端 | |
CN107634859A (zh) | 一种固件升级方法及装置 | |
CN112947977B (zh) | 一种软件在线升级方法及系统 | |
WO2016173128A1 (zh) | 一种软件版本的下载方法及装置、存储介质 | |
CN105975308B (zh) | 家庭网关中低内存开销的远程升级系统及远程升级方法 | |
CN110868247B (zh) | 一种基于事件驱动的卫星遥测数据处理方法、装置及计算机存储介质 | |
CN108415718B (zh) | 一种应用于星载软件在线更新的BootLoader设计方法 | |
CN103677869A (zh) | 无线传感器网络节点远程代码更新系统及方法 | |
RU2013149027A (ru) | Способ и устройство для адаптации надежности передачи данных в последовательной шинной системе | |
JP6225431B2 (ja) | マイクロプログラムを更新可能な光トランシーバ | |
CA2631140A1 (en) | Programming electronic meter settings using a bandwidth limited communications channel | |
CN109189434A (zh) | 一种电能表的在线升级方法 | |
CN109522040A (zh) | 一种用于电表的数据包数变长远程升级方法 | |
CN101325475A (zh) | 一种嵌入式系统软件远程升级方法 | |
US20170138625A1 (en) | Air conditioner, air conditioner system, and rewrite control program | |
CN113489570B (zh) | 一种PCIe链路的数据传输方法、装置及设备 | |
CN107301068A (zh) | 一种单片机上的一对多无线程序升级系统及方法 | |
CN111309363A (zh) | 基于Contiki操作系统的在线升级方法及装置 | |
CN101388256B (zh) | 用于一存储器元件产生一低级错误更正码的控制器及方法 | |
CN105472377A (zh) | 电视机调试方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190326 |
|
RJ01 | Rejection of invention patent application after publication |