软件升级系统及软件升级方法与流程

文档序号:12733132阅读:213来源:国知局
软件升级系统及软件升级方法与流程

本发明涉及一种软件升级系统及软件升级方法。



背景技术:

目前,电动汽车正在逐渐推广并在未来将具有广阔的前景。为了提升电动汽车的性能,需要经常对电动汽车的电子部件(如BMS(Battery Management System,电池管理系统)等)进行软件升级。现有的软件升级方法主要分成以下两类,第一类方案简单,设计成本低,但稳定性欠佳,非法操作容易导致电子部件损坏;第二类稳定可靠,但结构复杂,开发成本高,因此,现有的软件升级方法均存在缺陷,无法令用户满意。

鉴于此,实有必要提供一种软件升级系统及软件升级方法以克服以上缺陷。



技术实现要素:

本发明的目的是提供一种开发成本低且稳定性高的软件升级系统。

为了实现上述目的,本发明提供一种软件升级系统,所述软件升级系统包括上位机、多个下位机及CAN总线,所述上位机通过所述CAN总线与每个下位机通讯,所述上位机及每个下位机具有地址,所述上位机通过寻址的方式访问需要升级的下位机,并向需要升级的下位机发送升级申请,所述上位机还判断是否接收到需要升级的下位机反馈的确认升级的信号,并在接收到需要升级的下位机反馈的确认升级的信号时,将升级文件的每一行分解成多个CAN帧,且将每一行升级文件的多个CAN帧发送给需要升级的下位机,所述上位机还在每一行升级文件的多个CAN帧发送完后,判断是否接收到需要升级的下位机回应的就绪信号,并在接收到需要升级的下位机回应所述就绪信号时,判断刚发送完的那一行升级文件是否是所述升级文件的最后一行,且在刚发送完的那一行升级文件是所述升级文件的最后一行时,所述上位机确认升级文件已经发送完,需要升级的下位机完成升级并进入app的工作模式。

进一步地,所述上位机包括主控模块及/或诊断接口;所述主控模块包括通讯单元,所述主控模块通过所述通讯单元与远程服务器通讯,以接收所述远程服务器发送的升级文件及升级指令,并根据所述升级指令将所述升级文件发送给需要升级的下位机;所述诊断接口用于连接升级设备,所述升级设备通过所述诊断接口及所述CAN总线与需要升级的下位机进行通讯,以将升级文件发送给需要升级的下位机。

进一步地,需要升级的下位机在接收到所述升级申请后,判断自身是否处于bootloader的工作模式,并在自身处于bootloader的工作模式时,反馈确认升级的信号给所述上位机,且在自身没有处于bootloader的工作模式时,接收所述升级申请,并将所述升级申请存储在存储器中,且上电复位并进入bootloader的工作模式;在进入bootloader的工作模式后,需要升级的下位机判断所述存储器是否存储所述升级申请,并在所述存储器存储所述升级申请时,反馈确认升级的信号给所述上位机,且在所述存储器没有存储所述升级申请时,判断在预设时间内是否接收到所述升级申请,还在预设时间内接收到所述升级申请时,反馈确认升级的信号给所述上位机。

进一步地,所述上位机还在每一行升级文件的多个CAN帧发送完后,发送行结束信号给需要升级的下位机,需要升级的下位机在接收到所述行结束信号后校验该行升级文件是否正确,并在该行升级文件不正确时,回应校验错误的信号给所述上位机,且在该行升级文件正确时,回应繁忙的信号给所述上位机,并对该行升级文件进行烧录,且在烧录完成后回应所述就绪信号给所述上位机。

进一步地,所述升级文件的格式包括摩托罗拉s-recode格式及/或英特尔hex格式。

本发明的目的是还提供一种开发成本低且稳定性高的软件升级方法。

为了实现上述目的,本发明提供一种软件升级方法,所述软件升级方法包括:

提供由上位机、多个下位机及CAN总线组成的CAN通讯网络;

所述上位机通过寻址的方式访问需要升级的下位机,并向需要升级的下位机发送升级申请;

所述上位机判断是否接收到需要升级的下位机反馈的确认升级的信号;

当接收到需要升级的下位机反馈的确认升级的信号时,所述上位机将升级文件的每一行分解成多个CAN帧,并将每一行升级文件的多个CAN帧发送给需要升级的下位机;

在每一行升级文件的多个CAN帧发送完后,所述上位机判断是否接收到需要升级的下位机回应的就绪信号;

当接收到需要升级的下位机回应所述就绪信号时,所述上位机判断刚发送完的那一行升级文件是否是所述升级文件的最后一行;以及

当刚发送完的那一行升级文件是所述升级文件的最后一行时,所述上位机确认升级文件已经发送完,需要升级的下位机完成升级并进入app的工作模式。

进一步地,“所述上位机判断是否接收到需要升级的下位机反馈的确认升级的信号”包括:

需要升级的下位机在接收到所述升级申请后,判断自身是否处于bootloader的工作模式;以及

当自身处于bootloader的工作模式时,需要升级的下位机反馈确认升级的信号给所述上位机。

进一步地,“所述上位机判断是否接收到需要升级的下位机反馈的确认升级的信号”还包括:

当自身没有处于bootloader的工作模式时,需要升级的下位机接收所述升级申请,并将所述升级申请存储在存储器中;

需要升级的下位机上电复位并进入bootloader的工作模式;

需要升级的下位机判断所述存储器是否存储所述升级申请;

当所述存储器存储所述升级申请时,需要升级的下位机反馈确认升级的信号给所述上位机;

当所述存储器没有存储所述升级申请时,需要升级的下位机判断在预设时间内是否接收到所述升级申请;以及

当在预设时间内接收到所述升级申请时,需要升级的下位机反馈确认升级的信号给所述上位机。

进一步地,“所述上位机在每一行升级文件的多个CAN帧发送完后判断是否接收到需要升级的下位机回应的就绪信号”包括:

所述上位机在每一行升级文件的多个CAN帧发送完后,发送行结束信号给需要升级的下位机;

需要升级的下位机在接收到所述行结束信号后校验该行升级文件是否正确;

当该行升级文件不正确时,需要升级的下位机回应校验错误的信号给所述上位机;以及

当该行升级文件正确时,需要升级的下位机回应繁忙的信号给所述上位机,并对该行升级文件进行烧录,且在烧录完成后回应所述就绪信号给所述上位机。

进一步地,所述软件升级方法还包括:

当没有接收到需要升级的下位机回应的就绪信号时,所述上位机重新发送该行升级文件给需要升级的下位机,并执行“所述上位机在每一行升级文件的多个CAN帧发送完后判断是否接收到需要升级的下位机回应的就绪信号”。

相比于现有技术,本发明利用所述上位机、所述多个下位机及所述CAN总线组成的CAN通讯网络,从而降低了系统的开发成本。本发明通过所述上位机将所述升级文件的每一行分解成多个CAN帧,以使所述升级文件中的数据能符合CAN通讯协议,从而能顺利地传输给需要升级的下位机,进而提高了系统的可靠性。本发明还通过所述上位机在每一行升级文件的多个CAN帧发送完后,判断是否接收到需要升级的下位机回应的就绪信号,以使需要升级的下位机不需对接收到的每个CAN帧作回应,从而节省了时间且提高了系统的稳定性及可靠性。

【附图说明】

图1为本发明的实施例提供的软件升级系统的原理框图。

图2为本发明的实施例提供的软件升级方法的流程图。

图3为图2中步骤S3的子流程图。

图4为图2中步骤S5的子流程图。

【具体实施方式】

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人士在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

当一个元件被认为与另一个元件“相连”时,它可以是直接连接到另一个元件或者可能同时存在居中元件。除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人士通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

请参阅图1,图1为本发明的实施例提供的软件升级系统100的原理框图。所述软件升级系统100包括上位机10、多个下位机20及CAN(Controller Area Network,控制器局域网)总线30。所述上位机10通过所述CAN总线30与每个下位机20通讯,所述上位机10及每个下位机20具有地址。所述上位机10通过寻址的方式访问需要升级的下位机20,并向需要升级的下位机20发送升级申请。所述上位机10还判断是否接收到需要升级的下位机20反馈的确认升级的信号,并在接收到需要升级的下位机20反馈的确认升级的信号时,将升级文件的每一行分解成多个CAN帧,且将每一行升级文件的多个CAN帧发送给需要升级的下位机20。所述上位机10还在每一行升级文件的多个CAN帧发送完后,判断是否接收到需要升级的下位机20回应的就绪信号,并在接收到需要升级的下位机20回应所述就绪信号时,判断刚发送完的那一行升级文件是否是所述升级文件的最后一行,且在刚发送完的那一行升级文件是所述升级文件的最后一行时,所述上位机10确认升级文件已经发送完,需要升级的下位机20完成升级并进入app的工作模式。

所述上位机10包括主控模块12及/或诊断接口16。所述主控模块12包括通讯单元15,所述主控模块12通过所述通讯单元15与远程服务器50通讯,以接收所述远程服务器50发送的升级文件及升级指令,并根据所述升级指令将所述升级文件发送给需要升级的下位机20,以完成对需要升级的下位机20的升级。所述诊断接口16用于连接升级设备60。所述升级设备60通过所述诊断接口16及所述CAN总线30与需要升级的下位机20进行通讯,以将升级文件发送给需要升级的下位机20,从而完成对需要升级的下位机20的升级。

需要升级的下位机20在接收到所述升级申请后,判断自身是否处于bootloader的工作模式,并在自身处于bootloader的工作模式时,反馈确认升级的信号给所述上位机10,且在自身没有处于bootloader的工作模式时,接收所述升级申请,并将所述升级申请存储在存储器(图未示)中,且上电复位并进入bootloader的工作模式。在进入bootloader的工作模式后,需要升级的下位机20判断所述存储器是否存储所述升级申请,并在所述存储器存储所述升级申请时,反馈确认升级的信号给所述上位机10,且在所述存储器没有存储所述升级申请时,判断在预设时间内是否接收到所述升级申请,还在预设时间内接收到所述升级申请时,反馈确认升级的信号给所述上位机10。

由此可知,需要升级的下位机20在处于bootloader的工作模式时,只要所述存储器存储所述升级申请或在预设时间内接收到所述升级申请,均可以反馈确认升级的信号给所述上位机10,因此,即使app或所述存储器出现故障无法存储所述升级申请,需要升级的下位机20也能在预设时间内接收到所述升级申请后,反馈确认升级的信号给所述上位机10,从而使软件升级能顺利进行,进而提高了系统的容错性及可靠性。

在本实施方式中,每个下位机20的工作模式包括bootloader的工作模式及app的工作模式。bootloader的工作模式是指下位机20正在运行bootloader(即启动记载程序),app的工作模式是指下位机20正在运行app(即应用程序或业务逻辑代码)。下位机20可以从bootloader的工作模式直接进入app的工作模式,但从app的工作模式进入bootloader的工作模式,则需要先进行系统复位,然后再进入bootloader的工作模式,这样能保证bootloader不会在任何时刻被异常访问。软件升级需在下位机20处于bootloader的工作模式时进行,因此,当需要升级的下位机20在app的工作模式下接收到所述升级申请时,会将所述升级申请存储在存储器中,且上电复位并进入bootloader的工作模式。

所述上位机10还在每一行升级文件的多个CAN帧发送完后,发送行结束信号给需要升级的下位机20。需要升级的下位机20在接收到所述行结束信号后校验该行升级文件是否正确,并在该行升级文件不正确时,回应校验错误的信号给所述上位机10,且在该行升级文件正确时,回应繁忙的信号给所述上位机10,并对该行升级文件进行烧录,且在烧录完成后回应所述就绪信号给所述上位机10。当所述上位机10没有接收到需要升级的下位机20回应的就绪信号,而是接收到需要升级的下位机20回应的其它信号(如校验错误的信号、烧录错误的信号)时,所述上位机10重新发送该行升级文件给需要升级的下位机20。

在本实施方式中,由于需要升级的下位机20校验每行升级文件是否正确,且以行为单位对所述升级文件进行烧录,而不是对每个CAN帧进行检验及烧录,从而提高了校验及烧录的效率且保证了数据传输的可靠性,进而提高了系统的可靠性。

在本实施方式中,所述升级文件的格式包括摩托罗拉s-recode格式(如*.s19、*.sx、*.mot等)及/或英特尔hex格式(如*.hex等)。可以理解,所述摩托罗拉s-recode格式的升级文件及所述英特尔hex格式的升级文件均自带地址信息,以行为单位且能达成统一的特性。基于CAN的通讯一次只能传输8个字节的数据,而所述升级文件一行的数据往往大于8个字节,因此,在本实施方式中,所述上位机10将所述升级文件的每一行分解成多个CAN帧,以使所述升级文件中的数据能符合CAN通讯协议,从而能顺利地传输给需要升级的下位机20,进而提高了系统的可靠性。另外,由于所述摩托罗拉s-recode格式的升级文件及所述英特尔hex格式的升级文件具有相应的校验算法,因此,无需投入大量的人力研究特定的校验算法,从而进一步降低了系统的开发成本。

请参阅图2,图2为本发明的实施例提供的软件升级方法的流程图。根据不同的需求,图2所示的流程图中的步骤的执行顺序可以改变,某些步骤可以拆分为几个步骤,某些步骤可以省略。

步骤S1,提供由上位机10、多个下位机20及CAN总线30组成的CAN通讯网络。所述上位机10通过所述CAN总线30与每个下位机20通讯,所述上位机10及每个下位机20具有地址。

步骤S2,所述上位机10通过寻址的方式访问需要升级的下位机20,并向需要升级的下位机20发送升级申请。

步骤S3,所述上位机10判断是否接收到需要升级的下位机20反馈的确认升级的信号。当接收到需要升级的下位机20反馈的确认升级的信号时,执行步骤S4;当没有接收到需要升级的下位机20反馈的确认升级的信号时,执行步骤S2。

步骤S4,所述上位机10将升级文件的每一行分解成多个CAN帧,并将每一行升级文件的多个CAN帧发送给需要升级的下位机20。

步骤S5,在每一行升级文件的多个CAN帧发送完后,所述上位机10判断是否接收到需要升级的下位机20回应的就绪信号。当接收到需要升级的下位机20回应所述就绪信号时,执行步骤S6;当没有接收到需要升级的下位机20回应所述就绪信号时,执行步骤S7。

步骤S6,所述上位机10判断刚发送完的那一行升级文件是否是所述升级文件的最后一行。当刚发送完的那一行升级文件是所述升级文件的最后一行时,执行步骤S8;当刚发送完的那一行升级文件不是所述升级文件的最后一行时,执行步骤S4。

步骤S7,所述上位机10重新发送该行升级文件给需要升级的下位机20,并执行步骤S5。

步骤S8,所述上位机10确认升级文件已经发送完,需要升级的下位机20完成升级并进入app的工作模式。

请参阅图3,图3为图2中步骤S3的子流程图。根据不同的需求,图3所示的流程图中的步骤的执行顺序可以改变,某些步骤可以拆分为几个步骤,某些步骤可以省略。

步骤S31,需要升级的下位机20在接收到所述升级申请后,判断自身是否处于bootloader的工作模式。当自身处于bootloader的工作模式时,执行步骤S32;当自身没有处于bootloader的工作模式时,执行步骤S33。

步骤S32,需要升级的下位机20反馈确认升级的信号给所述上位机10。

步骤S33,需要升级的下位机20接收所述升级申请,并将所述升级申请存储在存储器中。

步骤S34,需要升级的下位机20上电复位并进入bootloader的工作模式。

步骤S35,需要升级的下位机20判断所述存储器是否存储所述升级申请。当所述存储器没有存储所述升级申请时,执行步骤S32;当所述存储器没有存储所述升级申请时,执行步骤S36。

步骤S36,需要升级的下位机20判断在预设时间内是否接收到所述升级申请。当在预设时间内接收到所述升级申请时,执行步骤S32。

请参阅图4,图4为图2中步骤S5的子流程图。根据不同的需求,图4所示的流程图中的步骤的执行顺序可以改变,某些步骤可以拆分为几个步骤,某些步骤可以省略。

步骤S51,所述上位机10在每一行升级文件的多个CAN帧发送完后,发送行结束信号给需要升级的下位机20。

步骤S52,需要升级的下位机20在接收到所述行结束信号后校验该行升级文件是否正确。当该行升级文件不正确时,执行步骤S53;当该行升级文件正确时,执行步骤S54。

步骤S53,需要升级的下位机20回应校验错误的信号给所述上位机10。

步骤S54,需要升级的下位机20回应繁忙的信号给所述上位机10,并对该行升级文件进行烧录,且在烧录完成后回应所述就绪信号给所述上位机10。

本发明利用所述上位机10、所述多个下位机20及所述CAN总线30组成的CAN通讯网络,从而降低了系统的开发成本。本发明通过所述上位机10将所述升级文件的每一行分解成多个CAN帧,以使所述升级文件中的数据能符合CAN通讯协议,从而能顺利地传输给需要升级的下位机20,进而提高了系统的可靠性。本发明还通过所述上位机10在每一行升级文件的多个CAN帧发送完后,判断是否接收到需要升级的下位机20回应的就绪信号,以使需要升级的下位机20不需对接收到的每个CAN帧作回应,从而节省了时间且提高了系统的稳定性及可靠性。

本发明并不仅仅限于说明书和实施方式中所描述,因此对于熟悉领域的人士而言可容易地实现另外的优点和修改,故在不背离权利要求及等同范围所限定的一般概念的精神和范围的情况下,本发明并不限于特定的细节、代表性的设备和这里示出与描述的图示示例。

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