[发明专利]一种数据无损的远程代码更新方法和装置有效
申请号: | 201510409596.5 | 申请日: | 2015-07-13 |
公开(公告)号: | CN105022646B | 公开(公告)日: | 2018-02-13 |
发明(设计)人: | 王宜怀;陈建明;顾会光;陈瑞杰 | 申请(专利权)人: | 苏州大学 |
主分类号: | G06F8/654 | 分类号: | G06F8/654;G06F3/06 |
代理公司: | 南京利丰知识产权代理事务所(特殊普通合伙)32256 | 代理人: | 王锋 |
地址: | 215123 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据 无损 远程 代码 更新 方法 装置 | ||
技术领域
本发明涉及远程代码更新领域,更具体地,涉及一种数据无损的远程代码更新方法和装置。
背景技术
随着物联网技术的发展,在无线传感器网络等领域,无线远程代码更新技术愈发显得必不可少。在军事、科学研究等领域,有些数据极其珍贵,丢失2、3分钟内采集的数据也变得无法容忍,这对无线远程代码更新机制带来了新的挑战。
目前,基于WiFi、以太网、GPRS、ZigBee、CAN总线等技术的远程代码更新技术层出不穷。他们均遵从于BootLoader(代码更新)代码与用户代码分离的原则,即在BootLoader程序中接收待更新程序的机器码文件,并将其拷贝到指定地址的ROM中,并采用PC指针跳转来完成代码更新操作。在Cortex-M4内核的STM32芯片上,目前已经出现按照上述原则采用GPRS技术完成代码更新的技术。
然而,现存的技术受网络质量、环境的影响,或多或少的存在代码更新延迟,更有甚者代码更新失败,这不可避免造成了大量的数据丢失。
发明内容
为解决基于GPRS的传统无线远程代码更新时数据采集大量丢失、代码更新花费时间长的技术问题,本发明提出了一种数据无损的远程代码更新方法,其采用空间换时间的方式降低了代码更新时间长的问题,由于更新时延低从而在代码更新过程中不会出现数据大量丢失的情况。
本发明所提供的数据无损的远程代码更新方法,包括如下步骤:
步骤一,服务器端发送ProcessAppInfoMsg帧,该帧将代码的总字节数和总包数传递给控制器并由控制器写入SD卡指定位置处中,以供校验帧校验时使用,控制器返回ProcessSendResponse帧;若ProcessAppInfoMsg帧出错则重发ProcessAppInfoMsg帧;
步骤二,服务器端发送ProcessTransDataMsg帧,控制器端根据该帧的校验码校验该帧,若正确则根据SD卡的记录格式将代码写入SD卡相应地址处;若出错,则返回当前应接受帧的包号以要求服务器重发该帧;此外,若服务器收不到该帧的返回帧则重发该帧,该过程持续到第n帧发送结束,n为要发送的帧的数量;
步骤三,服务器端发送ProcessAppVerificationMsg帧,该帧在代码帧发送完毕后发送,其记录了所有代码的累加校验和,若从SD卡中读取的所有代码帧的累加校验和与此相等,则校验成功,否则由该帧的返回帧携带出错信息,请求服务器重发该帧;此外,若服务器收不到该帧的返回帧则重发该帧。
步骤四,服务器端发送ProcessAppUpdateMsg帧,用户应用程序接收到该帧则程序跳转到bootloader处,由bootloader完成代码更新操作。
优选的,在所述步骤一之前,通过下述步骤提取.S19文件:
S1,读取一行S记录,若为S0记录,表明该文件的起始格式正确,否则,表明文件打开错误,返回程序开始处重新打开文件;
S2,读取一行S3记录,取得该S3记录的长度赋值给变量len,然后以代码在主控芯片Flash中的地址为下标,将所述len字节代码存储在boot.image.f[]数组中;
S3,在相同下标的boot.image.f[]数组中标记代码是否为有效数据,其中1表示有效,0表示无效;
S4,计算所述len字节代码的累加校验和fcs,若fcs与该S3记录的最后一个字节相加和为0xff,则表明该S3记录提取的代码有效,否则报错并退出.S19文件的提取流程。
优选的,BootLoader和.S19机器码文件存储在控制器的MCU的Flash区中,将Flash区划分为bootloader代码区和用户代码区,bootloader代码区包括bootloader代码和bootloader中断向量表,用户代码区包括用户代码和用户代码中断向量表。
优选的,bootloader中断向量表在Flash中的起始地址为零地址处,bootloader代码在Flash中的结束地址小于0x00008000,用户代码中断向量表在Flash中的起始地址为0x0000_8000,用户代码在Flash中的起始地址为0x00008420。
优选的,累加校验为32位。
本发明所提供的实现上述任意一项所述的数据无损的远程代码更新方法的数据无损的远程代码更新装置,包括:服务器、GPRS模块、控制器和SD卡,其中,服务器和控制器之间通过GPRS模块通信连接,SD卡与控制器通信连接。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州大学,未经苏州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510409596.5/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置