一种刷新控制器程序的方法及装置与流程

文档序号:12665694阅读:309来源:国知局
一种刷新控制器程序的方法及装置与流程

本发明涉及车辆技术领域,特别涉及一种刷新控制器程序的方法及装置。



背景技术:

在汽车开发阶段或者后期维护的过程中,需要实现控制器的刷新,在整车未拆解任何部件的情况下升级控制器应用软件或标定代码,操作便捷。一般控制器根据刷新文件来实现升级。

目前,控制器的刷新文件的地址一般为S19格式的文件,对于十六进制格式的刷新文件,目前还没有适用的刷新控制器程序的方法。



技术实现要素:

有鉴于此,本发明提供一种刷新控制器程序的方法及装置,可采用十六进制格式的刷新文件对控制器的程序进行刷新。

具体而言,包括以下的技术方案:

一方面,本发明提供了一种刷新控制器程序的方法,包括:

找到外部设备存储的十六进制格式的刷新文件;

获取所述刷新文件中的第一个段地址行和第一个数据类型记录行,或者第一个线性地址行和所述第一个数据类型记录行;

根据所述第一个段地址行和所述第一个数据类型记录行,或者所述第一个线性地址行和所述第一个数据类型记录行,计算得到起始地址;

获取所述刷新文件中的最后一个段地址行和最后一个数据类型记录行,或者最后一个线性地址行和所述最后一个数据类型记录行;

根据所述最后一个段地址行和所述最后一个数据类型记录行,或者所述最后一个线性地址行和所述最后一个数据类型记录行,计算得到结束地址;

根据所述起始地址和所述结束地址,计算得到所述刷新文件的大小;

根据所述刷新文件的大小,准备所述控制器的相应的存储空间;

将所述外部设备存储的所述刷新文件发送至所述存储空间。

可选择地,所述根据所述第一个段地址行和所述第一个数据类型记录行,或者所述第一个线性地址行和所述第一个数据类型记录行,计算得到起始地址,包括:

根据所述第一个段地址行获取第一段地址,或者根据所述第一个线性地址行获取第一线性地址,根据所述第一个数据类型记录行获取第一偏移地址,并根据所述第一段地址和所述第一偏移地址,或者根据所述第一线性地址和所述第一偏移地址,计算得到起始地址。

可选择地,所述起始地址的计算公式为:

起始地址=第一段地址或第一线性地址左移4位二进制字符+第一偏移地址。

可选择地,所述根据所述最后一个段地址行和所述最后一个数据类型记录行,或者所述最后一个线性地址行和所述最后一个数据类型记录行,计算得到结束地址,包括:

根据所述最后一个段地址行获取第二段地址,或者根据所述最后一个线性地址行获取第二线性地址,根据所述最后一个数据类型记录行获取第二偏移地址和最后一个数据类型记录行的数据长度,并根据所述第二段地址、所述第二偏移地址和所述最后一个数据类型记录行的数据长度,或者根据所述第二线性地址、所述第二偏移地址和所述最后一个数据类型记录行的数据长度,计算得到结束地址。

可选择地,所述结束地址的计算公式为:

结束地址=第二段地址或第二线性地址左移16位二进制字符+第二偏移地址+最后一个数据类型记录行的数据长度-1。

可选择地,所述刷新文件的大小的计算公式为:

刷新文件的大小=结束地址-起始地址+1。

另一方面,本发明还提供了一种刷新控制器程序的装置,包括:

查找模块,用于找到外部设备存储的十六进制格式的刷新文件;

第一获取模块,用于获取所述刷新文件中的第一个段地址行和第一个数据类型记录行,或者第一个线性地址行和所述第一个数据类型记录行;

第一计算模块,用于根据所述第一个段地址行和所述第一个数据类型记录行,或者所述第一个线性地址行和所述第一个数据类型记录行,计算得到起始地址;

第二获取模块,用于获取所述刷新文件中的最后一个段地址行和最后一个数据类型记录行,或者最后一个线性地址行和所述最后一个数据类型记录行;

第二计算模块,用于根据所述最后一个段地址行和所述最后一个数据类型记录行,或者所述最后一个线性地址行和所述最后一个数据类型记录行,计算得到结束地址;

第三计算模块,用于根据所述起始地址和所述结束地址,计算得到所述刷新文件的大小;

准备模块,用于根据所述刷新文件的大小,准备所述控制器的相应的存储空间;

发送模块,用于将所述外部设备存储的所述刷新文件发送至所述存储空间。

可选择地,所述第一计算模块具体用于:

根据所述第一个段地址行获取第一段地址,或者根据所述第一个线性地址行获取第一线性地址,根据所述第一个数据类型记录行获取第一偏移地址,并根据所述第一段地址和所述第一偏移地址,或者根据所述第一线性地址和所述第一偏移地址,计算得到起始地址。

可选择地,所述起始地址的计算公式为:

起始地址=第一段地址或第一线性地址左移4位二进制字符+第一偏移地址。

可选择地,所述第二计算模块具体用于:

根据所述最后一个段地址行获取第二段地址,或者根据所述最后一个线性地址行获取第二线性地址,根据所述最后一个数据类型记录行获取第二偏移地址和最后一个数据类型记录行的数据长度,并根据所述第二段地址、所述第二偏移地址和所述最后一个数据类型记录行的数据长度,或者根据所述第二线性地址、所述第二偏移地址和所述最后一个数据类型记录行的数据长度,计算得到结束地址。

可选择地,所述结束地址的计算公式为:

结束地址=第二段地址或第二线性地址左移16位二进制字符+第二偏移地址+最后一个数据类型记录行的数据长度-1。

可选择地,所述刷新文件的大小的计算公式为:

刷新文件的大小=结束地址-起始地址+1。

本发明实施例提供的技术方案的有益效果:

本发明提供的刷新控制器程序的方法及装置,找到外部设备存储的十六进制格式的刷新文件,获取刷新文件的起始地址和结束地址,并根据起始地址和结束地址计算得到刷新文件的大小;之后根据刷新文件的大小准备控制器的相应的存储空间,然后将刷新文件发送至控制器的存储空间,完成控制器程序的刷新。本发明提供的方法及装置,可以采用十六进制格式的刷新文件对控制器的程序进行刷新。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

附图1为本发明一实施例中一种刷新控制器程序的方法的流程图;

附图2为本发明一实施例中X控制器的十六进制格式的刷新文件的一部分;

附图3为本发明一实施例中X控制器的十六进制格式的刷新文件的一部分;

附图4为本发明一实施例中X控制器的十六进制格式的刷新文件的一部分;

附图5为本发明一实施例中刷新工具擦除相应的存储空间并发送刷新文件至存储空间的具体数据流;

附图6为本发明一实施例中一种刷新控制器程序的装置的框图。

具体实施方式

为使本发明的技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

实施例一

本实施例提供了一种刷新控制器程序的方法,如图1所示,包括步骤S101、S102、S103、S104、S105、S106、S107和S108。下面将对各步骤进行具体介绍。

步骤S101:找到外部设备存储的十六进制格式的刷新文件。

具体的,外部设备可为存储设备或者刷新工具。一般采用刷新工具对控制器进行刷新,则可将刷新文件存储在刷新工具中。刷新工具根据控制器的程序的版本,找到需要的十六进制格式的刷新文件。

在该步骤之前,需要进行的工作如下:检验控制器的刷新条件;刷新工具读取控制器的软硬件版本并进行显示,以便用户读取并判断控制器是否需要刷新;为了防止整车所有控制器在刷新阶段存储故障码,关闭控制器的故障码识别、存储功能,为刷新让出总线带宽,关闭控制器的常规报文传送。

步骤S102:获取刷新文件中的第一个段地址行和第一个数据类型记录行,或者第一个线性地址行和第一个数据类型记录行。

具体地,刷新工具根据找到的十六进制格式的刷新文件并读取,获取刷新文件中的第一个段地址行和第一个数据类型记录行,或者第一个线性地址行和第一个数据类型记录行。

十六进制格式的文件中有3种不同的行:地址定位行、代码数据行和结尾标志行,每行格式:LLAAAATTDDDDCC,其中LL是长度,即数据部分DDDD的字节数;AAAA是地址,代表该行的数据的起始地址,仅在代码数据行中有意义,在其余类型行中为“0000”;TT是行的类型,00代表代码数据行,01代表结尾标志行,02代表段地址行,03代表开始段地址行,04代表线性地址行,05代表开始线性地址行;CC是校验和域,表示每行记录的校验和。通过将该行记录当中所有16进制编码数字对的值相加,以256为模进行以下补足计算得出。在十六进制格式的刷新文件中,段地址行和线性地址行有且只能存在一种类型。

步骤S103:根据第一个段地址行和第一个数据类型记录行,或者第一个线性地址行和第一个数据类型记录行,计算得到起始地址。

具体地,根据刷新文件的第一个段地址行获取第一段地址,或者第一个线性地址行获取第一线性地址,根据第一个数据类型记录行获取第一偏移地址,并根据第一段地址和第一偏移地址,或者根据第一线性地址和第一偏移地址,计算得到起始地址。

其中,起始地址的计算公式为:

起始地址=第一段地址或第一线性地址左移4位二进制字符(1位十六进制字符)+第一偏移地址。

如图2所示,为X控制器的十六进制格式的刷新文件的一部分。从图2中可以得知,刷新文件的第一段地址为0000,第一偏移地址为2000,则起始地址=0000左移4位二进制字符(1位十六进制字符)+2000=0x00002000。

步骤S104:获取刷新文件中的最后一个段地址行和最后一个数据类型记录行,或者最后一个线性地址行和最后一个数据类型记录行。

具体地,刷新工具根据找到的十六进制格式的刷新文件并读取,找到刷新文件中的最后一个段地址行和最后一个数据类型记录行,或者最后一个线性地址行和最后一个数据类型记录行。

步骤S105:根据最后一个段地址行和最后一个数据类型记录行,或者最后一个线性地址行和最后一个数据类型记录行,计算得到结束地址。

根据最后一个段地址行获取第二段地址,或者根据最后一个线性地址行获取第二线性地址,根据最后一个数据类型记录行获取第二偏移地址和最后一个数据类型记录行的长度,并根据第二段地址、第二偏移地址和最后一个数据类型记录行的长度,或者根据第二线性地址、第二偏移地址和最后一个数据类型记录行的长度,计算得到结束地址。

结束地址的计算公式为:

结束地址=第二段地址或第二线性地址左移16位二进制字符(4位十六进制字符)+第二偏移地址+最后一个数据类型记录行的数据长度-1。

图3为X控制器的十六进制格式的刷新文件的一部分。从图3中可以得知,刷新文件的第二段地址为1000。

图4为X控制器的十六进制格式的刷新文件的一部分。从图4可以得知,第二偏移地址为5FF0,最后一个数据类型记录行的长度为10,则结束地址=1000左移16位二进制字符(4位十六进制字符)+5FF0+10-1=0x000125FFF。

步骤S106:根据起始地址和结束地址,计算得到刷新文件的大小。

刷新文件的大小的计算公式为:

刷新文件的大小=结束地址-起始地址+1。

X控制器的刷新文件的大小是从0开始定义的,因此无需加1。国际标准定义中,刷新地址和刷新大小都是从0x00000001开始计数,此时需要加1。

X控制器的刷新文件的大小=0x000125FFF-0x00002000=0x00013FFF。

步骤S107:根据刷新文件的大小,准备控制器的相应的存储空间。

根据计算得到的刷新文件的大小,在控制器中准备相应的存储空间。具体的,可以是未存储文件的空白的存储空间,也可以是擦除旧版本的刷新文件,清理出的相应的空间。

步骤S108:将外部设备存储的刷新文件发送至控制器的存储空间。

在该步骤之前,需要控制器响应刷新请求。在控制器响应刷新请求后,刷新工具将需要的刷新文件发送至已经准备好的控制器相应的存储空间,完成对控制器程序的刷新。

图5为刷新工具擦除相应的存储空间并发送刷新文件至存储空间的具体数据流。

需要说明的是,可将所有的控制器的刷新文件的格式进行统一,均为十六进制格式,并且定义刷新文件每行数据记录中数据域中的数据长度一致,如果实际数据的长度不够,则刷新工具计算预留位数据的长度,并在刷新数据中补齐默认填充值FF。则所有控制器可共用一个刷新程序,可提高控制器刷新的效率。

本实施例提供的刷新控制器程序的方法,可采用十六进制格式的刷新文件对控制器的程序进行刷新。

实施例二

本实施例提供了一种刷新控制器程序的装置,如图6所示,包括查找模块201、第一获取模块202、第一计算模块203、第二获取模块204、第二计算模块205、第三计算模块206、准备模块207和发送模块208。下面将对各模块进行具体介绍。

查找模块201,用于找到外部设备存储的十六进制格式的刷新文件。

具体的,外部设备可为存储设备或者刷新工具。一般采用刷新工具对控制器进行刷新,则可将刷新文件存储在刷新工具中。查找模块201根据控制器的程序的版本,找到需要的十六进制格式的刷新文件。

在查找模块201查找之前,需要进行的工作如下:检验控制器的刷新条件;读取控制器的软硬件版本并进行显示,以便用户读取并判断控制器是否需要刷新;为了防止整车所有控制器在刷新阶段存储故障码,关闭控制器的故障码识别、存储功能,为刷新让出总线带宽,关闭控制器的常规报文传送。

第一获取模块202,用于获取刷新文件中的第一个段地址行和第一个数据类型记录行,或者第一个线性地址行和第一个数据类型记录行。

第一获取模块202根据查找模块201找到的十六进制格式的刷新文件并读取,找到刷新文件中的第一个段地址行和第一个数据类型记录行,或者第一个线性地址行和第一个数据类型记录行。

十六进制格式的文件中有3种不同的行:地址定位行、代码数据行和结尾标志行,每行格式:LLAAAATTDDDDCC,其中LL是长度,即数据部分DDDD的字节数;AAAA是地址,代表该行的数据的起始地址,仅在代码数据行中有意义,在其余类型行中为“0000”;TT是行的类型,00代表代码数据行,01代表结尾标志行,02代表段地址行,03代表开始段地址行,04代表线性地址行,05代表开始线性地址行;CC是校验和域,表示每行记录的校验和。通过将该行记录当中所有16进制编码数字对的值相加,以256为模进行以下补足计算得出。在刷新文件中,段地址行和线性地址行有且只能存在一种类型。

第一计算模块203,用于根据第一个段地址行和第一个数据类型记录行,或者第一个线性地址行和第一个数据类型记录行,计算得到起始地址。

第一计算模块203具体用于:根据刷新文件的第一个段地址行获取第一段地址,或者第一个线性地址行获取第一线性地址,根据第一个数据类型记录行获取第一偏移地址,并根据第一段地址和第一偏移地址、或者根据第一线性地址和第一偏移地址,计算得到起始地址。

其中,起始地址的计算公式为:

起始地址=第一段地址或第一线性地址左移4位二进制字符(1位十六进制字符)+第一偏移地址。

第二获取模块204,用于获取刷新文件中的最后一个段地址行和最后一个数据类型记录行,或者最后一个线性地址行和最后一个数据类型记录行。

第二获取模块204根据找到的十六进制格式的刷新文件并读取,找到刷新文件中的最后一个段地址行和最后一个数据类型记录行,或者最后一个线性地址行和最后一个数据类型记录行。

第二计算模块205,用于根据最后一个段地址行和最后一个数据类型记录行,或者最后一个线性地址行和最后一个数据类型记录行,计算得到结束地址。

第二计算模块205具体用于:根据最后一个段地址行获取第二段地址,或者根据最后一个线性地址行获取第二线性地址,根据最后一个数据类型记录行获取第二偏移地址和最后一个数据类型记录行的数据长度,并根据第二段地址、第二偏移地址和最后一个数据类型记录行的数据长度,或者根据第二线性地址、第二偏移地址和最后一个数据类型记录行的数据长度,计算得到结束地址。

结束地址的计算公式为:

结束地址=第二段地址或第二线性地址左移16位二进制字符(4位十六进制字符)+第二偏移地址+最后一个数据类型记录行的数据长度-1。

第三计算模块206,用于根据起始地址和结束地址,计算得到刷新文件的大小。

刷新文件的大小的计算公式为:

刷新文件的大小=结束地址-起始地址+1。

准备模块207,用于根据刷新文件的大小准备控制器的相应的存储空间。

准备模块207根据计算得到的刷新文件的大小,在控制器中准备相应的存储空间。具体的,准备的存储空间可以是未存储文件的空白的存储空间,也可以是擦除旧版本的刷新文件,清理出的相应的空间。

发送模块208,用于将外部设备存储的刷新文件发送至控制器的存储空间。

在此之前,需要控制器响应刷新请求。在控制器响应刷新请求后,发送模块208将需要的刷新文件发送至已经准备好的控制器相应的存储空间,完成控制器程序的刷新。

由于实施例二与实施例一对应,所能带来的有益效果相同,在此不再进行赘述。

在本申请所提供的实施例中,应该理解到,所提供的方法和装置,仅仅是示意性的,例如,所述步骤和模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。上述方法和装置可以通过计算机装置运行相应的软件和硬件来实现。术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。

以上所述仅是为了便于本领域的技术人员理解本发明的技术方案,并不用以限制本发明。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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