本发明涉及嵌入式领域,具体涉及一种断点续传方法。
背景技术:
IAR调试器C-SPY默认是通过Flash Loader程序来完成数据传输、Flash擦除和烧写等任务,Flashloader程序是IAR为C-SPY调试器开发的一个可执行程序,类似Bootloader,IAR在调用调试器的时候需要先将Flashloader程序可执行文件下载到目标芯片的RAM中,然后再将要下载的文件也放到RAM缓存中,之后C-SPY通过指令启动Flashloader程序,它读取编程数据再将其写入到目标芯片的Flash之中去,完成目标芯片Flash的擦写和编程,最后清除释放RAM区Flashloader程序和编程数据,启动新的程序运行。
然后现有的Flashloader程序的功能简单,无法满足现有用户较复杂的需求。
技术实现要素:
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种断点续传方法,对现有的Flashloader程序进行功能扩展和增强。
本发明解决其技术问题所采用的技术方案是:提供一种断点续传方法,应用于嵌入式系统中,该嵌入式系统包括上位机、下位机和控制设备,该断点续传方法包括步骤:
该下位机对控制设备进行升级操作前,该上位机产生一签名信息,用于标识所述的升级操作;
该上位机保存签名信息,且保存与之相对应的用于升级操作的升级数据,并在升级操作过程中实时记录所述升级操作的进度信息;
该下位机保存签名信息;
该下位机对设备进行升级操作时,该上位机先读取下位机的签名信息,并查询所述签名信息对应的进度信息,且提供进度信息对应的升级数据,该下位机根据升级数据继续进行升级操作。
其中,较佳方案是,该上位机没有查询到签名信息或者所述签名信息对应的进度信息时:该上位机重新产生一签名信息,且保存与之相对应的用于升级操作的升级数据,该下位机根据升级数据进行升级操作。
其中,较佳方案是:该上位机的签名信息在完成升级操作后删除。
其中,较佳方案是:该上位机设置有升级数据标识、上位机ID、时间戳、下位机ID和随机数,并采用RIPEMD-160哈希加密算法对升级数据标识、上位机ID、时间戳、下位机ID和随机数进行处理,产生一签名信息。
其中,较佳方案是:该上位机导入升级数据时,产生与升级数据对应并通过RIPEMD-160哈希加密算法处理获得的数据标识,该数据标识与签名信息建立关系。
其中,较佳方案是:该升级操作包括预编程阶段、编程阶段和后编程阶段,该预编程阶段进行编程前的准备,该编程阶段进行更新升级工作,该后编程阶段初始化嵌入式系统。
其中,较佳方案是,该预编程阶段包括步骤:会话模式设置;关闭设备通讯;更改通讯速率;安全验证;读取ECU信息;读取Flx版本号。
其中,较佳方案是:该编程阶段包括步骤:擦除Flash;上传或下载相关数据;Flash编程;数据较验。
其中,较佳方案是:该后编程阶段包括步骤:恢复嵌入式系统的通讯;ECU复位。
本发明的有益效果在于,与现有技术相比,本发明通过设计一种断点续传方法,采用签名信息机制实现升级操作,不必在下位机保存进度信息,提高了升级效率;同时,避免下位机需要额外的随机永久性存储器来保存进度信息,使得本方法的适应性大大增强;以及,防止上位机使用错误的升级数据,提高了升级系统的可操作性。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明断点续传方法的流程示意图;
图2是本发明断点续传方法另一实施例的流程示意图;
图3是本发明升级操作的流程示意图。
具体实施方式
现结合附图,对本发明的较佳实施例作详细说明。
在发明是基于Flx软件的功能扩展,其中,Flx软件基于传统Flashloader程序基础上,对其进行功能扩展和增强而来,命名为FlashloaderX,简称Flx;Flx不仅具备Flashloader的基本功能,还有诸如断点续传、数据压缩、数据加密、多种网络支持等功能;本发明优选涉及断点续传的方式,并通过数据压缩、数据加密、多种网络支持等功能辅助实现。
如图1和图2所示,本发明提供一种断点续传方法的优选实施例。
一种断点续传方法,应用于嵌入式系统中,该嵌入式系统包括上位机、下位机和控制设备;其中,上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化;下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机之类的;上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应的控制设备。
该断点续传方法包括步骤:
S11、该下位机对控制设备进行升级操作前,该上位机产生一签名信息,用于标识所述的升级操作;
S121、该上位机保存签名信息,且保存与之相对应的用于升级操作的升级数据,并在升级操作过程中实时记录所述升级操作的进度信息;
S122、该下位机保存签名信息,其中进度信息包括块号、段号等;
S13、该下位机对设备进行升级操作时,该上位机先读取下位机的签名信息,并查询所述签名信息对应的进度信息,且提供进度信息对应的升级数据,该下位机根据升级数据继续进行升级操作。
S15、该上位机的签名信息在完成升级操作后删除。
其中,该上位机设置有升级数据标识、上位机ID、时间戳、下位机ID和随机数,并采用RIPEMD-160哈希加密算法对升级数据标识、上位机ID、时间戳、下位机ID和随机数进行处理,产生一签名信息。其中,签名信息是唯一的,每次升级操作将产生不同的签名信息,即使对同一个控制设备重复进行升级操作也将产生不同的签名信息。
采用签名信息机制的优点是不必在下位机保存进度信息,提高了效率,同时避免下位机需要额外的随机永久性存储器来保存进度信息,使得本方法的适应性大大增强,因为很多时候下位机没有额外的随机永久性存储器。
进一步地,该上位机导入升级数据时,产生与升级数据对应并通过RIPEMD-160哈希加密算法处理获得的数据标识,该数据标识与签名信息建立关系。
具体地,上位机应当管理好签名信息与升级数据之间的关系,为防止使用错误的升级数据,简单地使用文件名建立关系显然是不行的。因此上位机在导入升级数据时,需为升级数据生成相应的数据标识,之后签名信息与数据标识建立关系,数据标识可由RIPEMD-160哈希加密算法得出。
进一步地,该断点续传方法还包括一步骤:
S141、该上位机没有查询到签名信息或者所述签名信息对应的进度信息;
S142、该上位机重新产生一签名信息,且保存与之相对应的用于升级操作的升级数据,该下位机根据升级数据进行升级操作;
S143、该下位机保存签名信息。
如图3所示,本发明提供一种升级操作的较佳实施例。
该升级操作包括预编程阶段、编程阶段和后编程阶段,该预编程阶段进行编程前的准备,该编程阶段进行更新升级工作,该后编程阶段初始化嵌入式系统。
该预编程阶段包括步骤:会话模式设置;关闭设备通讯;更改通讯速率;安全验证;读取ECU信息;读取Flx版本号。该编程阶段包括步骤:擦除Flash;上传或下载相关数据;Flash编程;数据较验。该后编程阶段包括步骤:恢复嵌入式系统的通讯;ECU复位。
其中,ECU(Electronic Control Unit)电子控制单元,从用途上讲则是一种专用微机控制器。它和普通的电脑一样,由微处理器(CPU)、存储器(ROM、、RAM)、输入/输出接口(I/O)、模数转换器(A/D)以及整形、驱动等大规模集成电路组成。
在本实施例中,会话模式的诊断与控制方式,具体包括子功能定义(默认会话、编程会话、扩展诊断会话)、积极应答报文格式、消极应答报文格式(否定响应服务标识符、原请求服务标识符、消极应答标识码)以及消极应答标识码(子功能不支持/格式非法、报文长度错误或者格式非法、条件未满足或请求顺序错误)。
安全访问的方式,具体包括请求随机种子报文格式、请求随机种子积极应答报文格式、请求随机种子消极应答报文格式(否定响应服务标识符、原请求服务标识符、消极应答标识码)、请求随机种子消极应答标识码(不支持子功能、报文长度错误或者格式非法、条件未满足、超出requestseed访问次数、延迟时间未到)、发送密钥报文格式、发送密钥积极应答报文格式、发送密钥消极应答报文格式(否定响应服务标识符、原请求服务标识符、消极应答标识码)、发送密钥消极应答标识码(不支持子功能、报文长度错误或者格式非法、请求序列错误、密钥无效、超出密钥访问次数限制)以及SecurityAccessType参数定义。
通过标识符读数据的方式,具体包括请求报文格式、积极应答报文格式、消极应答报文格式(否定响应服务标识符、原请求服务标识符、消极应答标识码)、消极应答标识码(不支持子功能、报文长度错误或者格式非法、条件未满足、请求超出范围、安全访问拒绝);其中,在请求超出范围中,如下情况时,此否定响应码要求被发送:1、没有一个请求的DID值被设备支持;2、客户端一次请求的DID个数超过允许的最大值。其中,在安全访问拒绝中,如果至少一个DID是受保护的而且服务器没有处于解锁状态,要求发送此否定响应码。其中,数据标识符参见详细DID列表。
通过标识符写数据的方式,具体包括请求报文格式、积极应答报文格式、否定响应(否定响应服务标识符、原请求服务标识符、否定响应码)、否定响应码(报文长度错误或者格式非法、条件未满足、请求超出范围、安全访问拒绝、一般编程错误);其中,在请求超出范围中,以下情况下要求发送此响应码:1.服务器不支持请求报文的数据标识符,或数据标识符只读;2.请求报文中数据标识符后的数据无效。其中,在安全访问拒绝中,如果与专用地址相关的数据标识符处于保护状态并且服务器锁定,要求发送此响应码。其中,在一般编程错误中,如果向存储单元写入数据时服务器监测到错误,要求发送此响应码。其中,数据标识符参见详细DID列表。
请求下载的方式,具体包括请求报文格式、积极应答报文格式、消极应答报文格式(否定响应服务标识符、原请求服务标识符、消极应答标识码)、消极应答标识码(报文长度错误或者格式非法、条件未满足、请求超出范围、安全访问拒绝、上传/下载操作拒绝);其请求超出范围中,在中以下情况要求发送此响应码:1.指定数据格式标识无效;2.指定地址和长度格式标识无效;3.指定内存地址/内存大小无效。其中,在安全访问拒绝中,如果接收本服务的请求时服务器处于保护状态(服务器支持安全访问服务),要求发送此响应码。
数据传输的方式,具体包括请求报文格式、积极响应报文格式、消极应答报文格式(否定响应服务标识符、原请求服务标识符、消极应答标识码)、消极应答标识码(报文长度错误或者格式非法、请求顺序错误、请求数据超出范围、传输数据暂停、一般编程错误、块序列计数器错误、电压过高/过低)。其中,在请求顺序错误中,以下情况下服务器要求发送此响应码:1.当收到服务请求时请求下载或请求上传服务无效;2.如果请求下载或请求上传服务有效,但服务器已经在请求下载或请求上传服务中接收到memorySize参数确定的全部数据;同时,服务器要求允许接收与之前的传输数据服务的请求报文有相同的重复发送的传输数据请求报文。在中,如果服务器监测到blockSequenceCounter序列中的错误,要求发送此响应码,同时服务器要求允许接收与之前的传输数据服务的请求报文有相同的blockSequenceCounter(请求报文格式中)的重复发送的传输数据请求报文。其中,在电压过高/过低中,如果服务器向永久性存储器(例如Flash内存)下载数据时主电源脚电压超出范围,要求发送此响应码。
退出传输的方式,具体包括请求报文格式、积极应答报文格式、消极应答报文格式(否定响应服务标识符、原请求服务标识符、消极应答标识码)、消积应答标识码(报文长度错误或者格式非法、请求顺序错误);其中,在请求顺序错误中,以下情况要求发送此响应码:1.接收到本服务请求时编程进程没有完成。2.请求下载或请求上传服务无效。
ECU复位,具体包括请求报文格式、积极响应报文格式、消极应答报文格式(否定响应服务标识符、原请求服务标识符、消极应答标识码)、消极应答标识码(子功能不支持、报文长度错误或者格式非法、条件未满足、安全访问拒绝)以及复位定义(硬件复位,此值定义了模拟断开供电电源后(例如,电池)后重新上电/启动序列的“硬件复位”的情况,此执行动作执行需具体规定,并没有标准规定,其结果可能导致重新初始化易失性存储和非易失性存储至预定义的值;钥匙开关复位,此值定义了类似驾驶员关闭又开启点火钥匙的情况,此复位情况要求模拟一个“key-off-on”序列(例如,干扰供电电源的转换),此执行动作执行需具体规定,并没有标准规定。通常非易失性存储位置受到保护而易失性存储被初始化)。
例程控制的方式,具体包括请求报文格式、积极应答报文格式、消极应答报文格式(否定响应服务标识符、原请求服务标识符、消极应答标识码)、消极应答标识码(不支持子功能、报文长度错误或者格式非法、条件不满足、请求序列错误、请求数据超出范围、安全访问拒绝、一般编程错误),以及例程定义(启动例程、停止例程、请求例程结果)。其中,在请求序列错误中,如果被请求例程标识在接收“启动例程”子功能之前接收到“停止例程”或“请求例程结果”子功能,要求发送此响应码。
清除诊断信息的方式,具体包括请求报文格式、积极应答报文格式、消极应答报文格式(否定响应服务标识符、原请求服务标识符、消极应答标识码)、消极应答标识码(报文长度错误或者格式非法、条件未满足、请求超出范围)。其中,在条件未满足中,如果服务器的内部条件阻止清除存储在服务器中DTC的相应信息,要求使用此否定响应码。
以上所述者,仅为本发明最佳实施例而已,并非用于限制本发明的范围,凡依本发明申请专利范围所作的等效变化或修饰,皆为本发明所涵盖。