一种车载控制终端的远程在线升级方法及装置与流程

文档序号:12132663阅读:374来源:国知局
一种车载控制终端的远程在线升级方法及装置与流程

本发明涉及车载终端技术领域,具体涉及一种车载控制终端的远程在线升级方法及装置。



背景技术:

车载控制终端(英文简称为“RCM”),俗称为车辆管理的“黑匣子”,能够对车辆实时在线监控、管理和数据传输;以及能够对移动目标的位置、安全、运行、技术状态进行全天候的监控。实际应用过程中,基于应用功能需求的变化,车载控制终端内嵌入的软件具有升级的需求。

车载控制终端内嵌入的软件的传统的升级方式主要包括两种:第一种方式是利用专用下载器与车载控制终端内的单元模块连接,将更新代码数据传输至车载控制终端,从而完成升级操作,升级过程中需要拆开车载控制终端的箱体,实际操作较为复杂,且要求工作人员具有较高的专业知识和技能;第二种方式是上位机通过串口和CAN等通讯接口与车载控制终端连接,并将更新代码数据传输至车载控制终端,从而完成升级操作,该种升级方式不需要拆卸车载控制终端的箱体,无需专用下载器,实际操作较为简单,升级成本较低,但是该升级方式存在一定的误码率,仅要求工作人员具有一定的专业知识和技能。

同时,上述的两种升级方式均属于人工手动升级方式,实际应用过程中,由于安装有远程控制终端的车辆所处的位置极为分散,需要相关工作人员前往车辆现场才能进行升级操作,需要耗费大量人力成本;出于运营成本上的考虑,人工手动升级的方式并不适合车载控制终端的大规模升级。而远程无线升级方式则解决了人工手动升级的方式不适合车载控制终端的大规模升级的问题,但是,由于主客观因素的影响,现有的远程无线升级方式仍然存在具有一定的误码率以及升级失败的情形,因此,如何提高车载控制终端软件升级的稳定性和可靠性,降低其软件升级出现的误码率,以及车载控制终端软件升级失败后如何防止出现运行崩溃,从而提升车载控制终端运行的稳定性和可靠性,是亟需解决的技术问题。



技术实现要素:

本发明提供了一种车载控制终端的远程在线升级方法及装置,能够对车载控制终端内嵌入的软件进行升级,不仅能降低软件升级的误码率,也解决了车载控制终端软件升级失败后出现运行崩溃的技术问题,提升了车载控制终端运行的稳定性和可靠性。

本发明的技术方案如下:

一种车载控制终端的远程在线升级方法,包括以下步骤:

车载控制终端接收来自于管理服务器的软件升级指令,根据该指令,从FTP服务器中获取更新代码数据并将该更新代码数据写入至升级代码文件内;

车载控制终端读取升级代码文件内的更新标识的值,在更新标识的值为预设值三的情况下,将更新代码索引指向的更新代码区内的代码数据写入flash存储器内用户代码区,将更新代码索引指向另一更新代码区后,运行用户代码区内的程序。

进一步地,根据该指令,从FTP服务器中获取更新代码数据并将该更新代码数据写入至升级代码文件内,包括:

解析软件升级指令,获取升级指令内携带的升级信息;

根据升级信息,向FTP服务器发送升级数据获取请求;

读取升级代码文件内更新代码索引所指向的更新代码区;

接收来自于FTP文件服务器的更新代码数据,并将其写入更新代码索引所指向的更新代码区内;

将更新标识的值由预设值二设置为预设值三并进行复位操作。

其中,更新代码数据接收完成后,车载控制终端采用MD5消息摘要算法第五版校验所述更新代码数据是否完整。在更新代码数据完整的情况下,将其写入更新代码索引所指向的更新代码区。

进一步地,将其写入更新代码索引所指向的更新代码区内,具体包括:

读取升级代码文件内的更新代码索引的值,在更新代码索引的值为预设值一的情况下,将更新代码数据写入至升级代码文件的更新代码一内;

或者,读取升级代码文件内的更新代码索引的值,在更新代码索引的值为预设值二的情况下,将更新代码数据写入至升级代码文件的更新代码二内。

进一步地,将升级代码文件内更新代码索引指向的更新代码数据写入flash存储器内的用户代码区,具体包括:

在更新代码索引的值为预设值一的情况下,将更新代码一内的更新代码数据写入至flash存储器内的用户代码区,然后将更新代码索引的值由预设值一设置为预设值二;

或者,在更新代码索引的值为预设值二的情况下,将更新代码二内的更新代码数据写入至flash存储器内的用户代码区,然后将更新代码索引的值由预设值二设置为预设值一。

进一步地,运行用户代码区内的程序之后,还包括:

获取程序运行时间,在程序运行时间大于或等于预设时间的情况下,将更新标识的值设置为预设值二;

获取程序运行时间,在程序运行时间小于预设时间的情况下,车载控制终端进行复位操作并进入回溯阶段。

进一步地,回溯阶段包括:

读取升级代码文件内更新标识的值,在该值为预设值三的情况下,获取更新代码索引的值,在更新代码索引的值为预设值二的情况下,将更新代码二内的上一版本的代码数据写入flash存储器内的用户代码区;将更新代码索引的值设置为预设值一,运行上一版本的程序;在上一版本的程序的运行时间大于或等于预设时间的情况下,将更新标识的值设置为预设值二并进入正常的工作流程;

或者,读取升级代码文件内更新标识的值,在该值为预设值三的情况下,获取更新代码索引的值,在更新代码索引的值为预设值一的情况下,将更新代码一内的上一版本的代码数据写入flash存储器内的用户代码区;将更新代码索引的值设置为预设值二,运行上一版本的程序;在上一版本的程序的运行时间大于或等于预设时间的情况下,将更新标识的值设置为预设值二并进入正常的工作流程。

进一步地,一种车载控制终端的远程在线升级装置,包括有控制芯片、GPRS/3G /4G通讯模块以及存储模块;

GPRS/3G/4G通讯模块,用于与管理服务器以及FTP服务器建立通讯连接;

控制芯片,与GPRS/3G/4G通讯模块通讯连接,用于接收和解析来自于管理服务器的软件升级指令,获取升级指令内携带的升级信息,并根据升级信息,向FTP服务器发送升级数据获取请求,读取升级代码文件内更新代码索引所指向的更新代码区,接收来自于FTP文件服务器的更新代码数据后,将其写入更新代码索引所指向的更新代码区内,并将更新标识的值由预设值二设置为预设值三;

还用于,读取升级代码文件内的更新标识的值,在更新标识的值为预设值三的情况下,将更新代码索引指向的更新代码区内的代码数据写入flash存储器内用户代码区,将更新代码索引指向另一更新代码区后,运行用户代码区内的程序;

存储模块,与控制芯片保持通讯连接,存储模块用于存储升级代码文件。

进一步地,控制芯片内部的flash存储器划分为引导区、执行区以及用户代码区,其中引导区用于存储bootload引导函数代码以及内部子函数代码,执行区用于固定main函数物理地址位置,用户代码区用于存储升级代码。

升级代码文件保存的格式包括文件头、更新代码一和更新代码二,文件头划分为更新标识、更新代码索引、更新代码一长度以及更新代码二长度,更新代码一和更新代码二用于存放更新代码数据。

进一步地,控制芯片还用于, 在运行用户代码区内的程序之后,获取程序运行时间,在程序运行时间大于或等于预设时间的情况下,将更新标识的值设置为预设值二;

还用于,在运行用户代码区内的程序之后,获取程序运行时间,在程序运行时间小于预设时间的情况下,进行复位操作。

进一步地,控制芯片在运行用户代码区内的程序,获取程序运行时间,在程序运行时间小于预设时间的情况下,进行复位操作之后,控制芯片还用于:

读取升级代码文件内更新标识的值,在该值为预设值三的情况下,获取更新代码索引的值,在更新代码索引的值为预设值二的情况下,将更新代码二内的上一版本的代码数据写入flash存储器内的用户代码区;将更新代码索引的值设置为预设值一,运行上一版本的程序;在上一版本的程序的运行时间大于或等于预设时间的情况下,将更新标识的值设置为预设值二;

或者,读取升级代码文件内更新标识的值,在该值为预设值三的情况下,获取更新代码索引的值,在更新代码索引的值为预设值一的情况下,将更新代码一内的上一版本的代码数据写入flash存储器内的用户代码区;将更新代码索引的值设置为预设值二,运行上一版本的程序;在上一版本的程序的运行时间大于或等于预设时间的情况下,将更新标识的值设置为预设值二。

本发明中,控制芯片将获取到的更新代码数据写入至升级代码文件中的一更新代码区内(更新代码一或更新代码二),在更新标识的值为预设值三的情况下,将该更新代码区内的更新代码数据写入至flash存储器内的用户代码区内,完成车载控制终端的在线升级。

车载控制终端为了判定更新程序是否能够稳定运行,在运行升级程序后,控制芯片获取程序运行时间,在程序运行时间小于预设时间的情况下,进入回溯流程;由于此时在升级代码文件内,更新标识为预设值三以及更新代码索引指向另一个更新代码区,而另一个更新代码区内存储的是当前执行的程序代码,因此控制芯片将该更新代码区内的当前执行程序的代码数据写入至flash存储器内的用户代码区内,并执行当前版本(即上一版本)的程序;同时,车载控制终端在程序升级过程中的任一步骤,若出现死机等升级失败的情形时,由于其内的硬件看门狗电路均会自动复位,从而会自动回溯执行当前版本的程序,从而提高升级的稳定性和可靠性。

本发明产生的有益效果:

1、本发明实现了对车载控制终端的远程在线升级,误码率低,具有高稳定性和可靠性,同时避免了人工现场升级,降低了升级的成本;

2、在车载控制终端升级过程中,若出现死机等升级失败的情形时,车载控制终端内的运行程序会自动回溯至上一版本,执行上一版本的程序,从而提高了车载控制终端运行的稳定性和可靠性,解决了车载控制终端软件升级失败后出现运行崩溃的技术问题;

3、本发明所述的车载控制终端的远程在线升级方式,不需要拆卸车载控制终端的箱体,无需专用下载器,实际操作较为简单,适合车载控制终端的大规模升级。

附图说明

构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明所述的车载控制终端的远程在线升级方法的流程图一;

图2是本发明所述的车载控制终端的远程在线升级方法的流程图二;

图3是本发明所述的车载控制终端的远程在线升级装置的示意图;

图4a是本发明所述的保存的升级代码文件的数据格式划分方式的示意图;

图4b是本发明所述的升级代码文件内文件头的数据格式划分方式的示意图;

图5是本发明所述的flash存储器内部划分方式的示意图;

图6是本发明实施例一所述的下载阶段的流程图;

图7是本发明实施例一所述的升级阶段的流程图;

图8是本发明实施例二所述的回溯阶段的流程图。

具体实施方式

以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。

如附图1和附图2所示,一种车载控制终端的远程在线升级方法,包括步骤一和步骤二。

步骤一:车载控制终端接收来自于管理服务器的软件升级指令,根据该指令,从FTP服务器中获取更新代码数据并将该更新代码数据写入至升级代码文件内。

其中,根据该指令,从FTP服务器中获取更新代码数据并将该更新代码数据写入至升级代码文件内,包括:

解析软件升级指令,获取升级指令内携带的升级信息;

根据升级信息,向FTP服务器发送升级数据获取请求;

读取升级代码文件内更新代码索引所指向的更新代码区;

接收来自于FTP文件服务器的更新代码数据,并将其写入更新代码索引所指向的更新代码区内;

将更新标识的值设置为预设值三并复位。

上述步骤中,其中升级信息包括FTP服务器地址信息、登录用户名、登录密码、升级文件路径信息以及升级文件的文件名;升级代码文件存储在车载控制终端的存储模块内,其内部可划分为文件头和更新代码,而更新代码包括更新代码一和更新代码二,文件头包括更新标识、更新代码索引、更新代码一字节长度和更新代码二字节长度;更新代码一和更新代码二作为两个缓存区,当更新代码索引指向更新代码二时,更新代码二则用于存储来自于管理服务器的更新代码数据,当更新代码索引指向更新代码一时,则更新代码一用于存储来自于管理服务器的更新代码数据。

车载控制终端内的控制芯片一般通过读取更新代码索引的值来获取用于存储更新代码数据的更新代码区,若更新代码索引的值为预设值一,则更新代码一用于存储来自于管理服务器的更新代码数据,而若更新代码索引的值为预设值二,则更新代码二用于存储来自于管理服务器的更新代码数据。

步骤二:车载控制终端读取升级代码文件内的更新标识的值,在更新标识的值为预设值三的情况下,将更新代码索引指向的更新代码区内更新代码数据写入flash存储器内的用户代码区,并运行用户代码区内的更新程序。

上述步骤中,写入flash存储器内的更新代码数据来自于更新代码一或更新代码二内;车载控制终端读取升级代码文件内的更新代码索引的值,若该值为预设值一,则将更新代码一内的代码数据写入至flash存储器内的用户代码区,若该值为预设值二,则将更新代码二内的代码数据写入至flash存储器内的用户代码区。

另外,将更新代码索引指向的更新代码区内的更新代码数据写入flash存储器内的用户代码区之后,运行用户代码区内的程序之前,还包括:

将更新代码索引指向另一更新代码区。

上述步骤中,若写入至flash存储器内的更新代码数据来自于更新代码一内,那么写入完毕后,更新代码索引将指向更新代码二,也即将更新代码索引的值由预设值二设置为预设值一;若写入至flash存储器内的更新代码数据来自于更新代码二内,那么写入完毕后,更新代码索引将指向更新代码一,也即将更新代码索引的值由预设值一设置为预设值二,此时,更新代码索引指向的另一更新代码区内的代码数据为当前版本的代码数据。

车载控制终端读取升级代码文件内的更新标识的值之后,还包括:

在更新标识的值不为预设值三(为预设值二)的情况下,运行用户代码区的程序。

以及,运行用户代码区内的程序之后,还包括:

获取程序运行时间,在程序运行时间大于或等于预设时间的情况下,将更新标识的值设置为预设值二。

获取程序运行时间,在程序运行时间小于预设时间的情况下,车载控制终端进行复位操作并进入回溯阶段。

回溯阶段包括:

读取升级代码文件内更新标识的值,在该值为预设值三的情况下,获取更新代码索引的值,在更新代码索引的值为预设值二的情况下,将更新代码二内的上一版本的代码数据写入flash存储器内的用户代码区;将更新代码索引的值设置为预设值一,运行上一版本的程序;在上一版本的程序的运行时间大于或等于预设时间的情况下,将更新标识的值设置为预设值二并进入正常的工作流程;

或者,读取升级代码文件内更新标识的值,在该值为预设值三的情况下,获取更新代码索引的值,在更新代码索引的值为预设值一的情况下,将更新代码一内的上一版本的代码数据写入flash存储器内的用户代码区;将更新代码索引的值设置为预设值二,运行上一版本的程序;在上一版本的程序的运行时间大于或等于预设时间的情况下,将更新标识的值设置为预设值二并进入正常的工作流程。

如附图3所示,本发明还提供了一种车载控制终端的远程在线升级装置,包括有控制芯片、GPRS/3G /4G通讯模块以及存储模块;

GPRS/3G/4G通讯模块,用于与管理服务器以及FTP服务器建立通讯连接;

控制芯片,与GPRS/3G/4G通讯模块通过串口连接,用于接收和解析来自于管理服务器的软件升级指令,获取升级指令内携带的升级信息,并根据升级信息,向FTP服务器发送升级数据获取请求,读取升级代码文件内更新代码索引所指向的更新代码区,接收来自于FTP文件服务器的更新代码数据后,将其写入更新代码索引所指向的更新代码区内,并将更新标识的值由预设值二设置为预设值三;

还用于,读取升级代码文件内的更新标识的值,在更新标识的值为预设值三的情况下,将更新代码索引指向的更新代码区内的代码数据写入flash存储器内用户代码区,将更新代码索引指向另一更新代码区后,运行用户代码区内的程序;

存储模块,通过SPI接口与控制芯片保持通讯连接,用于存储升级代码文件。

如图5所示,控制芯片内flash存储器划分为引导区、执行区、用户代码区,其中引导区用于存储bootload引导函数代码以及内部子函数代码,执行区用于固定main函数物理地址位置,用户代码区用于存储升级代码。

另外,如图4a所示,保存升级代码文件的格式划分为文件头、更新代码一和更新代码二,如图4b所示,文件头划分为更新标识、更新代码索引、更新代码一长度以及更新代码二长度,更新代码一和更新代码二用于存放更新代码数据。

另外,控制芯片还用于, 在运行用户代码区内的程序之后,获取程序运行时间,在程序运行时间大于或等于预设时间的情况下,将更新标识的值设置为预设值二;还用于,在运行用户代码区内的程序之后,获取程序运行时间,在程序运行时间小于预设时间的情况下,进行复位操作。

当控制芯片在运行用户代码区内的程序,获取程序运行时间,在程序运行时间小于预设时间的情况下,进行复位操作之后,控制芯片还用于:

读取升级代码文件内更新标识的值,在该值为预设值三的情况下,获取更新代码索引的值,在更新代码索引的值为预设值二的情况下,将更新代码二内的上一版本的代码数据写入flash存储器内的用户代码区;将更新代码索引的值设置为预设值一,运行上一版本的程序;在上一版本的程序的运行时间大于或等于预设时间的情况下,将更新标识的值设置为预设值二;

或者,读取升级代码文件内更新标识的值,在该值为预设值三的情况下,获取更新代码索引的值,在更新代码索引的值为预设值一的情况下,将更新代码一内的上一版本的代码数据写入flash存储器内的用户代码区;将更新代码索引的值设置为预设值二,运行上一版本的程序;在上一版本的程序的运行时间大于或等于预设时间的情况下,将更新标识的值设置为预设值二。

实施例一

本发明实施例一为车载控制终端的远程在线升级流程,包括下载阶段和升级阶段。本实施例中,在来自于管理服务器的升级数据与车载控制终端匹配、升级数据正确、并且写入正确的前提下进行车载控制终端的远程在线升级工作。

如附图6所示,下载阶段的具体步骤如下:

S101.控制芯片通过GPRS/3G/4G通讯模块接收来自于管理服务器的升级指令;

S102.解析该指令,并获取其内所携带的升级信息;

S103.根据该升级信息,向FTP文件服务器发送升级数据获取请求;

S104.获取升级代码文件内更新代码索引值为1;

S105.接收来自于FTP文件服务器的更新代码数据,并将其写入更新代码一内;

S106. 将更新标识的值由0设置为0xaabb4455。

如附图7所示,升级代码文件的升级阶段的具体步骤如下:

S201.车载控制终端复位;

S202.判断升级代码文件内的更新标识的值是否为0xaabb4455,若是,则进入步骤S203;

S203.读取升级代码文件,并将更新代码一内的更新代码数据写入flash存储器内的用户代码区;

S204.将更新代码索引的值设置为0;

S205.运行用户代码区内的更新程序;

S206.判断更新程序是否正常运行;

即判断更新程序的运行时间是否超过10s,若是,则将更新标识的值设置为0,若否,则直接进行复位操作,并进入回溯阶段。

实施例二

本发明实施例二为车载控制终端回溯至当前版本的程序的流程,在上述实施例一S206中,更新程序的运行时间未超过10s,则启动该流程,从而车载控制终端运行的软件回溯至当前版本(或上一版本),确保车载控制终端的正常运行,提高车载控制终端运行的可靠性和稳定性。

S301.车载控制终端复位;

S302.读取升级代码文件内更新标识的值,在该值为0xaabb4455的情况下,获取更新代码索引的值,在更新代码索引的值为0的情况下,将更新代码二内的当前版本的代码数据写入flash存储器内的用户代码区;

S303.将更新代码索引的值设置为1;

S304.运行flash存储器内用户代码区内的当前版本(即上一版本)的程序;

S305.判断当前版本的程序是否正常运行;

即判断当前版本的程序的运行时间是否超过10s,若是,则将更新标识的值设置为0并进入正常的工作流程。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1