车载控制装置、程序更新系统以及程序更新软件的制作方法

文档序号:14395239阅读:187来源:国知局

本发明涉及车载控制装置、程序写入装置、程序生成装置以及程序。



背景技术:

在现有的重编程中,经由低速的can(controllerareanetwork控制器局域网络)将作为写入工具的pc(personalcomputer个人电脑)和车载控制装置(ecu:enginecontrolunit发动机控制单元)连接,一边分割传输加载模块(新程序)一边写入到ecu的闪存。

此外,即使在相对于旧程序的新程序的更新部分较小的情况下,也经由can传输新程序整体,并进行新程序整体的写入。

因此,会有写入花费时间的问题。对此,目前提出有差分重编程的观点(例如参照专利文献1)。即,在专利文献1的段落[0019]中,记载了“通过区块单元生成新旧程序的差分数据的单元”作为重写方式的一种。进而,在段落[0064]中,将更新对象区块的旧程序传输到sdram,使用差分数据和旧程序将新程序复原到sdram,擦除更新对象区块,并且写入新程序。

在专利文献2中,在段落[0006]中,记载了通过少量的ram使用量实现差分更新的单元。不是将更新对象区块的旧程序传输至ram,而是传输至闪存的其他区块的方法。做法如下:在传输之后,擦除更新对象区块,使用差分数据和传输了的旧程序复原新程序,并将新程序写入至更新对象区块。通过对所有更新对象区块反复进行该处理,可以将新程序写入闪存。但是,在其他区块中还存在要写入的新程序的情况下,由于旧程序已经被擦除,因此执行使用了全文数据的现有的更新。

如此,开发了即使在少量的ram使用量的情况下实现差分重编程的技术。

现有技术文献

专利文献

专利文献1:日本专利特开2012-190075号公报

专利文献2:日本专利特开2011-81561号公报



技术实现要素:

发明要解决的问题

专利文献1的技术是将更新对象区块的旧程序、差分数据以及复原了的新程序全部配置在ram上。其结果是,在使用了内置有由大于ram容量的区块构成的闪存的微型计算机的车载控制装置中,在原理上无法进行差分复原。进而,新程序的差分数据根据配置于相同区块的旧程序生成,存在差分数据的大小较大这样的问题。当差分数据的大小变大时,则去往车载控制装置的差分数据的传输时间变长,其结果是更新时间变长。

以下,进行详细说明。在专利文献1的段落[0019]所记载的生成差分数据的单元中,使用配置于相同的更新对象的区块中的旧程序而生成配置于更新对象的区块中的新程序的差分数据。通常,为了使差分数据大小变小,在差分数据等的差分提取处理等中,从旧程序中检索并找出与新程序的子序列(子命令序列)类似的子序列,并且用复制命令等替换子序列。另一方面,在新添加的子序列的情况下,旧程序不存在的情况很多。在该情况下,通过附加命令存储新子序列。该复制命令和附加命令以及被存储的新子序列成为差分数据。从该观点出发,问题在于检索类似的子序列的范围被限定在一个区块中。这是由于能够想到检索尽可能多的旧程序并找到更类似的子序列,并且用复制命令代替可以减小差分数据的大小。

根据专利文献2记载的方式,能够减少差分更新时的ram使用量。如上所述,首先选择更新对象的区块以外的其他区块,在擦除该选择的区块之后,将更新对象区块的旧程序传输到该选择的区块。接下来,擦除更新对象区块,并根据ram上的差分数据和所述选择了的区块的旧程序将新程序写入至更新对象区块。如此,通过使用闪存的其他的区块,从而减少ram的使用量。

但是,可以看出这种方式的复原处理是仅根据差分数据和选择的区块的旧程序来复原新程序。因此,意味着由于在产生差分数据时也从更新对象区块的新程序、相同区块的旧程序的范围内检索具有类似性的子序列,因此在搜索范围狭窄,从而存在差分数据的大小变大的问题。当然,在旧程序和新程序的变化很小的情况下,旧程序的检索范围不能称之为狭窄的,但是在有较大的变化的情况下,可以说越扩大旧程序的检索范围越容易找到具有类似性的子序列。

本发明的目的在于,提供一种车载控制装置、程序更新系统以及程序更新软件,即使在使用了内置有由少量的ram使用量和大区块构成的闪存的微型计算机的车载控制装置中,也能实现差分重编程的复原处理,并且即使是增加了大的变化的新程序,也能够通过减小差分数据的大小,而在短时间内复原新程序。

解决问题的技术手段

本发明是能够基于从更新工具提供的更新内容而更新程序的车载控制装置,具备:第1存储器,其具有存储所述程序的多个区块;以及第2存储器,在更新所述程序时,将所述程序和所述更新程序的差分数据存储在所述第2存储器中,使用所述差分数据和更新前的旧程序,使所述多个区块中的更新对象区块用的更新程序再次出现在与所述更新对象区块不同的其他区块中,并将在所述其他区块中再次出现的更新程序写入所述更新对象区块。

发明的效果

根据本发明,在由内置了具有小sram和大区块的闪存的微型计算机构成的车载控制装置中,即使是增加了大的变化的新程序,也能够快速且容易地更新差分。上述以外的问题、构成以及效果通过以下实施方式的说明来明确。

附图说明

图1是表示发明的实施方式的系统的整体构成的示意图。

图2是图1所示的pc的构成图。

图3是图1所示的车载系统的构成图。

图4是表示图3所示的ecu的sram的内部的构成的示意图。

图5是表示图3所示的ecu的闪存的内部的构成的示意图。

图6是图7所示的编码控制软件的差分数据生成、压缩数据生成的基本概念的说明图。

图7是控制图8所示的编码软件的编码控制软件的流程图。

图8是生成更新对象区块的差分数据或者压缩数据的编码软件的流程图。

图9是图1所示的pc的通信软件的流程图。

图10是图1所示的服务器的通信软件的流程图。

图11是图3所示的程序写入装置的通信软件的流程图。

图12是图3所示的连接程序写入装置和车载控制装置的车载网络can的通信帧的构成。

图13是配置于图5所示的车载控制装置的闪存中的复原恢复软件的流程图。

图14是从图13所示的复原恢复软件启动的复原控制软件的流程图。

图15是从图14所示的复原控制软件启动的复原软件的流程图。

图16是使用了复原恢复软件的已有的ecu的差分更新概念图。

图17是表示使用了复原恢复软件的已有的ecu的差分更新的步骤的流程图。

图18是表示下载复原恢复软件的ecu的差分更新的步骤的流程图。

具体实施方式

本实施方式提供了同时解决下述两个问题的手段。

第1个问题在于,即使在内置有由小ram容量和大区块构成的闪存的微型计算机中,也能够进行差分更新。

第2个问题在于,即使在新程序中增加了大的变化,也尽可能地减小差分数据的大小。

对解决上述两个问题的方法进行说明。首先,为了复原更新对象区块的新程序,将更新对象区块之外的其它区块保护在闪存中并进行擦除。此处,将所述其他区块称为临时区块。车载控制装置根据接收到的ram中的差分数据和配置于包括更新对象区块的多个区块中的旧程序而复原新程序,并将新程序写入所述临时区块。接下来,在对于临时区块的写入结束之后擦除更新对象区块,并将临时区块的新程序写入更新对象区块。通过在所有的更新对象区块中反复进行该处理,能够进行基于差分更新的对于新程序的更新。此处要注意的是,在临时区块中存在要写入的新程序的情况下,由于已经删除了旧程序,因此无法进行差分更新。在本发明中,临时区块的要写入的新程序使用压缩了新程序自身的压缩数据。压缩数据不需要在解压时参照旧程序。此外压缩数据也可以是与预先决定的全部为0、1等数据的差分。在该情况下也不需要在复原时参照旧程序。如上所述,提供了如下的手段:使用临时区块的新程序的压缩数据,并对于车载控制装置发送压缩数据,车载控制装置解压接收到的压缩数据并复原新程序,并将新程序写入临时区块。

如此,由于在新程序的复原中使用了闪存的临时区块,因此ram的使用具有在接收差分数据或者压缩数据的接收区域结束这样的特征。

另一个问题通过所述“根据差分数据和配置于包含更新对象区块的多个区块中的旧程序而复原新程序,并将新程序写入所述临时区块”的手段来实现。以下,详细地说明该理由。为了说明简单,考虑在新程序中具有大的功能增加的情况。在该情况下,实现新功能的程序被添加到新程序的某个区块中。粗略地讲,以配置了新功能的区块为基准,该高位地址的前半区块的新程序与旧程序大致相同,而低位地址的后半区块的新程序由于加入了新功能的程序,因此移动到下一位的区块。其结果是,同一区块的新程序和旧程序的差分数据可以在高位地址的前半部分的同一区块中减小该差分数据的大小,但是在低位地址的后半区块中,由于类似的某个程序偏离了一个区块,因此相同区块的差分数据的大小变大。因此,本发明的更新对象区块的新程序的差分数据利用包括更新对象区块的多个区块的广泛范围的旧程序,即使偏离了一个区块也能够检索类似的某个旧程序,因此能够缩小差分数据。

根据以上的方法,即使在使用了内置有由少量的ram使用量和大区块构成的闪存的微型计算机的车载控制装置中,也能进行差分更新,并且即使是增加了大的变化的新程序,也能够高速地进行差分重编程。以下使用附图详细描述细节。

以下,使用附图说明包括本发明的实施方式的车载控制装置的系统的构成以及动作。

首先,使用图1说明系统的整体构成。图1是表示本发明的实施方式的系统的整体构成的示意图。

本系统包括程序生成装置100、车载系统3。

程序生成装置100根据新程序以及与存储在车载系统3所包含的车载控制装置中的程序相同的程序而生成数据,并将生成的数据发送至车载系统3。另外,该细节将使用图7~图11在下文叙述。

程序生成装置具备pc1、服务器2。pc1例如经由lan(localareanetwork局域网)连接至服务器2。另外,也可以使用交叉线直接连接pc1和服务器2。

程序生成装置100通过无线与车载系统3进行通信。例如通过互联网、移动电话网、无线lan等来进行通信。在图1中,为了更容易观察附图,没有显示路由器、接入点等中转设备。

车载系统3从程序生成装置100接收数据,并基于接收到的数据而更新车载系统3中包含的车载控制装置的程序。另外,该细节将使用图11~15在下文叙述。

接下来,使用图2说明pc1的构成。图2是图1所示的pc1的构成图。

pc1具备:cpu(centralprocessingunit中央处理单元)等运算装置201、键盘和鼠标等输入装置202、lcd(liquidcrystaldisplay液晶显示器)等显示装置203、nic(networkinterfacecard网络适配器)等通信装置204、ram(randomaccessmemory随机存取存储器)、rom(readonlymemory只读存储器)、hdd(harddiskdrive硬盘驱动器)等存储装置。运算装置201、输入装置202、显示装置203、通信装置204连接至总线。

存储装置205存储有与存储于车载系统3所包含的车载控制装置的闪存中的程序相同的旧程序以及更新了旧程序的新程序。旧程序和新程序通过在车载控制装置的微型计算机的闪存的区块中所配置的图像来表示。即,新、旧程序的程序的头部是128kb的区块,并且接下来被连续地配置到5个256kb的区块。

另外,图1所示的服务器2的构成也和pc1的构成相同。即,服务器2具备运算装置201s、输入装置202s、显示装置203s、通信装置204s、存储装置205s。

接下来,使用图3说明车载系统3的构成。图3是图1所示的车载系统3的构成图。

车载系统3具备程序写入装置310(网关)以及多个ecu300(3001~300n)。程序写入装置310以及ecu300经由车载网络can相互间进行通信。

在认证成功的情况下,程序写入装置310在车辆外部的网络和车辆内部的can之间中继数据。

ecu300包括:微型计算机301、与每个ecu300的用途对应的各种ic(integratedcircuit集成电路)304、can收发器等通信装置305。微型计算机301内置有sram302(易失性存储器)和闪存303(非易失性存储器)。

另外,程序写入装置310的构成和ecu300的构成基本相同,但还具备与车辆外部的网络的协议对应的通信装置。即,程序写入装置310具备:微型计算机311、各种ic314、can收发器等通信装置315、与车辆外部的网络的协议对应的通信装置316。微型计算机311内置有sram312、闪存313。

接下来,使用图4说明ecu300的sram302的构成。图4是表示图3所示的sram302的内部的构成的示意图。

sram302具有:用于临时存储数据的第1区域302a;以及用于复原在第1区域302a中存储的数据的第2区域302b。

在本实施方式中,作为一例,sram302的大小为48kb,第1区域302a的大小为256b,第2区域302b的大小为4kb。

接下来,使用图5说明闪存303的构成。图5是表示图3所示的闪存303的内部的构成的示意图。

闪存303由多个大小的区块构成。在本实施方式中,作为一例,闪存303的大小为1.5mb。闪存303由128kb、256kb两种区块构成。在这里,所谓的区块是指擦除数据的最小单位。例如,在将4kb的数据写入128kb的区块的情况下,在擦除128kb的数据之后写入4kb的数据。

如图5所示,在闪存303中,在头部的128kb的区块中配置有复原恢复软件,该复原恢复软件由与程序写入装置310进行通信的通信软件、接收数据识别差分数据或者压缩数据或者全部更新数据中的任意一个并启动复原软件的复原控制软件、复原软件构成。在接下来的128kb、256kb、256kb、256kb、256kb、256kb的区块中存储旧程序。

所述通信软件将从程序写入装置310接收到的接收数据临时地存储至sram302的第1区域302a,若该数据的种类为差分数据,则复原控制软件启动复原软件并根据第1区域302a的数据和已经存在于闪存303中的旧程序而在sram302的第2区域302b中复原新程序,若为压缩数据,则复原控制软件解压第1区域302a的压缩数据并向sram302的第2区域302b复原新程序,之后进行对于所述临时区块的写入的处理等。车载控制装置的复原处理的详细说明在之后使用附图进行详细说明。

接下来,使用图6说明程序生成装置100的pc1中进行的更新对象区块的差分数据生成、压缩数据生成的基本概念。

首先,图6是将旧程序和新程序配置在闪存的区块#1到区块#6中的图。区块#1是高位地址的区块,区块#6是低位地址的区块。旧程序在区块#1中配置有a,在区块#2中配置有b,在区块#3中配置有c,在区块#4中配置有d,在区块#5中配置有e,在区块#6中配置有f这样的程序。另一方面,新程序在区块#2中追加有z这样的程序。因此,在区块#1中配置有a,在区块#2中配置有z,在区块#3中配置有b,在区块#4中配置有c,在区块#5中配置有d,在区块#6中配置有e这样的程序。如此,因为新程序追加了z这样的程序,所以b~e的程序移动至后一位的低位地址的区块。在这里,试着将临时区块认为是用6-0表示的最后的区块#6。

首先,根据从低位地址的区块到高位地址的区块的顺序选择更新对象区块。6-1所表示的区块#5作为最初的更新对象区块。旧程序选择包括更新对象区块的多个高位地址的区块。其结果是,旧程序是区块#1~#5的程序e、d、c、b、a。区块#5的差分数据生成是将区块#5的新程序d和区块#1~5的旧程序e、d、c、b、a作为输入而进行的。显然,由于新程序d和旧程序d类似,生成差分数据的编码软件能够通过将旧程序d作为类似子序列,而转换为所述复制命令。通过以这种方式进行编码,可以生成小尺寸的差分数据。如果在同一区块之间生成差分数据的话,则显然由于旧程序是e而与d的类似性不存在。

接下来在6-2中选择更新对象区块#4。相对于新程序c旧程序为d、c、b、a。同样地,因为旧程序中包含c,所以通过将c作为类似子序列能够转换为复制命令。通过以这种方式进行编码,可以生成小的差分数据。接下来在6-3中选择更新对象区块#3。相对于新程序b旧程序为c、b、a,因此同样地,因为旧程序中包含b,所以可以生成小的差分数据。接下来在6-4中选择更新对象区块#2。相对于新程序z旧程序为b、a。不幸的是,追加的程序z和旧程序的类似性不明。差分数据未必会变小。接下来在6-5中选择头部的更新对象区块#1。相对于新程序a旧程序也是a。能够减小差分数据。

最后,将6-0的临时区块选择为更新对象区块#6。如上所述,临时区块的旧程序被重写,因此无法进行差分更新,所以压缩新程序e并生成压缩数据。

以上,详细地说明了更新对象区块的差分数据生成、压缩数据生成的基本概念。在这里,6-1、6-2、6-3、6-4、6-5中的旧程序选择了配置于更新对象区块及其高位地址的多个区块的程序,但其理由如所说明的那样,由于之后的低位地址的区块优先成为更新对象区块,因此更新对象区块的低位地址的区块已经成为新程序,而不是旧程序。这是强调差分数据是根据新程序和旧程序而生成的这样的概念的结果。

当然,相对于更新对象区块的新程序,旧程序的选择也可以是旧程序和新程序的组合。例如,在将#4选择为更新对象区块的情况下,能够使用与新程序c相对应的程序即区块#5的新程序d、区块#1~#4的旧程序d、c、b、a来生成差分数据。如此一来,由于可以从更广泛的程序中检索类似子序列,因此有可能进一步减小差分数据的大小。但是,生成差分数据的编码软件必须混合旧程序和新程序并生成差分数据,这可能使处理复杂化。

基于上述的更新对象区块的差分数据生成、压缩数据的生成的基本概念来说明实施例。

图7是通过程序生成装置100的pc1执行的编码控制软件的流程图。图8是从编码控制软件被调用并生成更新对象区块的差分数据、压缩数据的编码软件的流程图。此外,图9是从pc1发送数据至服务器2的通信软件的流程图。图10是从pc1接收数据,并将数据发送至程序写入装置310的服务器2的通信软件的流程图。图11是从服务器2接收数据,并将数据发送至程序写入装置310的通信软件的流程图。图12是程序写入装置310和车载控制装置300的通信帧的构成图。定义3种命令。图13是表示车载控制装置300的复原恢复软件的动作的流程图。复原恢复软件由通信软件、复原控制软件和复原软件构成。图14是表示复原控制软件的动作的流程图。图15是复原软件的流程图。

使用以上的图详细地说明实施例。

图7是通过pc1执行的编码控制软件700的流程图。输入是:微型计算机的各区块分割的旧程序old(n),n=1~n720;新程序new(n),n=1~n725;能够唯一指定临时区块的区块编号k715;以及指示差分数据生成的种类指示信息inst710。在本实施例中,种类指示信息inst710仅仅是差分数据生成指示,但也能够扩展成为对于所有的区块生成压缩数据的指示。处理内容是:更新对象区块的选择;对于编码软件差分或者压缩的指示;针对每个更新对象区块启动编码软件并进行差分数据或者压缩数据的生成。

编码控制软件700最初在730中判定inst是否指示差分数据生成。该inst是编码控制软件700的使用者指示的参数。如果为是(yes)的话,则经由730在735中对于变量i设定初始值n。变数i是更新对象区块编号。并且n为最后的区块编号。接下来,在740中,检查变量i是否为临时区块编号k,如果不是(no)的话,则在745中对于变量gen设定差分,在750中对于变量oldb设定更新对象区块和多个区块old(j)、j=1~i的旧程序,在755中对于变量newb设定更新对象区块i的新程序new(i)。然后在760中启动编码软件。

如图8所示,编码软件将种类指示gen、旧程序oldb、新程序nesb作为输入而进行差分数据生成,差分数据被存储至变量diff中,进而差分数据大小被存储至变量diffsize中。详细的说明在图8中后述。在这里重要的点在于,作为相对于更新对象区块i的新程序的旧程序,在更新对象区块i之外,多个区块1~(i-1)的旧程序也成为编码软件的输入。

接下来,当编码软件的执行结束时,在765中差分数据diff被存储至变量diff(i)中,在766中差分数据大小diffsize被存储至变量diffsize(i)中。如此,更新对象区块i的差分数据被存储至diff(i),差分数据大小被存储至diffsize(i)。接下来,在770中,递减变量i并选择下个更新对象区块。在775中,如果i=0的话,则结束所有的更新对象区块的编码,若不是0的话则不结束,因此经过780而再次重复执行740。740检查更新对象区块i是否为临时区块k。如果为是(yes)的话,则在785中对于变量gen设定压缩数据生成指示。在786中将临时区块k的新程序new(k)存储至变量newb,并在787中启动编码软件。

如图8所示,编码软件将种类指示gen、新程序nesb作为输入而进行压缩数据生成,压缩数据被存储至变量diff中,进而压缩数据大小被存储至变量diffsize中。详细的说明在图8中后述。接下来,在编码软件的执行结束时,在788中压缩数据diff被存储至变量diff(i)中,在789中压缩数据大小diffsize被存储至变量diffsize(i)中。如此,更新对象区块i的差分数据被存储至diff(i),差分数据大小被存储至diffsize(i)。如上所述,差分数据或者压缩数据被存储至变量diff(i)、i=1~n,差分数据大小或者压缩数据大小被存储至变量diffsize(i)、i=1~n。并且可知是压缩数据为i=k的情况。

接下来,使用图8说明编码软件800的流程图。

输入为种类指示gen810、包含更新对象区块的多个区块的旧程序oldb820以及更新对象区块的新程序830。首先,在840中编码软件800判定种类指示gen是否为差分。如果为是(yes)的话,以下进行差分数据生成。在850中,差分生成部使用作为输入的oldb820和newb830而检索新程序和旧程序的类似子序列,并将新程序的子序列编码为复制命令。如果复制命令包含旧程序的类似子序列的地址和大小而编码的话,则可以进行解码。如果在旧程序中不存在和新程序的子序列类似的子序列的话,则将新程序的该子序列添加到附加命令中并编码。

如此,差分生成部850使用复制命令和附加命令而编码,但也可以使用其他的差分生成方法而编码。例如,在存在与新程序的子序列类似的旧程序的子序列的情况下,也可以以比特单位从新程序的子序列中减去旧程序的子序列而生成减法子序列,并将一对减法子序列和减法命令作为编码数据。

此外,在新程序的子序列与旧程序的任何子序列都不类似的情况下,将新程序的子序列和新命令的结对作为编码数据并编码。如此,经由855将编码后的编码数据输入至压缩部860。在压缩部860中,将编码数据编码为更小尺寸的差分数据,并在870中将差分数据存储至变量diff。在这里,压缩部860只要是有可逆性的压缩算法的话则可以是任何压缩算法。例如,可以是zip,也可以是像lz77那样的使用了滑动窗口的字典算法。压缩算法能够高效地压缩相同数值连续的子序列,因此所述的减法子序列可以变得非常小。其结果是,能够将差分数据的大小变小。最终在880中将差分数据的大小存储至变量diffsize并结束。

另一方面,如果在840中为否(no)的话,则经由845执行压缩部860。经由835输入新程序newb并进行压缩,从而生成压缩数据。接下来,经由865在870中将压缩数据存储至变量diff。接下来在880中将压缩数据大小存储至变量diffsize并结束。

图9是pc1将差分数据发送至服务器2的流程图。通信软件900在910中发送由pc1生成的差分数据diff(i)、1~n和差分数据大小diffsize(i)、1~n以及临时区块no。

图10是服务器2从pc1接收差分数据,并对程序写入装置310发送数据的通信软件1000的流程图。

在1010中从pc1接收差分数据,在1020中记录数据,并且在1030中将差分数据发送至程序写入装置310。

图11是程序写入装置310从服务器2接收差分数据,并经由车内网络将差分数据发送至车载控制装置300的通信软件1100的流程图。在1110中从服务器2接收差分数据,在1120中记录数据。接下来,在1130中根据车辆的状态判定能否进行软件更新。即,对是否为车辆成为在停止状态铅蓄电池的消耗低的状态,且铅蓄电池的蓄电容量是否为充分的状态进行判定。如果为是(yes)的话,则在1140中生成帧,并在1150中将差分数据发送至车载控制装置300。如果在1130中为否(no)的话,则等待至车辆成为能够更新软件的状态。

在这里,使用图12对于1150的差分数据的发送进行详细说明。

图12示出了将差分数据发送至车载控制装置300情况下的帧的种类。如图12所示,帧有3种形式。

(a)是将更新对象区块的信息通知给车载控制装置300的帧。命令f1是下载命令,种类f2表示发送数据是差分数据还是压缩数据还是新程序本身。大小f3表示发送数据的大小。是种类f2的数据的大小。区块地址f4表示更新对象区块的起始地址。

接下来,(b)是将数据发送至车载控制装置300的帧。命令f1是传输数据命令,计数器f5表示传输数据帧的发送次数。每发送一次则递增计数。区块数据f6是发送的数据。传输数据帧是为了传输由所述下载帧的大小f3所指定的大小的数据而使用的帧,但无法连续地发送车载控制装置300的接收缓存的大小以上的数据。因此,将一定大小的数据分成多次并连续发送之后,需要等待来自车载控制装置300的响应,之后发送下一个一定大小的数据。在这里,由于作为接收缓存的第1区域302a的大小是256b,因此每6个字节进行分割并发送256b的数据。进而,通过反复进行256b单位的发送,发送大小f3的数据。

最后,(c)为下载结束命令。命令f1表示下载结束。即,在下载命令的大小f3的数据结束发送的情况下,发送至车载控制装置300。

以上,说明了程序写入装置310和车载控制装置300的帧,但在说明通信的细节之前,使用图13说明车载控制装置300的复原恢复软件的整体动作。

更新对象区块的差分数据按照第n区块的差分数据diff(n)到第1区块的差分数据diff(1)的顺序被发送到车载控制装置300。首先,将第n个更新对象区块的差分数据diff(n)从程序写入装置310发送到车载控制装置300。

当接收到差分数据diff(n)时,车载控制装置300的复原恢复软件1300在1310中运行复原控制软件,并将通过复原软件复原了的新程序写入第n区块。在写入完成时将响应返回至程序写入装置310。同样地,将第n-1个更新对象区块的差分数据diff(n-1)发送至车载控制装置300。

当接收到差分数据diff(n-1)时,车载控制装置300的复原恢复软件1300在1320中运行复原控制软件,并将通过复原软件复原了的新程序写入第n-1区块。在写入完成时将响应返回至程序写入装置310。同样地,将第1个更新对象区块的差分数据diff(1)发送至车载控制装置300。

当接收到差分数据diff(1)时,车载控制装置300的复原恢复软件1300在1330中运行复原控制软件,并将通过复原软件复原了的新程序写入第1区块。在写入完成时将响应返回至程序写入装置310。最终将临时区块的压缩数据diff(k)发送至车载控制装置300。

当接收到压缩数据diff(k)时,车载控制装置300的复原恢复软件1300在1330中运行复原控制软件,并将通过复原软件复原了的新程序写入作为临时区块的第k区块。在写入完成时将响应返回至程序写入装置310。通过以上的复原恢复软件1300的动作能够对于新程序进行更新。

图14是复原控制软件1400的流程图。说明1个更新对象区块中的详细的动作。

首先,通过下载帧将第i个区块的数据diff(i)的种类f2、更新对象区块的区块地址f4和数据的大小f3从程序写入装置310发送到车载控制装置300。在这里,下载帧的种类f2在临时区块的情况下为压缩,在其他区块的情况下为差分。大小f3为数据的大小diffsize(i)。并且区块地址f4为第1个区块的起始地址。

车载控制装置300的复原控制软件1400在1410中记录下载帧的种类f1。进而,也记录表示更新对象区块的起始地址的区块地址f4、数据的大小f3。接下来,擦除预先决定的临时区块。在擦除完成之后,将响应返回至程序写入装置310。接下来,程序写入装置310发送传输数据帧。首先设定计数器f5为递增,并在区块数据f6中设定diff(i)的256字节的数据并分割传输。

在1411中,当车载控制装置300的复原控制软件1400在第1区域302a中接收到256b的数据时,将已经记录的种类f1输入至复原软件,并启动复原软件。复原软件根据种类f1在第2区域302b中生成新程序。复原控制软件1400将生成的新程序写入至临时区块。在写入完成时,将响应返回至程序写入装置310。复原控制软件1400在1412、1413中重复每当通过传输数据帧接收256b则复原并将新程序写入临时区块的处理。在更新对象区块的差分数据或者压缩数据完成发送时,发送下载结束帧。

在接收到下载结束帧时,车载控制装置300从已经存储的更新对象区块的区块地址f4中指定并擦除更新对象区块。接下来,将临时区块的新程序复制至更新对象区块。在复制完成之后将响应返回至程序写入装置310并结束处理。以上能够完成将新程序写入更新对象区块。

接下来,使用图15说明复原软件1500的流程图。

输入为1510的接收数据的种类f2、1515的第1区域302a的接收数据256b、1520的第2区域302b,1525的闪存的第1~第i区块的旧程序。1525的第1~第i区块的旧程序示出了图6所示的旧程序的范围。

复原软件1500大致由解压部1530和差分复原部1545两部分构成。输入1515的接收数据256b是压缩数据或者差分数据,但由于都被压缩,因此首先通过1530的解压部来解压。其结果是,生成1535的解压数据。在这里,解压部的解压软件是与图8的压缩部860配对的软件。但是压缩部860和解压部1530不受限制,只要是具有可逆性的压缩、解压软件即可。例如,可以是zip,也可以是滑动窗口字典式的lz77。

接下来,在1540中判定接收数据的种类f2是差分还是压缩,如果是差分的话,则通过1545的差分复原部1550并使用1535的解压数据和1525的第1~第i区块的旧程序而复原1550的复原程序。详细地说,考虑解压数据1535是由复制命令、附加命令和新子序列构成的情况。当为复制命令时,1545的差分复原部从1525的旧程序复制并生成1550的复原程序。另一方面,当为附加命令时,利用新子序列生成1550的复原程序。通过反复进行该操作能够复原新程序。

此外,考虑解压数据1535是由减法命令和减法子序列的结对或者新程序的子序列和新命令的结对构成的情况。减法命令是新程序的子序列和旧程序的类似子序列的差分。因此,差分复原部1545将减法子序列和1525的旧程序的被指定的子序列相加,从而生成为1550的复原程序。

此外,如果是新命令的话,则将作为新命令的结对的子序列生成为1550的复原程序。如此,1545的差分复原部能够复原新程序并生成1550的复原程序。接下来将1550的复原程序存储至第2区域302a中。

接下来,说明在1540中种类f2为压缩情况下的处理。如果种类f2为压缩的话,则1535的解压数据为新程序本身。因此在1560中将解压数据1560存储至第2区域302b并结束处理。

如此,复原软件1500能够根据种类f2识别压缩或者差分并复原新程序,因此能够根据图13的1310~1330的差分数据复原新程序,并能够根据1340的压缩数据复原新程序。

以上,说明了在使用了内置有由少量的ram使用量和大区块构成的闪存的微型计算机的车载控制装置中,可以进行差分重编程的复原处理,并且,即使是增加了大的变化的新程序,也能够通过减小差分数据的大小从而在短时间内复原新程序的实施例。

接下来,对于使用在本实施例中详细地说明的复原恢复软件而在短时间内完成已经出厂的车载控制装置的重编程的实施例进行说明。

首先,已经出厂的车载控制装置是指图16的(a)的原有ecu构成的闪存构成的ecu。即,由启动部和旧程序构成,在启动部中没有安装差分更新软件而安装了基于全文数据的更新软件。目的在于,提供实现这样的原有ecu的基于差分的高速更新的单元。

为了实现基于差分数据的更新,当然需要将复原差分数据的复原恢复软件下载至车载控制装置并运行。使用图16说明其概念和步骤。

首先,(a)原有ecu构成如已经说明的那样,由启动部和旧程序构成,在启动部中安装有初始化处理、基于现有的全文数据的更新软件。此外,如果在初始化处理中为异常的话,则运行启动部的基于全文数据的更新软件,如果没有异常的话,则运行应用并进行控制。

(b)复原恢复软件下载表示将复原恢复软件从程序写入装置下载到闪存的128kb的区块并写入的状态。如此,将复原恢复软件下载到预定的区块。

接下来,(c)差分更新启动复原恢复软件,并且通过已经在实施例中说明的步骤进行差分更新而将剩余的所有的区块重写为新程序。

最后,(d)在复原恢复软件部更新中,将剩余的128kb的区块的复原恢复软件重写为新程序。通过在这样的步骤中结合基于全文数据的更新和基于差分数据的差分更新,试图缩短重编程时间。

使用图17说明实现这样的步骤的详细的动作。1700是原有ecu差分更新的步骤。在本实施例中,是将复原恢复软件写入至第2区块。

从程序写入装置310向车载控制装置300下载复原恢复软件至第2区块(b)。该下载是通过启动部的全文数据更新软件而实现的。车载控制装置300将在1710中接收到的复原恢复软件(复原控制软件、复原软件)写入第2区块。在写入完成时,将响应返回至程序写入装置310。

接下来,程序写入装置310向车载控制装置300发出ecu重置请求。在1720中,车载控制装置执行ecu重置,在执行启动部的初始化处理之后,如果没有异常的话,则启动第2区块的复原控制软件并返回响应。

接下来,程序写入装置310将第n~第3区块的编码数据(差分数据或者压缩数据)发送给车载控制装置300(c),在1730中,每当接收到编码数据diff(n)~diff(3)时,车载控制装置300运行复原控制软件和复原软件,并使用差分数据或者压缩数据复原新程序,将新程序从第n区块写入至第3区块,设置诊断异常代码并返回响应。

接下来,程序写入装置310请求ecu重置。车载控制装置在1740中执行ecu重置并执行启动部的初始化处理,通过诊断异常而启动启动部的全文数据更新软件,并返回响应。

接下来,程序写入装置310下载第2区块的新程序(d)。车载控制装置300在1750中接收第2区块的新程序,并将新程序写入至第2区块。

以上,旧程序被重写为新程序。

在本实施例中,在ecu重置之后启动复原控制软件作为应用,在启动启动部的全文数据更新软件的控制中设定诊断异常代码从而进行控制,但也可以进行基于模式的设定。即,在重编程模式时,可以启动启动部的全文数据更新软件,在正常模式时,可以启动复原控制软件。通过哪种方法切换都可以。

如此,可以看出,本实施例的原有ecu更新步骤由三个阶段构成。第1阶段是基于全文数据更新的复原恢复软件的下载。第2阶段是基于复原恢复软件执行的差分更新。第3阶段是基于全文数据更新的复原恢复软件部的新程序写入。

图18是以即使在预先将复原软件存储在闪存中的ecu中复原软件存在不良也进行更新为目的的流程图。因此,在ecu中存在存储预定的复原软件和复原控制软件的闪存的区块。在图18中,首先,下载复原软件并进行将复原软件写入第2区块的处理1810。接下来,进行ecu重置并运行复原控制软件1820。接下来,下载第n~第3区块的编码数据diff(n)~diff(3),在1830中,每当接收到编码数据diff(n)~diff(3)时,运行下载控制软件和下载了的复原软件,使用差分数据、压缩数据复原新程序,并将新程序从第n区块写入到第3区块,设定诊断异常代码并返回响应。

这是以这种方式连续地更新复原软件和编码数据的流程图,但是显然也可以只更新复原软件。

总而言之,可以如下述那样描述本实施例所涉及的车载控制装置。

一种车载控制装置,其能够基于从更新工具提供的更新内容来更新程序,具备:第1存储器,其具有存储所述程序的多个区块;以及第2存储器,

在更新所述程序时,将所述程序和所述更新程序的差分数据存储至所述第2存储器,

使用所述差分数据和更新前的旧程序,使所述多个区块中的更新对象区块用的更新程序再现于与所述更新对象区块不同的其他区块中,

将所述其他区块中再现的更新程序写入至所述更新对象区块。

此外,从系统的观点出发,上述处理可以如下述那样描述。

一种程序更新系统,其基于从更新工具提供的更新内容而更新安装在车载控制装置上的程序,

所述车载控制装置具备:第1存储器,其具有存储所述程序的多个区块;以及第2存储器,

在更新所述程序时,所述更新工具将所述程序和更新程序的差分数据发送至所述车载控制装置,

所述车载控制装置将接收到的所述差分数据存储在所述第2存储器中,并使用所述差分数据和更新前的旧程序,使所述多个区块中的更新对象区块用的更新程序再现于与所述更新对象区块不同的其他区块中,并将所述其他区块中再现的更新程序写入至所述更新对象区块。

此外,从方法的观点出发,上述处理可以如下述那样描述。

一种程序更新方法,其基于从更新工具提供的更新内容而更新安装在车载控制装置上的程序,

所述车载控制装置具备:第1存储器,其具有存储所述程序的多个区块;以及第2存储器,

该程序更新系统包括:所述更新工具将所述程序和更新程序的差分数据发送至所述车载控制装置的步骤;所述车载控制装置将接收到的所述差分数据存储在所述第2存储器中的步骤;所述车载控制装置使用所述差分数据和更新前的旧程序,使所述多个区块中的更新对象区块用的更新程序再现于与所述更新对象区块不同的其他区块中的步骤;以及所述车载控制装置将所述其他区块中再现的更新程序写入至所述更新对象区块的步骤。

此外,从差分更新软件的观点出发,上述处理可以如下述那样描述。

一种程序更新软件,其以基于更新内容而更新安装在车载控制装置上的程序的方式,使搭载于所述车载控制装置上的运算装置发挥作用,

在所述车载控制装置中,具备:第1存储器,其具有存储所述程序的多个区块;以及第2存储器,

在更新所述程序时,通过以下方式使所述运算装置发挥作用:从所述第2存储器参照所述程序和更新数据的差分数据,并且从第1存储器参照更新前的旧程序,使所述多个区块中的更新对象区块用的更新程序再现于与所述更新对象区块不同的其他区块中,将所述其他区块中再现的更新程序写入至所述更新对象区块。

以上详细地进行了描述,但再次将本实施例整体地进行整理地话,如下所述。首先,本实施例的目的有两个。一个目的在于,在使用了内置有由少量的ram使用量和多个区块构成的大闪存的微型计算机的车载控制装置中,也能进行差分重编程的复原处理,并且,即使是增加了大的变化的新程序,通过减小差分数据的大小,也能够在短时间内复原新程序。

第二个目的在于,提供一种对于不具有差分更新功能的、所谓的原有的车载控制装置或者原有ecu进行差分更新的单元。原有的车载控制装置是指具有由称为启动部的不可重写区域和称为应用部的可重写区域构成的闪存、以及作为工作区域而使用的临时储存的车载控制装置,不可重写区域至少配置了微型计算机等的初始化软件、程序重写装置和进行通信的通信软件、闪存写入软件以及基于全文更新软件,可重写区域配置了程序、数据。本实施例提供了实现上述两个目的的车载控制装置、程序更新系统以及程序更新软件。

用于解决本实施例的问题的1个手段具备:第1存储器,其具有存储程序的多个区块;以及临时存储数据的第2存储器,在更新所述程序时,将所述程序和更新程序的差分数据存储至所述第2存储器,使用存储的所述差分数据和更新前多个区块的旧程序,在与所述更新对象区块不同的其他区块中复原/生成更新对象区块用的更新程序,之后将所述其他区块复制至所述更新对象区块。如此,要点在于,通过参照连续的多个旧程序来复原/生成更新对象区块的新程序,可以减小差分数据大小。在这里,临时复原/生成到其他区块,之后复制到更新对象区块,因此将所述其他区块称为临时区块。

用于解决本实施例的第2个手段为了对于不具有差分更新功能的车载控制装置、即原有ecu进行差分更新,通过由3个阶段构成的更新单元来解决。在这里,自然需要下载具有差分更新功能的复原恢复软件,但并非仅仅下载差分更新软件即可。下载的复原恢复软件由以下等的功能构成:从程序写入装置接收通信命令、差分数据的通信功能;根据接收到的差分数据和旧程序而复原/生成新程序的复原功能;以及识别通信命令的种类并启动复原功能,并进行将复原/生成的新程序写入应用部的区块的处理的复原控制功能。进而,将这样构成的复原恢复软件下载至应用部的头部成为一个要点。

此外,原有ecu是由称为启动部的不可重写区域和称为应用部的可重写区域构成的闪存构成,在启动部中存在基于全文数据的全文更新软件,在应用部中配置有可更新的程序、数据。

以下,说明由3个阶段构成的更新单元。

在最初的第1阶段中,对于原有ecu利用原有的全文更新软件将所述复原恢复软件下载至应用部的头部并重置。在第2阶段中,将所述复原恢复软件作为应用启动,通过差分更新从差分数据和旧程序复原/生成新程序,更新应用部的区块并重置。在第3阶段中,利用原有的全文更新软件将新程序下载至所述应用部的头部。以上说明了用于解决该问题的基本概念,下面将进一步地详细地说明。

在最初的第1阶段中,将复原恢复软件下载至应用部的头部并进行重置。在第2阶段中,在重置之后不久,首先运行启动部。在该运行后,运行配置于应用部的头部的复原恢复软件。复原恢复软件接收更新对象区块的差分数据,并参照应用部的多个区块的旧程序,将新程序复原/生成至临时区块,之后将临时区块复制到更新对象区块。在对于所有的更新对象区块结束了上述复原/生成和复制处理之后,进行重置。在最后的第3阶段中,启动部的全文更新软件将新程序写入应用部的头部。通过以上的基本操作,应用部的所有区块被重写为新程序。

根据本实施例的第1个手段,即使是增加了大的变化的新程序,也能够在复原时参照广泛区域的旧程序。其结果是,由于可以减小差分数据大小,因此车载控制装置的复原软件可以高速地复原/生成新程序。进而还有一个巨大的效果。如果在差分更新中途车载电池的容量消失,即使发生断电等意外事件,也可以进行重试。由于差分更新中的区块是所述临时区块,因此更新对象区块的旧程序保持原样。因此,即使此时发生断电,也可以在电源复原后再次参照旧程序来复原/生成新程序。而且,即使在将临时区块复制到更新目标区块时发生断电的情况下,更新对象区块的旧程序也在中途被破坏,但是由于新程序保留在临时区块中,因此在电源复原后再次将新程序写入更新对象区块即可。如此,通过对临时区块进行复原/生成的手段,能够减小差分数据,并且具有即使在发生了断电等异常的情况下,若重试则可以复原的优点。

根据本实施方式的两个手段,能够高速地对于不具有差分更新功能的车载控制装置进行差分更新,因此能够大幅地扩大车载控制装置的差分更新对象范围。

如上所述,不具有差分更新功能的车载控制装置也就是所谓的原有ecu的差分更新具有3个阶段。

原有ecu首先执行启动部的程序。对微型计算机内的存储器没有异常或者外部电路中没有异常等诊断进行之后的结果,是在没有异常的情况下运行应用部的程序。在应用部的程序被运行的状态下,车载写入装置可以启动启动部的全文更新软件。即,已经安装在原有ecu中的“启动全文更新软件”命令处理已经被搭载于原有ecu中。在第1阶段中,利用全文更新软件接收“启动全文更新软件”命令并执行复原恢复软件的下载、重置。在第2阶段中,在运行启动部之后,应用部的软件即复原恢复软件被运行。复原恢复软件处于来自车载写入装置的命令等待状态。在该状态下,通常的程序更新是不可能的。这是因为复原恢复软件在应用部的闪存上运行,并且程序更新是重写该闪存的处理,因此变为通过自己来重写自己本身。因此,只有当从车载写入装置接收到“通过自己来重写自己本身”这样的特殊命令时才能够重写闪存。如上所述,如果复原恢复软件被配置在应用部的头部区块或在相邻的2~3个区块的范围内,则其他的应用部的大多数区块可以通过差分更新来重写。如此,要点在于除了复原恢复软件搭载区块之外,对于应用部的区块进行差分更新。在第2阶段的最后进行重置。

最后,在第3阶段中,在启动部被运行之后,应用部的复原恢复软件也被运行。在这里,从车载写入装置接收到“启动全文更新软件”命令并启动启动部的全文更新软件。通过利用全文更新软件,对于搭载有复原恢复软件的区块进行全文更新并重写为新程序。

如上所述,要点在于,在第1阶段、第3阶段中,由于存在原有ecu中已经安装的“启动全文更新软件”命令,因此利用该命令进行全文更新,在第2阶段中,作为复原恢复软件的一部分的通信软件正在工作,该通信软件接收“通过自己来重写自己本身”命令并进行差分更新。复原软件可以收到这样的新命令可以接收。复原恢复软件可以接收这样的新的命令。

接下来,表示对下载至已经出厂的车载控制装置的复原恢复软件进行变革之后的构成的实施例。

图16是原有ecu的闪存构成图。已经详细描述了原有ecu的闪存构成,但是将再次说明。首先,(a)在原有ecu构成中,闪存由程序不可重写区域的启动部和程序可重写区域的应用部构成。启动部具有:用于对诊断存储器初始化、程序是否被破坏的程序、配置于原有ecu的应用部的旧程序进行全文更新的全文更新软件;用于接收来自程序写入装置的指示命令、全文的新程序的通信软件;以及用于将新程序写入应用部的闪存写入软件。接下来,(b)在复原恢复软件下载的图中,应用部的头部是第2区块。这并不意味着物理配置为头部,而是意味着从启动部最初运行的应用部的程序的头部。在这里,第2区块的头部设为从启动部向应用分支的头部。即,下载差分复原软件的区块是第2区块。这是因为如果在这里下载,可以从启动部运行差分复原软件。

(c)差分更新的图是将复原恢复软件下载到第2区块,并写入闪存的应用部的图。如此,第2区块的旧程序成为被复原恢复软件覆盖的状态。接下来是在ecu重置之后,启动复原恢复软件,接收差分数据并复原/生成新程序,所有其他的区块已被重写为新程序的图。最后的(d)复原恢复软件部更新的图是通过启动部的全文更新软件,第2区块被重写为新程序的图,可以看出所有的区块被重写为新程序。详细地描述了以上的原有ecu的闪存构成。

接下来,使用图17说明改变构成后的复原恢复软件。首先,(b)复原恢复软件的构成由以下4个构成:使用差分数据和配置于闪存的应用部的旧程序复原/生成新程序的复原软件;在差分更新时接收来自程序重写装置的通信命令、差分指示命令等、并发送响应的通信软件;启动所述复原软件并复原/生成新程序,指示将生成的新程序写入闪存的应用部的复原控制软件;以及将新程序写入闪存的闪存写入软件。是将闪存写入软件追加到目前为止的复原恢复软件的构成的构成。

原有ecu的差分更新在以下3个阶段中执行。在阶段1中,原有ecu使用启动部的通信软件和全文更新软件,(b)接收下载的复原恢复软件,并且使用启动部的闪存写入软件将复原恢复软件写入配置于旧程序中的第2区块,并进行重置。即,破坏旧程序并写入复原恢复软件的处理。

在阶段2中,原有ecu通过重置,在运行启动部之后,运行下载到应用部的第2区块的复原恢复软件。首先,初始化通信软件、闪存写入软件等并设定为可运行状态。接下来,运行复原控制软件,并设定为来自程序重写装置的命令等待状态。接下来,在从程序重写装置接收到第n区块~第3区块的差分数据(diff)时(c),启动复原软件并根据第n区块~第3区块的差分数据和旧程序进行差分更新,从而复原/生成新程序,并且使用闪存写入软件将第n~第3区块的新程序写入到第n~第3区块的闪存中。然后进行重置。

在阶段3中,使用原有ecu的启动部的通信软件和全文更新软件从程序写入装置接收发送的(d)第2区块的新程序,并使用启动部的闪存写入软件将第2区块的新程序写入第2区块并进行重置。因此,将通过复原恢复软件破坏的第2区块被重写为新程序。

以上,在由3个阶段构成的原有ecu的差分更新方法中,全文更新处理被限定为第2区块的两次(阶段1和3),并且第3~第n区块能够进行差分更新,因此可以期待高速重写。

接下来,总结并记载阶段1~3的处理。阶段1是将复原恢复软件下载到原有ecu的应用部的头部的阶段。首先,当从程序重写装置有程序更新指示时,原有ecu启动配置在启动部中的原有的全文更新软件。接下来,当差分复原软件从程序重写装置被传输到应用部(第2区块)时,原有ecu使用启动部的原有的全文更新软件并接收。在这里,接收到的差分复原软件的细节包括进行差分复原的复原软件、在应用部中工作的通信软件、复原控制软件、以及闪存写入软件这4个。接下来,使用启动部的原有闪存写入软件将差分复原软件写入至应用部的第2区块。然后,进行重置,阶段1结束。

接下来说明阶段2。在重置之后,首先,运行启动部的程序。如果启动部的诊断处理等正常的话,则执行配置在应用部的头部(第2区块的头部)的程序(复原恢复软件)。复原恢复软件的运行顺序是,首先,初始化通信软件的通信部,并运行通信软件。接下来,初始化闪存写入软件,闪存写入软件成为可运行状态。接下来,运行复原控制软件。说明复原控制软件的详细的动作。首先,从程序重写装置从应用部的通信软件接收差分数据diff(n)~diff(3)。接下来,运行复原软件,并使用diff(n)~diff(3)和配置在第n~第3区块中的旧程序来复原/生成第n~第3区块的新程序,并使用应用部的闪存写入软件写入至第n~第3区块。接下来,重置ecu,阶段2结束。

最后,说明阶段3。在重置之后和阶段2同样地,运行启动部,接下来运行第2区块的复原恢复软件。当从程序重写装置有程序更新指示时,原有ecu初始化并运行配置在启动部中的启动部的通信软件、闪存写入装置,并启动原有的全文更新软件。接下来,使用启动部的通信软件接收从程序重写装置发送的第2区块的新程序。接下来,使用启动部的闪存写入软件将第2区块的新程序写入闪存的第2区块。阶段3结束。

以上,应用部的所有第2~第n区块被全部重新为新程序。当ecu重置时,可以运行新程序。如上所述,详细说明了将闪存写入软件追加到复原恢复软件上的构成的实施例。

总而言之,本实施例所涉及的车载控制装置、程序更新软件可以如下述那样描述。

1.一种车载控制装置,其能够基于从更新工具提供的更新内容,将存储的旧程序更新为新程序,

所述车载控制装置的特征在于,具备:非易失性的第1存储器,其具有存储所述程序的多个区块;以及临时存储数据的第2存储器,

所述更新工具将根据作为更新对象的更新对象区块的新程序和旧程序生成的差分数据发送至车载控制装置,

所述车载控制装置,具有:将所述差分数据存储在第2存储器中,并使用所述差分数据和所述旧程序,将所述更新对象区块的新程序复原/生成至与所述更新对象区块不同的临时区块的第3单元;以及在擦除所述更新对象区块之后,将在所述临时区块复原/生成的新程序写入所述更新对象区块的第4单元,通过对所有的更新对象区块反复使用第3和第4单元,将新程序重写至第1存储器。

2.一种程序更新软件,其以基于从更新工具提供的更新内容,将存储的旧程序更新为新程序的方式,使搭载于所述车载控制装置的运算装置发挥作用,所述程序更新软件的特征在于,

所述车载控制装置具备:非易失性的第1存储器,其具有存储所述程序的多个区块;以及临时存储数据的第2存储器,

所述更新工具将根据作为更新对象的更新对象区块的新程序和旧程序生成的差分数据发送至车载控制装置,

所述程序更新软件,具有:将所述差分数据存储在第2存储器中,并使用所述差分数据和所述旧程序,将所述更新对象区块的新程序复原/生成至与所述更新对象区块不同的临时区块的第3单元;以及在擦除所述更新对象区块之后,将在所述临时区块复原/生成的新程序写入所述更新对象区块的第4单元,通过对所有的更新对象区块反复使用第3和第4单元,将新程序重写至第1存储器。

3.一种车载控制装置,其能够基于从更新工具提供的更新内容,将存储的旧程序更新为新程序,

所述车载控制装置的特征在于,具备:非易失性的第1存储器,其具有存储所述程序的多个区块;以及临时存储数据的第2存储器,第1存储器由不可重写区域和可重写区域构成,在不可重写区域中,配置有具有更新工具、接收通信命令或者全文数据的通信功能、将程序和数据写入所述区块的闪存写入功能、以及基于全文数据的全文更新功能的软件,在可重写区域配置有可更新的程序以及数据,

通过以下三个阶段进行程序更新:第1阶段,使用不可重写区域的软件将具有通信功能、复原功能、复原控制功能的复原恢复软件写入可写入区域的头部的区块;第2阶段,启动所述复原恢复软件并根据差分数据和区块的旧程序复原/生成新程序,并写入所述可重写区域的区块;以及第3阶段,使用不可重写区域的软件向可写入区域的头部的区块写入该区块的新程序。

4.一种程序更新软件,其以基于从更新工具提供的更新内容,将存储的旧程序更新为新程序的方式,使搭载于所述车载控制装置的运算装置发挥作用,所述程序更新软件的特征在于,

所述车载控制装置的具备:非易失性的第1存储器,其具有存储所述程序的多个区块;以及临时存储数据的第2存储器,第1存储器由不可重写区域和可重写区域构成,在不可重写区域中,配置有具有更新工具、接收通信命令或者全文数据的通信功能、将程序和数据写入所述区块的闪存写入功能、以及基于全文数据的全文更新功能的软件,在可重写区域配置有可更新的程序以及数据,

通过以下三个阶段进行程序更新:第1阶段,使用不可重写区域的软件将具有通信功能、复原功能、复原控制功能的复原恢复软件写入可写入区域的头部的区块;第2阶段,启动所述复原恢复软件并根据差分数据和区块的旧程序复原/生成新程序,并写入所述可重写区域的区块;以及第3阶段,使用不可重写区域的软件向可写入区域的头部的区块写入该区块的新程序。

5.一种车载控制装置,其能够基于从更新工具提供的更新内容,将存储的旧程序更新为新程序,

所述车载控制装置的特征在于,具备:非易失性的第1存储器,其具有存储所述程序的多个区块;以及临时存储数据的第2存储器,第1存储器由不可重写区域和可重写区域构成,在不可重写区域中,配置有具有更新工具、接收通信命令、全文数据的通信功能、将程序和数据写入所述区块的闪存写入功能、以及基于全文数据的全文更新功能的软件,在可重写区域配置有可更新的程序以及数据,

不可重写区域的具有全文更新功能的软件在通过不可重写区域的通信功能接收到复原恢复软件时,使用不可重写区域的闪存写入功能将所述复原恢复软件写入可重写区域的头部,并进一步地重置车载控制装置并进行再启动,所述复原恢复软件具有:从更新工具接收通信命令、差分数据的通信功能;根据接收到的差分数据和所述区块的程序复原/生成新程序的复原功能;将新程序写入所述区块的闪存写入功能;以及识别通信命令的种类并通过所述复原功能进行将复原/生成的新程序写入所述区块的处理的复原控制功能,

所述更新工具具有:第5单元,在所述再启动之后,将根据可重写区域的更新对象区块的新程序和多个区块的旧程序生成的差分数据发送至车载控制装置,所述车载控制装置启动所述复原恢复软件,并使用所述差分数据和旧程序复原/生成新程序;以及第6单元,将所述新程序写入所述更新对象区块,通过对于所有的更新对象区块反复执行第5单元、第6单元,将所述可重写区域的更新对象区块更新至新程序,并进一步地重置车载控制装置并进行再启动,

不可重写区域的具有全文更新功能的软件在通过不可重写区域的通信功能接收到配置有所述复原恢复软件的可重写区域的头部区块的新程序时,使用不可重写区域的闪存写入功能写入所述头部区块,由此将可重写区域更新至新程序。

6.一种程序更新软件,其以基于从更新工具提供的更新内容,将存储的旧程序更新为新程序的方式,使搭载于所述车载控制装置的运算装置发挥作用,所述程序更新软件的特征在于,

所述车载控制装置具备:非易失性的第1存储器,其具有存储所述程序的多个区块;以及临时存储数据的第2存储器,第1存储器由不可重写区域和可重写区域构成,在不可重写区域中,配置有具有更新工具、接收通信命令、全文数据的通信功能、将程序和数据写入所述区块的闪存写入功能、以及基于全文数据的全文更新功能的软件,在可重写区域配置有可更新的程序以及数据,

不可重写区域的具有全文更新功能软件在通过不可重写区域的通信功能接收到复原恢复软件时,使用不可重写区域的闪存写入功能将所述复原恢复软件写入可重写区域的头部,并进一步地重置车载控制装置并进行再启动,所述复原恢复软件具有:从更新工具接收通信命令、差分数据的通信功能;根据接收到的差分数据和所述区块的程序复原/生成新程序的复原功能;将新程序写入所述区块的闪存写入功能;以及识别通信命令的种类并通过所述复原功能进行将复原/生成的新程序写入所述区块的处理的复原控制功能,

所述更新工具具有:第5单元,在所述再启动之后,将根据可重写区域的更新对象区块的新程序和多个区块的旧程序生成的差分数据发送至车载控制装置,所述车载控制装置启动所述复原恢复软件,并使用所述差分数据和旧程序复原/生成新程序;以及第6单元,将所述新程序写入所述更新对象区块,通过对于所有的更新对象区块反复执行第5单元、第6单元,将所述可重写区域的更新对象区块更新至新程序,并进一步地重置车载控制装置并进行再启动,

不可重写区域的具有全文更新功能的软件在通过不可重写区域的通信功能接收到配置有所述复原恢复软件的可重写区域的头部区块的新程序时,使用不可重写区域的闪存写入功能写入所述头部区块,由此将可重写区域更新至新程序。

符号说明

1…pc

2…服务器

3…车载系统

100…程序生成装置

101…运算装置

102…输入装置

103…显示装置

104…通信装置

105…存储装置

201…运算装置

202…输入装置

203…显示装置

204…通信装置

205…存储装置

300…ecu(车载控制装置)

301…微型计算机(运算装置)

302…sram(易失性存储器)

302a…sram的第1区域

302b…sram的第2区域

303…闪存(非易失性存储器)

304…各种ic

305…通信装置

310…网关(程序写入装置)

311…微型计算机

312…sram

313…闪存

314…各种ic

315…通信装置(can协议)

316…通信装置(车辆外部的网络的协议)

700…编码控制软件

710…种类指示信息inst

715…临时区块编号k

720…旧程序old(n),n=1~n

725…新程序new(n),n=1~n

800…编码软件

810…种类指示gen

820…包括更新对象区块的多个区块的旧程序oldb

830…更新对象区块的新程序newb

900…pc的通信软件

1000…服务器的通信软件

1100…程序写入装置的通信软件

1300…复原恢复软件

1400…复原控制软件

1500…复原软件。

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