程序的更新方法以及更新系统与流程

专利查询3月前  32



1.本公开涉及程序的更新方法以及更新系统。


背景技术:

2.例如,公知有如下方法:在更新控制装置等的程序的情况下,并不是将更新程序(新文件)的全部数据发送至更新对象的控制装置,而是生成更新程序与成为基础的程序(旧文件)的差分数据,并将该差分数据发送至更新对象的控制装置。作为差分数据的生成手法,例如在日本特开2003-337723中公开了一种从新文件的开头起按规定数据单位(例如1字节单位)将数据与旧文件依次进行比较来生成差分数据的手法(参照日本特开2003-337723)。
3.这里,若将旧文件的整个范围作为对象来对检索对象的数据(检索对象数据)进行检索,则存在处理需要大量的时间的可能性。鉴于此,存在对于旧文件设定检索范围的情况。在旧文件中,例如有时将重点放到比检索对象数据在新文件上的地址靠后方的地址来设定检索范围。这样一来,例如在进行程序追加的情况下,因在比自身靠前方的地址追加了程序而在新文件中可能存在位于比旧文件中的地址靠后方的数据。换言之,由于这样的数据在旧文件中位于比新文件中的地址靠前方,所以脱离检索对象,导致被作为差分而提取。若存在大量的这样的数据,则差分数据的容量变大,存在程序的更新所需时间增加的可能性。


技术实现要素:

4.本公开是为了解决上述课题而完成的,其目的在于,在使用了差分数据的程序的更新中抑制差分数据的容量增加。
5.本公开所涉及的程序的更新方法是从第1装置向第2装置发送第1程序与第2程序的差分数据、并基于上述差分数据来将安装于第2装置的控制程序更新为第2程序的程序的更新方法。该更新方法在第1装置中包括:取得第1程序的步骤;取得第2程序,并以检索范围为对象来对第1程序中是否包含按检索单位分割的检索对象数据进行检索的步骤;当第1程序中包含检索对象数据的情况下,不提取该检索对象数据作为差分,当第1程序中不包含检索对象数据的情况下,提取该检索对象数据作为差分来生成差分数据的步骤;以及向第2装置输出所生成的差分数据的步骤。检索范围在第1程序中被设定为和位于比与第2程序的检索对象数据相同的地址靠前方的地址的数据相比,包括更多位于后方的地址的数据。在第1程序的开头区域设置有不包含作为程序的数据的偏移区域。
6.本公开的其他方面所涉及的更新系统是将第1程序与第2程序的差分数据发送至更新对象装置、并基于上述差分数据来将安装于更新对象装置的控制程序更新为第2程序的更新系统。更新系统具备:第1存储装置,存储第1程序;第2存储装置,存储第2程序;以及差分提取装置,生成上述差分数据并发送至更新对象装置。差分提取装置从第1存储装置以及第2存储装置分别取得第1程序以及第2程序,按每个检索单位以检索范围为对象来检索
第1程序中是否包含第2程序的检索对象数据,在第1程序中包含检索对象数据的情况下,不提取该检索对象数据作为差分,在第1程序中不包含检索对象数据的情况下,提取该检索对象数据作为差分来生成差分数据。检索范围在第1程序中被设定为和位于比与第2程序的检索对象数据相同的地址靠前方的地址的数据相比,包括更多位于后方的地址的数据。在第1程序的开头区域设置有不包含作为程序的数据的偏移区域。
7.根据上述结构,检索范围在第1程序中被设定为和位于比与第2程序的检索对象数据相同的地址靠前方的地址的数据相比,包括更多位于后方的地址的数据。而且,在第1程序的开头区域设置有不包含作为程序的数据的偏移区域。通过设置偏移区域,例如即便在进行程序追加并因此存在地址被变更了的数据的情况下,也可抑制第2程序中的该数据的地址比第1程序中的该数据的地址位于靠后方的情况。因而,检索该数据的情况下的检索范围能够包含该数据。因此,能够抑制将检索对象数据提取为差分这一情况,能够抑制差分数据的容量增加。
8.在某个实施方式中,第1程序是为了更新控制程序而安装于第2装置且不被更新的程序。
9.根据上述结构,由于在差分数据的生成中,使用作为不被更新的程序的第1程序,所以能够抑制处理复杂化。
10.在某个实施方式中,上述控制程序是第1程序。第1程序是第2程序的前1个版本的程序。
11.根据上述结构,差分数据是作为第2程序的前1个版本的第1程序与第2程序的差分。因此,由于差分数据是1次更新量的容量,所以能够使差分数据的容量比较小。
12.在某个实施方式中,第1程序是第2程序的前1个版本的程序,在从第1程序向第2程序的更新中包括数据的追加的情况下,在第2程序中以缩小偏移区域的方式追加上述数据。
13.根据上述结构,在因程序的更新而追加数据的情况下,在第2程序中以缩小偏移区域的方式追加上述数据。通过以缩小偏移区域的方式追加数据,由此在第2程序中,位于比所追加的数据所处的地址靠后方的地址的数据的地址不被变更。另外,在第2程序中,位于比所追加的数据所处的地址靠前方的地址的数据的地址向前方侧移动。因此,在第1程序中的数据与第2程序中的数据的对应的数据彼此中,能够抑制第1程序中的数据的地址因数据的追加而成为比对应的第2程序中的数据的地址靠前方的地址。因此,即便因程序的更新而追加了数据,也能够抑制检索对象数据脱离检索范围。
14.在某个实施方式中,第1程序以及第2程序分别被分割为规定的数据尺寸的分割数据。分割数据的容量大于检索单位。检索范围在第1程序中包括位于与第2程序的包括检索对象数据的分割数据相同的地址的分割数据、以及位于比该分割数据靠后方的地址的分割数据。
15.根据上述结构,检索范围在第1程序中包括位于与第2程序的包括检索对象数据的分割数据相同的地址的分割数据以及位于比该分割数据靠后方的地址的分割数据。通过在第1程序的开头区域设置有偏移区域,即便在进行程序追加并因此存在地址被变更了的数据的情况下,也可抑制第2程序中的该数据的地址位于比第1程序中的该数据的地址靠后方。因此,能够使检索对象的数据包含在检索范围。因而,能够抑制检索对象的数据被提取为差分,能够抑制差分数据的容量增加。
16.在某个实施方式中,基于可能对于安装于第2装置的程序进行的设计变更的预测来设定偏移区域的容量。
17.根据上述结构,由于基于可能对于安装于第2装置的程序进行的设计变更的预测来设定偏移区域的容量,所以能够抑制设定过度的偏移区域。
18.根据本公开,在使用了差分数据的程序的更新中能够抑制差分数据的容量增加。
附图说明
19.以下,参照附图对本发明的示例性实施例的特征、优点、技术及工业重要性进行说明,在附图中相同的附图标记表示相同的构成要素,其中:
20.图1是简要地表示实施方式1所涉及的软件更新系统的整体结构的图。
21.图2是用于对差分提取的手法进行说明的图。
22.图3是用于对通过逻辑追加更新了控制程序的情况下的差分提取进行说明的图。
23.图4是用于对配合控制程序的更新而开发共通程序的情形进行说明的图。
24.图5是用于对实施方式1中的共通程序进行说明的图。
25.图6是用于对差分提取装置中的差分提取处理进行说明的功能框图。
26.图7是用于对ecu中的控制程序的更新处理进行说明的功能框图(其1)。
27.图8是用于对在共通程序设置偏移区域带来的效果进行说明的图。
28.图9是用于对实施方式2中的控制程序的更新进行说明的图。
29.图10是用于对实施方式2中的控制程序的数据结构进行说明的图。
30.图11是用于对ota服务器的差分提取处理进行说明的功能框图。
31.图12是用于对ecu中的控制程序的更新处理进行说明的功能框图(其2)。
具体实施方式
32.以下,参照附图对本公开的实施方式详细地进行说明。此外,对图中相同或者相当部分标注相同的附图标记而不重复其说明。
33.[实施方式1]
[0034]
<软件更新系统的整体结构>
[0035]
图1是简要地表示实施方式1所涉及的软件更新系统1的整体结构的图。软件更新系统1是用于对搭载于车辆200的ecu(electronic control unit)100所安装的控制程序进行更新的系统。其中,实施方式1中的控制程序的更新包括初始的控制程序向ecu100的写入。
[0036]
软件更新系统1具备第1服务器10、第2服务器20、差分提取装置30、以及重新编程工具(reprograming tool)40。
[0037]
第1服务器10存储ecu100的控制程序。控制程序例如由开发ecu100的控制程序的开发者开发,并存储于第1服务器10。例如按搭载ecu100的车辆200的每个目的地(例如日本国内、欧州、北美、中国等)来准备存储于第1服务器10的控制程序(控制程序a、b、c、
……
)。在本实施方式中,作为一个例子,例如对在车辆200安装面向日本国内的控制程序(以下,亦简称为“控制程序”)的例子进行说明。
[0038]
另外,第1服务器10存储与控制程序建立了关联的属性信息。属性信息中包括用于
对成为安装该控制程序的对象的ecu进行识别的识别信息。
[0039]
第2服务器20存储无论车辆200的目的地如何均在ecu100中共通使用的共通程序。共通程序例如由开发ecu100的共通程序的开发者开发,并存储于第2服务器20。例如,以控制程序a、b、c、
……
中的任一控制程序为基础来开发共通程序。
[0040]
如图1所示,共通程序在制造ecu的ecu工厂中被写入至ecu100。共通程序向ecu100的写入例如可使用未图示的写入工具。
[0041]
将在ecu工厂中被写入了共通程序的ecu100输送至车辆的组装工厂,并在车辆的组装工厂中被搭载于车辆200。详细情况将后述,但在车辆的组装工厂中,以搭载于车辆200的状态对ecu100写入控制程序。
[0042]
差分提取装置30提取共通程序与控制程序的差分,生成差分数据。
[0043]
差分提取装置30从第1服务器10取得控制程序。另外,差分提取装置30从第2服务器20取得共通程序。差分提取装置30将共通程序与控制程序进行比较,提取其差分数据。差分提取装置30将生成的差分数据输出至重新编程工具40。此外,关于差分数据的生成手法的详细情况将后述。
[0044]
另外,差分提取装置30从第1服务器10取得控制程序和属性信息。差分提取装置30将属性信息与生成的差分数据一同输出至重新编程工具40。
[0045]
重新编程工具40例如被设置于车辆的组装工厂。重新编程工具40构成为能够与差分提取装置30通信,从差分提取装置30取得差分数据以及属性信息。另外,重新编程工具40构成为能够与车辆200通信。重新编程工具40与车辆200的通信可以是有线通信,也可以是无线通信。
[0046]
若从差分提取装置30取得了差分数据以及属性信息,则重新编程工具40基于属性信息来确定搭载了成为写入控制程序的对象的ecu100的车辆200。而且,重新编程工具40向确定出的车辆200输出差分数据。
[0047]
若从重新编程工具40接收到差分数据,则车辆200将接收到的差分数据输出至ecu100。
[0048]
ecu100包括cpu(central processing unit)、存储器以及输入输出端口(均未图示)。存储器包括rom(read only memory)以及ram(random access memory)。在rom存储由cpu执行的控制程序以及在ecu工厂中安装的共通程序。cpu将存储于rom的程序在ram展开并执行。
[0049]
若接收到差分数据,则ecu100使用差分数据与共通程序来复原控制程序。若复原出控制程序,则ecu100将复原出的控制程序存储于存储器(rom)。
[0050]
这里,在车辆的组装工厂中,要求控制程序向车辆200的ecu100的写入(或控制程序的更新)在节拍时间(tact time)内完成。例如,若差分数据的容量大,则存在节拍时间内的控制程序向ecu100的写入(或控制程序的更新)无法完成的可能性。以下,对差分数据变大的情形具体进行说明。
[0051]
图2是用于对差分提取的手法进行说明的图。首先,参照图2对差分提取的手法进行说明。如图2所示,共通程序由按第1规定数据尺寸区块划分出的分割数据a1~ax(x:自然数)构成。共通程序(分割数据a1~ax)被从第2服务器20一并读出至差分提取装置30。此外,以下将按第1规定数据尺寸区块划分出的分割数据a1~ax亦称为“区块a1~ax”。
[0052]
另外,控制程序也与共通程序同样,由按第1规定数据尺寸区块划分出的分割数据b1~by(y:自然数)构成。控制程序被从第1服务器10例如按分割数据单位(区块单位)依次读出至差分提取装置30。此外,以下将按第1规定数据尺寸区块划分出的分割数据b1~by亦称为“区块b1~by”。
[0053]
差分提取装置30将依次取得的控制程序的分割数据b1~by与一并取得的共通程序的分割数据a1~ax进行比较,提取差分来生成差分数据。
[0054]
更具体而言,差分提取装置30按第2规定数据尺寸单位从依次取得的控制程序的分割数据检索数据(检索对象数据)是否包括在共通程序中。其中,第2规定数据尺寸是比区块的数据量(第1规定数据尺寸)小的数据尺寸。差分提取装置30将无法检测到的数据识别为被更新的数据(追加或变更的数据),并提取为差分。差分提取装置30将能够检测到的数据识别为已有的数据,不提取为差分。
[0055]
例如,差分提取装置30对图2所示的控制程序的区块b3的数据l(第2规定数据尺寸)是否包括在共通程序(分割数据a1~ax)中进行检索,在共通程序中不存在与数据l一致的数据的情况下,将数据l提取为差分。
[0056]
这里,若例如从共通程序的整个范围(分割数据a1~ax)检测检索对象数据(例如数据l),则能够准确地对检索对象数据是否为已有的数据进行检索,另一方面,处理需要大量的时间,导致处理的延迟。鉴于此,为了适度地兼顾检索精度与处理时间来提取差分,决定了检索对象数据的检索范围。检索范围例如在共通程序中被设定为包括与包含检索对象数据的控制程序的区块(b1~by中的任一个)的地址对应的区块(a1~ax中的任一个)以及在该区块的后方连续的规定量的区块(例如3个区块等)。上述的规定量能够从检索精度与处理时间的观点来适当地设定。
[0057]
使用具体例来进行说明,例如若是检索区块b3的数据l的情况,则在共通程序中将与包含数据l的区块b3的地址对应的区块亦即区块a3以及在区块a3的后方连续的规定量的区块(例如,若规定量为3,则为区块a4~a6)设定为检索范围(即,将区块a3~a6设定为检索范围)。在对数据l进行检索的情况下,将数据l与从位于区块a3的开头地址的数据至例如区块a6的最终地址的数据为止的各数据进行比较。之所以这样将重点放到比与包含检索对象数据的区块(例如区块b3)的地址对应的区块(例如区块a3)靠后方来设定检索范围是为了使ecu100中的控制程序的复原变容易。
[0058]
若如上述那样设定检索范围,则在共通程序中,当在区块a3或者/以及区块a4中包括数据l的情况下,由于区块a3以及区块a4包含在检索范围中,所以数据l被检测为已有数据。即,数据l不被提取为差分。
[0059]
然而,在共通程序中,当在区块a3以后的区块中不包含数据l、而在比区块a3靠前方的地址的区块(例如区块a2)包括数据l那样的情况下,由于比区块a3靠前方的地址的区块为检索范围外,所以数据l不被检测为已有数据,被提取为差分。例如,可能因设计变更(特别是逻辑追加)所引起的控制程序的更新而产生这样的情形。
[0060]
其中,对于检索范围而言,在共通程序中,只要将重点放在比与包括检索对象数据的控制程序的区块(b1~by中的任一个)的地址对应的区块(a1~ax中的任一个)靠后方即可,例如在共通程序中可以设定为包括与包含检索对象数据的制程序的区块(b1~by中的任一个)的地址对应的区块(a1~ax中的任一个)的前方的区块以及在该区块的后方连续的
规定量的区块(例如3个区块等)。当用上述的具体例来说明时,若是检索区块b3的数据l的情况,则在共通程序中将与包括数据l的区块b3的地址对应的区块亦即区块a3的前方的区块亦即区块a2、以及在区块a2的后方连续的规定量的区块(例如,若规定量为3,则为区块a3~a5)设定为检索范围(即,将区块a2~a5设定为检索范围)。
[0061]
图3是用于对因逻辑追加而更新了控制程序的情况下的差分提取进行说明的图。如图3所示,例如假设因控制程序的更新而对控制程序追加了第1追加数据以及第2追加数据。因第1追加数据以及第2追加数据的追加而例如使得更新前包含于区块bn中的数据e在更新后包含于区块bm中。另一方面,由于即便控制程序被更新也不更新共通程序,所以在共通程序中,数据e包括在与区块bn对应的区块an中。
[0062]
数据e在检索中的检索范围是与包括数据e的区块bm的地址对应的区块am以及在区块am的后方连续的规定量的区块。即,在数据e的检索中,由于区块an不包括在检索范围中,所以数据e不被识别为已有数据,导致数据e被提取为差分。因此,与数据e被识别为已有数据的情况相比,会导致差分数据的容量可能变大。
[0063]
作为针对上述情况的对策,例如可考虑以更新后的控制程序为基础来新开发共通程序。图4是用于对配合控制程序的更新而开发共通程序的情形进行说明的图。
[0064]
首先,如图4所示,假设控制程序ver.1被开发并存储于第1服务器10。而且,假设以控制程序ver.1为基础而开发共通程序ver.1并存储于第2服务器20。此时,差分提取装置30提取共通程序ver.1与控制程序ver.1的差分,生成差分数据。
[0065]
接下来,假设对控制程序ver.1增加设计变更,从控制程序ver.1被更新为控制程序ver.2。在图4所示的例子中,以控制程序ver.2为基础来新开发共通程序ver.2。差分提取装置30提取共通程序ver.2与控制程序ver.2的差分,生成差分数据。通过新开发共通程序ver.2,能够使差分数据的容量与设计变更前的差分数据(基于共通程序ver.1与控制程序ver.1的差分的差分数据)的容量为相同程度。
[0066]
然而,该情况下,由于每当更新控制程序就需要共通程序的开发,所以导致开发成本增加。在更新了控制程序的情况下,期望不使开发成本增加地抑制差分数据的容量的增加。
[0067]
鉴于此,在实施方式1所涉及的软件更新系统1中,在共通程序的开头区域设置偏移(offset)区域。由此,即便更新了控制程序,也不新开发共通程序,能够抑制差分数据的容量的增加。即,通过在共通程序的开头区域设置偏移区域,即便更新了控制程序,也能够实现初始开发的共通程序(ver.1)的沿用。以下,具体地进行说明。
[0068]
图5是用于对实施方式1中的共通程序进行说明的图。如图5所示,在共通程序的开头区域设置偏移区域。偏移区域例如是不包括作为控制程序的数据的空白的区域。或者,偏移区域可以是包括不作为控制程序发挥功能的伪数据的区域。
[0069]
通过设置偏移区域,使得在初始的控制程序(ver.1)与以初始的控制程序为基础开发出的共通程序(ver.1)中,对应的数据彼此的地址不同。具体而言,通过设置偏移区域,例如共通程序中的数据e的地址成为比控制程序中的数据e的地址靠后方的地址。因此,即使通过控制程序的更新来追加例如第1追加数据以及第2追加数据而使得控制程序中的数据e的地址向后方移动,在数据e的检索中也能够使包括数据e的共通程序的区块包含于检索范围。因此,数据e被识别为已有数据,不被提取为差分。因此,与数据e被提取为差分的情
况相比,能够抑制差分数据的增加。
[0070]
偏移区域例如基于在控制程序的开发中可进行的设计变更的预测来决定其区域(容量)。例如,偏移区域被设定为3个区块量的区域等。在偏移区域的设定中例如也可以考虑车辆200的模型寿命。
[0071]
图6是用于对差分提取装置30中的差分提取处理进行说明的功能框图。差分提取装置30包括共通程序取得部31、控制程序取得部33、差分提取部35、以及输出部37。
[0072]
共通程序取得部31从第2服务器20取得共通程序。具体而言,共通程序取得部31从第2服务器20一并取得按第1规定数据尺寸区块划分的共通程序的分割数据a1~ax。共通程序取得部31将所取得的共通程序输出至差分提取部35。
[0073]
控制程序取得部33从第1服务器10取得控制程序。具体而言,控制程序取得部33从第1服务器10依次取得按第1规定数据尺寸区块划分的控制程序的分割数据b1~by。每当接收到分割数据b1~by,控制程序取得部33便将接收到的分割数据b1~by输出至差分提取部35。
[0074]
另外,控制程序取得部33从第1服务器10接收与控制程序建立了关联的属性信息。控制程序取得部33将接收到的属性信息输出至输出部37。
[0075]
差分提取部35一边参照共通程序的分割数据a1~ax一边提取分割数据a1~ax与依次接收的控制程序的分割数据b1~by的差分,生成差分数据。例如,若接收到控制程序的分割数据bn,则差分提取部35按分割数据bn所包括的每个第2规定数据尺寸(检索对象数据)对在检索范围内的共通程序的分割数据a1~ax中是否包括检索对象数据进行检索。当检索对象数据未包括在检索范围内的分割数据a1~ax中的情况下,差分提取部35将该检索对象数据提取为差分。当检索对象数据包括在检索范围内的分割数据a1~ax中的情况下,差分提取部35将该检索对象数据识别为已有数据,不提取为差分数据。
[0076]
输出部37从差分提取部35接受差分数据。另外,输出部37从控制程序取得部33接受属性信息。输出部37将属性信息与差分数据建立关联,并将差分数据以及属性信息输出至重新编程工具40。
[0077]
此外,取得了差分数据以及属性信息的重新编程工具40基于属性信息来确定搭载了成为输出该差分数据的对象(使用该差分数据来写入控制程序的对象)的ecu100的车辆200。重新编程工具40向确定出的车辆200输出差分数据。
[0078]
图7是用于对ecu100中的控制程序的更新处理进行说明的功能框图。ecu100包括差分数据取得部101、共通程序读出部103、差分展开部105以及程序存储部107。
[0079]
差分数据取得部101经由重新编程工具40取得差分数据。差分数据取得部101将所取得的差分数据输出至差分展开部105。
[0080]
共通程序读出部103例如从存储器读出在ecu工厂中被存储于ecu100的存储器的共通程序。共通程序被读出为按第1规定数据尺寸区块划分的分割数据a1~ax。共通程序读出部103将读出的分割数据a1~ax输出至差分展开部105。
[0081]
差分展开部105一边参照分割数据a1~ax一边解读差分数据来复原控制程序。差分展开部105将复原出的控制程序输出至程序存储部107。
[0082]
程序存储部107使ecu100的存储器存储接收到的控制程序。由此,ecu100的控制程序被更新(在初始时被写入)。
[0083]
图8是用于对在共通程序设置偏移区域带来的效果进行说明的图。在图8中示出了对控制程序的设计变更的次数与差分数据的容量的关系进行表示的实验数据。在该实验中,即便在因设计变更而更新了控制程序的情况下,也沿用以初始的控制程序为基础开发出的共通程序。
[0084]
图8中的实线l1表示未在共通程序设置偏移区域的情况下的、控制程序的设计变更的次数与差分数据的容量的关系。实线l2表示在共通程序的开头区域设置了偏移区域的情况下的、控制程序的设计变更的次数与差分数据的容量的关系。
[0085]
例如,若着眼于第3次的设计变更,则未在共通程序设置偏移区域的情况下的差分数据的容量为d2,在共通程序的开头区域设置了偏移区域的情况下的差分数据的容量为d1(<d2)。容量d1与容量d2的差是在检索对象数据的检索中因程序追加等而导致检索对象数据脱离检索范围所引起的增加量。即,通过在共通程序的开头区域设置偏移区域,与在共通程序不设置偏移区域的情况相比,能够将差分数据的容量减小d2-d1。在本实验中,容量d1与容量d2的差(d2-d1)大约相当于控制程序的容量的百分之几左右。
[0086]
若着眼于第4次的设计变更,则当在共通程序的开头区域设置了偏移区域的情况下,如实线l2所示,容量从第3次的设计变更时增加了δda(=d3-d1)。该容量的增加量δda大约与因第4次的设计变更而追加的程序的容量相等。
[0087]
另一方面,当未在共通程序设置偏移区域的情况下,从第3次至第4次的设计变更,差分数据显著增加。具体而言,当未在共通程序设置偏移区域的情况下,如实线l1所示,容量从第3次的设计变更时增加了δdb(=d4-d2)。该容量的增加量δdb大幅度超过了因第4次的设计变更而追加的程序的容量。
[0088]
第4次的设计变更中的、在共通程序的开头区域设置了偏移区域的情况下的差分数据的容量d3与未在共通程序的开头区域设置偏移区域的情况下的差分数据的容量d4的容量差δdc(=d4-d3)大约相当于控制程序的容量的百分之几~百分之十几左右。根据实验结果可知:即便在控制程序的设计变更的次数增加、向控制程序的程序追加量增加的情况下,通过在共通程序的开头区域设置偏移区域也能够抑制差分数据的增加。
[0089]
如以上那样,在实施方式1所涉及的软件更新系统1中,在共通程序的开头区域设置偏移区域。通过在共通程序的开头区域设置偏移区域,由此在初始的控制程序与以初始的控制程序为基础开发出的共通程序的对应的数据彼此中,共通程序中的数据的地址成为比对应的控制程序中的数据的地址靠后方的地址。因此,即便因控制程序的更新而在控制程序追加了程序,也可抑制共通程序中的数据的地址成为比对应的控制程序中的数据的地址靠前方至脱离检索范围的程度的地址。因此,能够抑制可被识别为已有数据的数据因脱离检索范围而不被识别为已有数据、被提取为差分这一情况。由此,能够抑制差分数据的增加。
[0090]
另外,在实施方式1所涉及的软件更新系统1中,在差分数据的生成中使用不被更新的共通程序。因此,在差分数据的生成中,相比于与控制程序的比较对象被变更的情况,能够抑制处理复杂化。
[0091]
[实施方式2]
[0092]
在实施方式1中,在ecu100的控制程序中,提取不被更新的共通程序与控制程序(更新程序)的差分来生成差分数据,并使用该差分数据来更新控制程序。在实施方式2中,
对提取现行的控制程序(例如ver.1)与设计被变更了的新的控制程序(例如ver.2)的差分来生成差分数据并使用该差分数据来更新控制程序的例子进行说明。
[0093]
图9是用于对实施方式2中的控制程序的更新进行说明的图。在实施方式2中,以通过所谓ota(over the air:空中下载更新)来更新在市场流通的车辆200(ecu100)的控制程序进行更新的情形为例进行说明。
[0094]
在开发出车辆200的控制程序的更新程序的情况下,ota服务器300经由因特网等通信网络向车辆200传送更新程序。
[0095]
ota服务器300存储有ecu100的现行的控制程序。若存在控制程序的设计变更、更新(开发)了控制程序,则ota服务器300除了存储现行的控制程序之外还存储该被更新的控制程序(更新程序)。而且,ota服务器300提取现行的控制程序(例如控制程序ver.1)与更新程序(例如控制程序ver.2)的差分来生成差分数据。ota服务器300向搭载了作为更新程序的应用对象的ecu100的车辆200输出差分数据。而且,若ecu100的控制程序的更新完成,则ota服务器300将更新程序(控制程序ver.2)覆写于现行的控制程序(控制程序ver.1),将更新程序(控制程序ver.2)存储为现行的控制程序。
[0096]
图10是用于对实施方式2中的控制程序的数据结构进行说明的图。在图10中,(a)示出了初始的控制程序的数据结构,(b)示出了进行过第1次的设计变更的(进行过第1次的更新的)控制程序的数据结构,(c)示出了进行过第2次的设计变更的控制程序的数据结构。其中,实施方式2中的初始的控制程序例如是在车辆200的工厂出厂时被安装于ecu100的控制程序。
[0097]
与实施方式1同样,在初始的控制程序的开头区域设置有偏移区域。关于实施方式2中的偏移区域,也与实施方式1同样,例如基于设计变更的预测来决定其区域(容量)。
[0098]
例如,在第1次的设计变更中,假设在控制程序中追加了第1追加数据。更具体而言,假设第1追加数据被追加于数据d与数据e之间。该情况下,以缩小偏移区域的方式对控制程序追加第1追加数据。更具体而言,如图10所示,数据e的地址不变更地在数据e的前方的区域追加第1追加数据。由此,将数据a~d的地址向前方的地址移动,偏移区域被缩小。
[0099]
若这样追加第1追加数据,则在对初始的控制程序与进行过第1次的设计变更的控制程序的差分进行检索的情况下,能够恰当地检索位于比所追加的第1追加数据靠前的区域的数据a~d,并且还能够恰当地检索位于比第1追加数据靠后的区域的数据e~i。
[0100]
具体而言,例如若着眼于数据a,则进行过第1次的设计变更的控制程序中的数据a的地址成为位于比初始的控制程序中的数据a的地址靠前方的地址。因此,数据a的检索范围中包括初始程序中的数据a。因而,通过数据a的检索将数据a识别为已有数据,针对数据a判断为“无差分”。
[0101]
另外,例如若着眼于数据e,则进行过第1次的设计变更的控制程序中的数据e的地址成为与初始的控制程序中的数据e相同的地址。因此,数据e的检索范围中包括初始程序中的数据e。因而,通过数据e的检索将数据e识别为已有数据,针对数据e判断为“无差分”。
[0102]
假设当在控制程序的开头区域未设置偏移区域的情况下,进行过第1次的设计变更的控制程序中的数据e~i的地址因第1追加数据的追加而分别成为位于比初始的控制程序中的数据e~i靠后方的地址。因而,例如在检索数据e的情况下,可能产生数据e的检索范围中不包括初始程序中的数据e而将数据e提取为差分的情况。这样一来,导致差分数据的
容量的增加,导致通信线路的信息流量(traffic)的增加,导致控制程序的更新时间的增加。通过在控制程序的开头区域设置偏移区域,与在控制程序的开头区域不设置偏移区域的情况相比,能够抑制差分数据的容量的增加,进而能够实现通信线路的信息流量的减少以及控制程序的更新时间的缩短。
[0103]
另外,在第2次的设计变更中,即便是在数据b与数据c之间追加了第2追加数据的情况,也与第1次的设计变更时同样,以缩小偏移区域的方式对控制程序追加第2追加数据。即,数据c的地址不变更地在数据c的前方的区域追加第2追加数据。由此,数据a、b的地址向前方的地址移动,偏移区域被缩小。
[0104]
图11是用于对ota服务器300的差分提取处理进行说明的功能框图。ota服务器300包括更新程序取得部301、现行程序取得部303、差分提取部305、输出部307以及存储部309。
[0105]
更新程序取得部301从存储有更新程序的服务器取得被更新了的控制程序(更新程序)。更新程序也与在实施方式1中说明过的控制程序同样,被按第1规定数据尺寸区块划分。更新程序取得部301从服务器依次取得按第1规定数据尺寸区块划分的更新程序的分割数据d1~dw(w:自然数)。每当取得分割数据d1~dw时,更新程序取得部301便将所取得的分割数据d1~dw输出至差分提取部305以及存储部309。
[0106]
另外,更新程序取得部301从服务器取得与更新程序建立了关联的属性信息。更新程序取得部301将所取得的属性信息输出至现行程序取得部303以及输出部307。
[0107]
现行程序取得部303基于属性信息来确定成为更新程序的应用对象的ecu。现行程序取得部303例如确定为更新程序的应用对象是车辆200的ecu100。现行程序取得部303例如从未图示的存储装置取得当前被安装于车辆200的ecu100的控制程序(现行的控制程序)。控制程序与在实施方式1中说明过的控制程序同样,被按第1规定数据尺寸区块划分。现行程序取得部303从存储装置一并取得按第1规定数据尺寸区块划分的现行程序的分割数据c1~cz(z:自然数)。现行程序取得部303将所取得的现行程序输出至差分提取部305。此外,在现行的控制程序被存储于ota服务器300的外部的服务器(未图示)的情况下,现行程序取得部303只要构成为从存储有现行的控制程序的服务器取得现行程序即可。
[0108]
差分提取部305参照现行程序的分割数据c1~cz来提取分割数据c1~cz与依次接收的更新程序的分割数据d1~dw的差分,生成差分数据。差分提取部305将所生成的差分数据输出至输出部307。
[0109]
输出部307从差分提取部305接受差分数据。另外,输出部307从更新程序取得部301接受属性信息。输出部307向搭载根据属性信息确定的ecu100的车辆200发送差分数据。
[0110]
存储部309使存储装置存储由更新程序取得部301取得的更新程序作为现行的程序。
[0111]
图12是用于对ecu100中的控制程序的更新处理进行说明的功能框图。ecu100包括差分数据取得部111、现行程序读出部113、差分展开部115以及程序存储部117。
[0112]
差分数据取得部111从ota服务器300取得差分数据。差分数据取得部111将所取得的差分数据输出至差分展开部115。
[0113]
现行程序读出部113从存储器读出现行的控制程序。现行的控制程序被作为按第1规定数据尺寸区块划分的分割数据而读出。现行程序读出部113将读出的分割数据输出至差分展开部115。
[0114]
差分展开部115一边参照现行的控制程序的分割数据一边解读差分数据来使控制程序(更新程序)复原。差分展开部115将复原出的控制程序输出至程序存储部117。
[0115]
程序存储部117使ecu100的存储器存储从差分展开部115接收到的控制程序作为现行的控制程序。由此,ecu100的控制程序被更新。
[0116]
如以上那样,在实施方式2中,在控制程序的开头区域设置偏移区域。而且,在对控制程序追加程序时,以缩小偏移区域的方式追加程序。通过这样追加程序,能够在更新前的控制程序中的数据与更新后的控制程序中的数据的对应的数据彼此中,抑制更新前的控制程序中的数据的地址因程序的追加而成为比对应的更新后的控制程序中的数据的地址靠前方的地址。因而,即便因控制程序的更新而对控制程序追加了程序,也能够抑制检索对象数据脱离检索范围。因此,能够抑制会识别为已有数据的数据因脱离检索范围而不被识别为已有数据却被提取为差分这一情况。由此,能够抑制差分数据的增加。
[0117]
另外,在实施方式2中,提取现行的控制程序(例如ver.1)与设计变更了的新的控制程序(例如ver.2)的差分来生成差分数据。即,提取新的控制程序与该新的控制程序的前1个版本的控制程序的差分来生成差分数据。由于是与前1个版本的控制程序的比较,所以例如与提取初始的控制程序和新的控制程序的差分来生成差分数据的情况相比,能够减小差分数据的容量。
[0118]
应该认为本次公开的实施方式在全部的点上都是例示而不是限制性的说明。本公开的范围不是上述的实施方式的说明,而由技术方案的范围表示,意图包括与技术方案的范围等同的含义以及范围内的全部变更。

技术特征:
1.一种程序的更新方法,从第1装置向第2装置发送第1程序与第2程序的差分数据,并基于所述差分数据将安装于所述第2装置的控制程序更新为所述第2程序,其中,在所述第1装置中包括如下步骤:取得所述第1程序的步骤;取得所述第2程序,并以检索范围为对象来对在所述第1程序中是否包含按检索单位分割的检索对象数据进行检索的步骤;当在所述第1程序包含所述检索对象数据的情况下,不提取该检索对象数据作为差分,当在所述第1程序不包含所述检索对象数据的情况下,提取该检索对象数据作为差分来生成差分数据的步骤;以及向所述第2装置输出所生成的所述差分数据的步骤,所述检索范围在所述第1程序中被设定为和位于比与所述第2程序的所述检索对象数据相同的地址靠前方的地址的数据相比,包括更多位于后方的地址的数据,在所述第1程序的开头区域设置有不包含作为程序的数据的偏移区域。2.根据权利要求1所述的程序的更新方法,其中,所述第1程序是为了更新所述控制程序而安装于所述第2装置且不被更新的程序。3.根据权利要求1所述的程序的更新方法,其中,所述控制程序是所述第1程序,所述第1程序是所述第2程序的前1个版本的程序。4.根据权利要求3所述的程序的更新方法,其中,当在从所述第1程序向所述第2程序的更新中包括数据的追加的情况下,在所述第2程序中以缩小所述偏移区域的方式追加所述数据。5.根据权利要求1~4中任一项所述的程序的更新方法,其中,所述第1程序以及所述第2程序分别被分割为规定的数据尺寸的分割数据,所述分割数据的容量大于所述检索单位,所述检索范围在所述第1程序中被设定为包括位于与所述第2程序的包含所述检索对象数据的分割数据相同的地址的分割数据、以及位于比该分割数据靠后方的地址的分割数据。6.根据权利要求1~5中任一项所述的程序的更新方法,其中,基于可能对于安装于所述第2装置的程序进行的设计变更的预测来设定所述偏移区域的容量。7.一种更新系统,将第1程序与第2程序的差分数据发送至更新对象装置,并基于所述差分数据来将安装于所述更新对象装置的控制程序更新为所述第2程序,其中,所述更新系统具备:第1存储装置,存储所述第1程序;第2存储装置,存储所述第2程序;以及差分提取装置,生成所述差分数据并发送至所述更新对象装置,所述差分提取装置从所述第1存储装置以及所述第2存储装置分别取得所述第1程序以及所述第2程序,按每个检索单位,以检索范围为对象来对在所述第1程序中是否包含所述第2程序的检
索对象数据进行检索,当在所述第1程序中包含所述检索对象数据的情况下,不提取该检索对象数据作为差分,当在所述第1程序中不包含所述检索对象数据的情况下,提取该检索对象数据作为差分来生成差分数据,所述检索范围在所述第1程序中被设定为和位于比与所述第2程序的所述检索对象数据相同的地址靠前方的地址的数据相比,包括更多位于后方的地址的数据,在所述第1程序的开头区域设置有不包含作为程序的数据的偏移区域。

技术总结
本发明提供程序的更新方法以及更新系统,该更新系统包括:第1服务器,存储控制程序;第2服务器,存储共通程序;差分提取装置,生成共通程序与控制程序的差分数据;以及重新编程工具,向搭载更新对象的ECU的车辆发送差分数据。差分提取装置按每个检索单位,以检索范围为对象来对在共通程序中是否包含控制程序的检索对象数据进行检索,生成差分数据。检索范围例如包括检索对象的数据在控制程序中的地址以及比该地址靠后方的地址。在共通程序的开头区域设置有偏移区域。域设置有偏移区域。域设置有偏移区域。


技术研发人员:藤井正伦
受保护的技术使用者:丰田自动车株式会社
技术研发日:2021.06.29
技术公布日:2022/3/8

最新回复(0)