JP6568947B2 - 車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェア - Google Patents

車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェア Download PDF

Info

Publication number
JP6568947B2
JP6568947B2 JP2017543171A JP2017543171A JP6568947B2 JP 6568947 B2 JP6568947 B2 JP 6568947B2 JP 2017543171 A JP2017543171 A JP 2017543171A JP 2017543171 A JP2017543171 A JP 2017543171A JP 6568947 B2 JP6568947 B2 JP 6568947B2
Authority
JP
Japan
Prior art keywords
program
update
block
software
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017543171A
Other languages
English (en)
Other versions
JPWO2017057111A1 (ja
Inventor
黒澤 憲一
憲一 黒澤
中原 章晴
章晴 中原
秀敏 寺岡
秀敏 寺岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Automotive Systems Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Publication of JPWO2017057111A1 publication Critical patent/JPWO2017057111A1/ja
Application granted granted Critical
Publication of JP6568947B2 publication Critical patent/JP6568947B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60KARRANGEMENT OR MOUNTING OF PROPULSION UNITS OR OF TRANSMISSIONS IN VEHICLES; ARRANGEMENT OR MOUNTING OF PLURAL DIVERSE PRIME-MOVERS IN VEHICLES; AUXILIARY DRIVES FOR VEHICLES; INSTRUMENTATION OR DASHBOARDS FOR VEHICLES; ARRANGEMENTS IN CONNECTION WITH COOLING, AIR INTAKE, GAS EXHAUST OR FUEL SUPPLY OF PROPULSION UNITS IN VEHICLES
    • B60K35/00Instruments specially adapted for vehicles; Arrangement of instruments in or on vehicles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Transportation (AREA)
  • Mechanical Engineering (AREA)
  • Stored Programmes (AREA)

Description

本発明は、車載制御装置、プログラム書き込み装置、プログラム生成装置及びプログラムに関する。
従来のリプログラミングでは、低速なCAN(Controller Area Network)を介して書込みツールとしてのPC(Personal Computer)と車載制御装置(ECU:Engine Control Unit)を接続し、ロードモジュール(新プログラム)を分割転送しながらECUのフラッシュメモリへ書込みを行っている。
また、旧プログラムに対する新プログラムの更新部分が小さい場合においても、新プログラム全体をCAN経由で転送し、新プログラム全体の書込みを行っている。
従って、書込みに要する時間がかかるという問題があった。これに対し、従来から差分リプログラミングの考え方が提案されている(例えば、特許文献1参照)。すなわち、特許文献1の段落〔0019〕には、書き換え方式の1つとして「ブロック単位で新旧プログラムの差分データを作成する手段」が記載されている。さらに段落〔0064〕には、更新対象ブロックの旧プログラムをSDRAMへ転送して、差分データと旧プログラムを用いて新プログラムをSDRAMへ復元し、更新対象ブロックを消去してから、新プログラムを書込んでいる。
特許文献2では、段落〔0006〕において、少ないRAM使用量で差分更新を実現する手段が記載されている。更新対象のブロックの旧プログラムをRAMへ転送するのでは無く、フラッシュメモリの他のブロックへ転送する方法である。転送した後に、更新対象のブロックを消去し、差分データと転送した旧プログラムを用いて新プログラムを復元し、新プログラムを更新対象ブロックへ書込むというやりかたである。この処理を全ての更新対象ブロックに対して繰返し行うことで新プログラムをフラッシュメモリへ書込むことができる。ただし、他のブロックにも書込むべき新プログラムが存在する場合は、旧プログラムは既に消去されているので、全文データを用いた従来の更新を行っている。
このように、少ないRAM使用量でも差分リプログラミングを実現する技術が開発されている。
特開2012−190075号公報 特開2011−81561号公報
特許文献1の技術は、更新対象ブロックの旧プログラムと差分データと復元した新プログラム全てをRAM上に配置している。結果として、RAM容量よりも大きなブロックで構成されたフラッシュメモリを内蔵したマイコンを使用した車載制御装置では原理的に差分復元できないことになる。さらに、新プログラムの差分データは、同一ブロックに配置された旧プログラムから生成しており、差分データのサイズが大きくなってしまう問題がある。差分データのサイズが大きくなると車載制御装置への差分データの転送時間が長くなり、結果として更新時間が長くなってしまう。
以下、詳しく説明する。特許文献1の段落〔0019〕に記載されている差分データを作成する手段では、更新対象のブロックに配置される新プログラムの差分データを、同じ更新対象のプロックに配置されている旧プログラムを用いて生成している。一般的に、差分データサイズを小さくするには、差分データの差分抽出処理などにおいて、新プログラムの部分列(部分命令列)と類似の部分列を旧プログラムから検索して見つけ出し、部分列をコピーコマンドなどに置き換える。一方、新規に追加された部分列の場合には、旧プログラムには存在しないことが多い。この場合は、追加コマンドで新規部分列を記憶しておく。このコピーコマンドと追加コマンド及び記憶された新規部分列が差分データとなる。この観点から、類似の部分列を検索する範囲が1つのブロックに限定されていることが問題となる。できるだけ多くの旧プログラムを検索して、より類似性のある部分列を見つけて、コピーコマンドへ置き換えたほうが差分データのサイズを小さくできると考えられるからである。
特許文献2記載の方式によれば、差分更新時にRAM使用量を少なくできる。前述したように、まず更新対象のブロック以外の他のブロックを選択し、その選択したブロックを消去してから更新対象ブロックの旧プログラムを前記選択したブロックへ転送している。次に、更新対象ブロックを消去し、RAM上の差分データと前記選択したブロックの旧プログラムから新プログラムを更新対象ブロックへ書込んでいる。このようにフラッシュメモリの他のブロックを使用することで、RAMの使用量を少なくしている。
しかし、この方式の復元処理は、差分データと、選択したブロックの旧プログラムだけから新プログラムを復元していることがわかる。従って、差分データ生成時も更新対象ブロックの新プログラムと、同じ1つのブロックの旧プログラムの範囲から類似性のある部分列を検索していることを意味するため、検索範囲が狭いという意味で、差分データのサイズが大きくなってしまうという問題がある。もちろん旧プログラムと新プログラムが小さな変更であった場合は、旧プログラムの検索範囲が狭いとは言えないが、大きな変更があった場合には旧プログラムの検索範囲を大きくしたほうが、類似性のある部分列を見つけ易いと言える。
本発明の目的は、少ないRAM使用量でかつ大きなブロックで構成されたフラッシュメモリを内蔵したマイコンを使用した車載制御装置においても、差分リプログラミングの復元処理を実現可能とし、かつ、大きな変更が加えられた新プログラムであっても、差分データのサイズを小さくすることによって、短時間で新プログラムを復元することができる車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェアを提供することにある。
本発明は、更新ツールから提供される更新内容に基づいてプログラムを更新可能な車載制御装置であって、前記プログラムを格納する複数のブロックを備える第1のメモリと、第2のメモリとを備え、前記プログラムの更新の際、前記プログラムと前記更新プログラムとの差分データを前記第2のメモリに格納し、前記差分データと更新前の旧プログラムとを用いて、前記複数のブロックの中の更新対象ブロック用の更新プログラムを、前記更新対象ブロックとは異なる他のブロックに再現し、前記他のブロックに再現された更新プログラムを前記更新対象ブロックに書き込む。
本発明によれば、小さなSRAMと大きなブロックを有するフラッシュメモリを内蔵するマイコンで構成された車載制御装置において、大きな変更が加えられた新プログラムであっても、差分更新を高速かつ容易に行うことができる。上記以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
発明の実施形態によるシステムの全体構成を示す模式図である。 図1に示すPCの構成図である。 図1に示す車載システムの構成図である。 図3に示すECUのSRAMの内部の構成を示す模式図である。 図3に示すECUのFLASHメモリの内部の構成を示す模式図である 図7に示す符合化制御ソフトの差分データ生成、圧縮データ生成の基本概念の説明図である。 図8に示す符合化ソフトを制御する符合化制御ソフトのフローチャートである。 更新対象ブロックの差分データまたは圧縮データを生成する符合化ソフトのフローチャートである。 図1に示すPCの通信ソフトのフローチャートである。 図1に示すサーバの通信ソフトのフローチャートである。 図3に示すプログラム書込み装置の通信ソフトのフローチャートである。 図3に示すプログラム書込み装置と車載制御装置を接続する車載ネットワークCANの通信フレーム構成である。 図5に示す車載制御装置のフラッシメモリに配置された復元回復ソフトのフローチャートである。 図13に示す復元回復ソフトから起動される復元制御ソフトのフローチャートである。 図14に示す復元制御ソフトから起動される復元ソフトのフローチャートである。 復元回復ソフトを用いた既存ECUの差分更新概念図である。 復元回復ソフトを用いた既存ECU差分更新の手順を示すフローチャートである。 復元回復ソフトをダウンロードするECU差分更新の手順を示すフローチャートである。
本実施形態は、下記2つの課題を同時に解決する手段を提供するものである。
1つ目の課題は、小さなRAM容量でかつ大きなブロックで構成されたフラッシュメモリを内蔵するマイコンでも差分更新を可能にすることである。
2つ目の課題は、新プログラムに大きな変更が加えられたとしても、差分データのサイズをできるだけ小さくすることである。
上記2つの課題を解決する方法を説明する。まず、更新対象ブロックの新プログラムを復元するために、更新対象ブロック以外の他のブロックをフラッシュメモリに確保し、消去しておく。ここで、前記他のブロックを一時ブロックと呼ぶことにする。車載制御装置は、受信したRAM上の差分データと、更新対象ブロックを含む複数のブロックに配置された旧プログラムから、新プログラムを復元し、前記一時ブロックへ新プログラムを書込む。次に、一時ブロックへの書込みが完了してから更新対象ブロックを消去し、一時ブロックの新プログラムを更新対象ブロックへ書込む。この処理を全ての更新対象ブロックに繰返し行うことで、差分更新による新プログラムへの更新を行うことができる。ここで注意すべきことは、一時ブロックに書込むべき新プログラムが存在する場合には、既に旧プログラムは消去されているので、差分更新はできない。本発明では、一時ブロックの書込むべき新プログラムは、新プログラム自身を圧縮した圧縮データを使用する。圧縮データは、解凍時に旧プログラムを参照する必要が無い。また圧縮データは、予め全て0や1などの決められたデータとの差分でも良い。この場合も復元時に旧プログラムを参照する必要が無い。以上のように一時ブロックの新プログラムの圧縮データを用いて、車載制御装置へ圧縮データを送信し、車載制御装置は受信した圧縮データを解凍して新プログラムを復元し、一時ブロックへ新プログラムを書込む手段を提供する。
このように、新プログラムの復元にはフラッシュメモリの一時ブロックを使用するので、RAMの使用は、差分データまたは圧縮データを受信する受信エリアで済むという特徴をもつ。
もう1つの課題は、前記「差分データと、更新対象ブロックを含む複数のブロックに配置された旧プログラムから、新プログラムを復元し、前記一時ブロックへ新プログラムを書込む。」手段で実現している。以下、その理由を詳しく説明する。簡単に説明するため、新プログラムに大きな機能追加があった場合を考える。この場合、新プログラムのどこかのブロックに新たな機能を実現するプログラムが追加されたことになる。これは、大まかに言うと、新機能が配置されるブロックを基準に、その上位アドレスの前半のブロックの新ブログラムは旧プログラムとほとんど同じであり、下位アドレスの後半のブロックの新プログラムは新機能のプログラムが割り込んだことにより、1つ下位のブロックへ移動することになる。この結果、同一ブロックの新プログラムと旧ブログラムの差分データは、上位アドレスの前半の同一ブロックではその差分データのサイズを小さくできるが、下位アドレスの後半のブロックでは類似性のあるプログラムがブロック1つ分ずれるため、同一ブロックの差分データのサイズは大きくなってしまう。そこで本発明は、更新対象ブロックの新プログラムの差分データは、更新対象ブロックを含む複数のブロックの広範囲の旧プログラムを利用して、ブロックが1つずれても類似性のある旧プログラムを検索できるようになるため、差分データを小さくすることができる。
以上の方法により、少ないRAM使用量でかつ大きなブロックで構成されたフラッシュメモリを内蔵したマイコンを使用した車載制御装置においても、差分更新を可能とし、かつ、大きな変更が加えられた新プログラムであっても、高速に差分リプログラミングを行うことができる。詳細は、以下で図を用いて詳細に述べる。
以下、図面を用いて本発明の実施形態による車載制御装置を含むシステムの構成及び動作を説明する。
最初に、図1を用いて、システムの全体構成を説明する。図1は、本発明の実施形態によるシステムの全体構成を示す模式図である。
本システムは、プログラム生成装置100、車載システム3を備える。
プログラム生成装置100は、新プログラムと車載システム3に含まれる車載制御装置に記憶されたプログラムと同一のプログラムからデータを生成し、生成したデータを車載システム3に送信する。なお、その詳細は、図7〜図11を用いて後述する。
プログラム生成装置100は、PC1、サーバ2を備える。PC1は、例えば、LAN(Local Area Network)を介して、サーバ2に接続される。なお、クロスケーブルを用いて、直接PC1とサーバ2を接続してもよい。
プログラム生成装置100は、無線で車載システム3と通信を行う。通信は、例えば、インターネット、携帯電話網、無線LANなどを経由して行われる。なお、図1では、図面を見やすくするため、ルータ、アクセスポイントなどの中継機器は表示していない。
車載システム3は、プログラム生成装置100からデータを受信し、受信したデータに基づいて、車載システム3に含まれる車載制御装置のプログラムを更新する。なお、その詳細は、図11〜図15を用いて後述する。
次に、図2を用いて、PC1の構成を説明する。図2は、図1に示すPC1の構成図である。
PC1は、CPU(Central Processing Unit)などの演算装置201、キーボード及びマウスなどの入力装置202、LCD(Liquid Crystal Display)などの表示装置203、NIC(Network Interface Card)などの通信装置204、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)などの記憶装置205を備える。演算装置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(300〜300)を備える。プログラム書き込み装置310及びECU300は、相互に車載ネットワークCANを介して通信する。
プログラム書き込み装置310は、認証が成功した場合、車両の外部のネットワークと車両の内部のCANの間でデータを中継する。
ECU300は、マイコン301、ECU300毎の用途に応じた各種のIC(Integrated Circuit)304、CANトランシーバなどの通信装置305を備える。マイコン301は、SRAM302(揮発性メモリ)、FLASHメモリ303(不揮発性メモリ)を内蔵する。
なお、プログラム書き込み装置310の構成もECU300の構成と基本的に同じであるが、車両の外部のネットワークのプロトコルに応じた通信装置をさらに備える。すなわち、プログラム書き込み装置310は、マイコン311、各種のIC314、CANトランシーバなどの通信装置315、車両の外部のネットワークのプロトコルに応じた通信装置316を備える。マイコン311は、SRAM312、FLASHメモリ313を内蔵する。
次に、図4を用いて、ECU300のSRAM302の構成を説明する。図4は、図3に示すSRAM302の内部の構成を示す模式図である。
SRAM302は、データを一時的に記憶するための第1の領域302a、第1の領域302aに記憶されたデータを復元するための第2の領域302bを備える。
本実施形態では、一例として、SRAM302のサイズは48kBであり、第1の領域302aのサイズは256Bであり、第2の領域302bのサイズは4kBである。
次に、図5を用いて、FLASHメモリ303の構成を説明する。図5は、図3に示すFLASHメモリ303の内部の構成を示す模式図である。
FLASHメモリ303は、複数のサイズのブロックから構成される。本実施形態では、一例として、FLASHメモリ303のサイズは1.5MBである。FLASHメモリ303は、128kB、256kBの2種類のブロックから構成される。ここで、ブロックとは、データを消去する最小単位である。例えば、128kBのブロックに4kBのデータを書き込む場合、128kBのデータを消去してから4kBのデータを書き込む。
図5に示すように、FLASHメモリ303では、先頭の128kBのブロックにはプログラム書込み装置310と通信を行う通信ソフトと受信データが差分データまたは圧縮データまたは全更新データのいずれかを識別して復元ソフトを起動する復元制御ソフトと復元ソフトで構成された復元回復ソフトが配置されている。次の128kB、256kB、256kB、256kB、256kB、256kBのブロックには、旧プログラムが記憶されている。
前記通信ソフトは、プログラム書込み装置310から受信した受信データをSRAM302の第1の領域302aに一時的に記憶し、復元制御ソフトは、そのデータの種類が差分データであれば、復元ソフトを起動して第1の領域302aのデータと既にFLASHメモリ303に存在する旧プログラムからSRAM302の第2の領域302bに新プログラムを復元したり、圧縮データであれば第1の領域302aの圧縮データを伸長してSRAM302の第2の領域302bへ新プログラムを復元した後に、前記一時ブロックへ書込みを行う処理などを行う。車載制御装置の復元処理の詳しい説明は、後で図を使用して詳しく説明する。
次に、プログラム生成装置100のPC1で行う更新対象ブロックの差分データ生成、圧縮データ生成の基本概念を図6を用いて説明する。
まず、図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のプログラムが1つ後ろの下位アドレスのブロックへ移動している。ここで、一時ブロックを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(i)へ差分データDIFFが格納され、766で変数DiffSize(i)へ差分データサイズDIFFSIZEが格納される。このように、更新対象ブロックiの差分データはDiff(i),差分データサイズはDiffSize(i)へ格納される。次に770で変数iをデクリメントして次の更新対象ブロックを選択する。775で、もしi=0ならば全ての更新対象ブロックの符合化が完了し、0で無いならば完了していないので780を経由して再び740を繰返し実行する。740は更新対象ブロックiが一時ブロックKであるかチェックしている。YESであれば785で変数Genへ圧縮データ生成指示を設定する。786では変数NewBへ一時ブロックKの新プログラムNew(K)を格納し、787で符合化ソフトを起動する。
符合化ソフトは、図8に示すように、種別指示Gen, 新プログラムNesBを入力として圧縮データ生成を行う。圧縮データは変数DIFFへ格納され、さらに圧縮データサイズは変数DIFFSIZEに格納される。詳細な説明は、図8で後述する。次に符合化ソフトの実行が完了すると788で変数Diff(i)へ圧縮データDIFFが格納され、789で変数DiffSize(i)へ圧縮データサイズDIFFSIZEが格納される。このように、更新対象ブロックiの差分データはDiff(i),差分データサイズはDiffSize(i)へ格納される。以上述べたように、変数Diff(i), i=1〜Nへ差分データまたは圧縮データが格納され、変数DiffSize(i), i=1〜Nへ差分データサイズまたは圧縮データサイズが格納された。また圧縮データはi=Kの場合であることがわかる。
次に図8を用いて、符合化ソフト800のフローチャートを説明する。
入力は、種別指示Gen810、更新対象ブロックを含む複数ブロックの旧プログラムOldB820と更新対象ブロックの新プログラム830である。符合化ソフト800は、まず840で種別指示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ならば、車両がソフトウェア更新可能な状態になるまで待つ。
ここで1150の差分データの送信について、図12を用いて詳しく説明する。
図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のフレームを説明したが、通信の詳細を説明する前に、車載制御装置300の復元回復ソフトの全体動作を図13を用いて説明する。
更新対象ブロックの差分データは、第N番目のブロックの差分データDiff(N)から第1番目のブロックの差分データDiff(1)の順序で車載制御装置300へ送信される。プログラム書込み装置310から、最初に第N番目の更新対象ブロックの差分データDiff(N)を車載制御装置300へ送信する。
車載制御装置300の復元回復ソフト1300は、差分データDiff(N)を受信すると、1310で復元制御ソフトを実行し、復元ソフトで復元された新プログラムを第Nブロックへ書込む。書込み完了すると応答をプログラム書込み装置310へ返す。同様に、第N−1番目の更新対象ブロックの差分データDiff(N-1)を車載制御装置300へ送信する。
車載制御装置300の復元回復ソフト1300は、差分データDiff(N-1)を受信すると、1320で復元制御ソフトを実行し、復元ソフトで復元された新プログラムを第N−1ブロックへ書込む。書込み完了すると応答をプログラム書込み装置310へ返す。同様に第1番目の更新対象ブロックの差分データDiff(1)を車載制御装置300へ送信する。
車載制御装置300の復元回復ソフト1300は、差分データDiff(1)を受信すると、1330で復元制御ソフトを実行し、復元ソフトで復元された新プログラムを第1ブロックへ書込む。書込み完了すると応答をプログラム書込み装置310へ返す。最後に一時ブロックの圧縮データDiff(K)を車載制御装置300へ送信する。
車載制御装置300の復元回復ソフト1300は、圧縮データDiff(K)を受信すると、1330で復元制御ソフトを実行し、復元ソフトで復元された新プログラムを一時ブロックである第Kブロックへ書込む。書込み完了すると応答をプログラム書込み装置310へ返す。以上の復元回復ソフト1300の動作で新プログラムへ更新することができる。
図14は、復元制御ソフト1400のフローチャートである。1つの更新対象ブロックにおける詳細な動作を説明する。
最初に、プログラム書込み装置310から第i番目のブロックのデータDiff(i)の種類f2と更新対象ブロックのブロックアドレスf4とデータのサイズf3をダウンロードフレームで車載制御装置300へ送信する。ここでダウンロードフレームの種類f2は、一時ブロックであれば圧縮、その他のブロックであれば差分である。サイズf3はデータのサイズDiffSize(i)である。またブロックアドレスf4は第i番目ブロックの先頭アドレスである。
車載制御装置300の復元制御ソフト1400は、1410でダウンロードフレームの種類f1を記録する。さらに更新対象ブロックの先頭アドレスを示すブロックアドレスf4, データのサイズf3も記録する。次に予め決めておいた一時ブロックを消去する。消去が完了した後にプログラム書込み装置310へ応答を返す。次にプログラム書込み装置310は転送データフレームを送信する。まずカウンタf5はインクリメントして設定し、ブロックデータf6にはDiff(i)の256バイトのデータを設定して分割送信する。
車載制御装置300の復元制御ソフト1400は、1411で第1の領域302aに256Bのデータを受信すると、既に記録しておいた種類f1を復元ソフトへ入力し、復元ソフトを起動する。復元ソフトは、種類f1に応じて新プログラムを第2の領域302bに生成する。復元制御ソフト1400は、生成された新プログラムを一時ブロックへ書込む。書込み完了すると応答をプログラム書込み装置310へ返送する。復元制御ソフト1400は、転送データフレームにより256B受信する度に復元して新プログラムを一時ブロックへ書込む処理を1412、1413で繰返す。プログラム書込み装置310は、更新対象ブロックの差分データまたは圧縮データを送信完了すると、ダウンロード終了フレームを送信する。
車載制御装置300は、ダウンロード終了フレームを受信すると、既に記録しておいた更新対象ブロックのブロックアドレスf4から更新対象ブロックを特定し、消去する。次に一時ブロックの新プログラムを更新対象ブロックへコピーする。コピー完了後にプログラム書込み装置310へ応答を返して処理を終了する。以上で更新対象ブロックへ新プログラムを書込み完了できた。
次に図15を用いて、復元ソフト1500のフローチャートを説明する。
入力は、1510の受信データの種類f2、1515の第1の領域302aの受信データ256B、1520の第2の領域302b、1525のフラッシュメモリの第1〜第iブロックの旧プログラムである。1525の第1〜第iブロックの旧プログラムは、図6に示した旧プログラムの範囲を示している。
復元ソフト1500は、大まかに解凍部1530と差分復元部1545の2つの部分で構成される。入力1515の受信データ256Bは圧縮データまたは差分データであるが、共に圧縮されているので、まず1530の解凍部で解凍する。その結果1535の解凍データが生成される。ここで解凍部の解凍ソフトウェアは図8の圧縮部860と対を成すソフトウェアである。しかし圧縮部860と解凍部1530は、可逆性のある圧縮、解凍ソフトであれば何でも良く制限は無い。例えばZIPでもいいし、スライディング辞書式のLZ77でも良い。
次に1540で受信データの種類f2が差分か圧縮か判定し、もし差分であれば1535の解凍データと1525の第1〜第iブロックの旧プログラムを用いて1545の差分復元部で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へ(b)復元回復ソフトを第2ブロックへダウンロードする。このダウンロードはブート部の全文データ更新ソフトによって実現される。車載制御装置300は1710で受信した復元回復ソフト(復元制御ソフト、復元ソフト)を第2ブロックへ書込む。書込み完了すると応答をプログラム書込み装置310へ返す。
次にプログラム書込み装置310は車載制御装置300へECUリセット要求する。1720で車載制御装置はECUリセットを実行し、ブート部の初期化処理を実行後、異常が無ければ第2ブロックの復元制御ソフトを起動し、応答を返す。
次にプログラム書込み装置310は(c)第N〜第3ブロックの符合化データ(差分データまたは圧縮データ)を車載制御装置300へ送信し、車載制御装置300は1730で符合化データDiff(N)〜Diff(3)を受信する毎に復元制御ソフトと復元ソフトを実行し、差分データや圧縮データを用いて新プログラムを復元して、第Nブロックから第3ブロックへ新プログラムを書込み、診断異常コードを設定して応答を返す。
次にプログラム書込み装置310はECUリセットを要求する。車載制御装置は1740でECUリセットを実行してブート部の初期化処理を実行し、診断異常によりブート部の全文データ更新ソフトを起動し、応答を返す。
次にプログラム書込み装置310は(d)第2ブロックの新プログラムをダウンロードする。車載制御装置300は1750で第2ブロックの新プログラムを受信し、新プログラムを第2ブロックへ書込む。
以上で、旧プログラムは、新プログラムへ書き換えられた。
本実施例では、ECUリセット後にアプリケーションとして復元制御ソフトを起動したり、ブート部の全文データ更新ソフトを起動する制御に診断異常コードを設定することで制御したが、モードによる設定でも可能である。すなわちリプロモード時はブート部の全文データ更新ソフトを起動し、通常モード時は復元制御ソフトを起動するが可能となる。どのような方法で切り替えても良い。
このように、本実施例の既存ECU更新手順は、3つのフェーズで構成されていることがわかる。第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のメモリから参照し、前記複数のブロックの中の更新対象ブロック用の更新プログラムを、前記更新対象ブロックとは異なる他のブロックに再現し、前記他のブロックに再現された更新プログラムを前記更新対象ブロックに書き込むように、前記演算装置を機能させる、プログラム更新ソフトウェア。
以上、詳しく述べたが、再度本実施例の全体に渡って整理すると下記のようになる。まず、本実施例の目的は2つある。1つには、少ないRAM使用量でかつ複数のブロックで構成された大きなフラッシュメモリを内蔵したマイコンを使用した車載制御装置においても差分リプログラミングの復元処理を実現可能とし、かつ、大きな変更が加えられた新プログラムであっても、差分データのサイズを小さくすることによって、短時間で新プログラムを復元することができるようにすること。
2つには、差分更新機能を有さない、いわゆる既存の車載制御装置あるいは既存ECUを、差分更新する手段を提供することである。既存の車載制御装置とは、少なくともマイコンなどの初期化ソフト、プログラム書換え装置と通信を行う通信ソフト、フラッシュ書込みソフト、全文データによる全文更新ソフトを配置したブート部と呼ぶ書換え不可エリアと、プログラムやデータを配置したアプリ部と呼ぶ書換え可能エリアで構成したフラッシュメモリと、ワークエリアとして使用する一時記憶を有する車載制御装置のことである。本実施例は、上記2つの目的を実現する車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェアを提供することにある。
本実施例の課題を解決するための1つの手段は、プログラムを格納する複数のブロックを備える第1のメモリと、一時的にデータを記憶する第2のメモリとを備え、前記プログラムの更新の際、前記プログラムと更新プログラムとの差分データを前記第2のメモリに格納し、前記格納した差分データと更新前の複数個のブロックの旧プログラムとを用いて、更新対象ブロック用の更新プログラムを、前記更新対象ブロックとは異なる他のブロックに復元・生成してから、前記他のブロックを前記更新対象ブロックへコピーする手段である。このように連続した複数個の旧プログラムを参照して更新対象ブロックの新プログラムを復元・生成することで、差分データサイズを小さくできる点がポイントである。ここで、一時的に他のブロックへ復元・生成してから、更新対象ブロックへコピーすることから、前記他のブロックを一時ブロックと呼ぶことにする。
本実施例の課題を解決するための2つ目の手段は、差分更新機能を有さない車載制御装置、すなわち既存ECUを差分更新するために、3つのフェーズで構成した更新手段で解決する。ここで当然ながら差分更新機能を有した復元回復ソフトをダウンロードする必要があるが、単純に差分更新ソフトのみをダウンロードすれば良いというわけでは無い。ダウンロードする復元回復ソフトは、プログラム書込み装置から通信コマンドや差分データを受信する通信機能と、受信した差分データと旧プログラムから新プログラムを復元・生成する復元機能と、通信コマンドの種類を識別して復元機能を起動し復元・生成された新プログラムをアプリ部のブロックへ書込む処理を行う復元制御機能などの機能で構成する。さらにこのような構成の復元回復ソフトをアプリ部の先頭へダウンロードすることがポイントとなる。
また、既存ECUは、ブート部と呼ぶ書換え不可エリアとアプリ部と呼ぶ書換え可能エリアで構成されたフラッシュメモリ構成とし、ブート部には全文データによる全文更新ソフトが存在し、アプリ部には更新可能なプログラム、データが配置されているものとする。
以下に、3つのフェーズで構成した更新手段を説明する。
最初の第1フェーズで既存ECUへ既存の全文更新ソフトを利用してアプリ部の先頭へ前記復元回復ソフトをダウンロードしてリセットする。第2フェーズで前記復元回復ソフトをアプリケーションソフトとして起動して、差分更新により差分データと旧プログラムから新プログラムを復元・生成してアプリ部のブロックを更新してリセットする。第3フェーズで既存の全文更新ソフトを利用して前記アプリ部の先頭へ新プログラムをダウンロードする。以上で課題を解決するための基本概念を説明したが、以下にさらに詳細に説明する。
最初の第1フェーズでアプリ部の先頭へ復元回復ソフトをダウンロードしてリセットを行う。第2フェーズでは、リセット直後に、まずブート部が実行される。その実行後にアプリ部の先頭に配置された復元回復ソフトが実行される。復元回復ソフトは更新対象ブロックの差分データを受信してアプリ部の複数個のブロックの旧プログラムを参照して新プログラムを一時ブロックへ復元・生成し、その後に一時ブロックを更新対象ブロックへコピーする。全ての更新対象ブロックに対して上記復元・生成とコピー処理を終了した後にリセットする。最後の第3フェーズでは、ブート部の全文更新ソフトがアプリ部の先頭へ新プログラムを書込む。以上の基本動作でアプリ部の全てのブロックが新プログラムへ書換えられたことになる。
本実施例の1つ目の手段によれば、大きな変更が加えられた新プログラムであっても、復元時に大きなエリアの旧プログラムを参照できる。結果として差分データサイズを小さくすることができるので車載制御装置の復元ソフトは、高速に新プログラム復元・生成できることになる。さらに、もう1つ大きな効果がある。もし差分更新途中で車載バッテリの容量が無くなり、電源断など思いもよらぬ事象が発生しても、リトライ可能である点である。差分更新中のブロックは前記一時ブロックなので、更新対象ブロックの旧プログラムはそのまま残っている。従ってこの時点で電源断が発生しても、電源復帰後に再度旧プログラムを参照して新プログラムを復元・生成することができる。また、もし一時プロックを更新対象ブロックへコピー中に電源断が発生した場合でも、更新対象ブロックの旧プログラムは途中まで破壊されているが、新プログラムが一時ブロックに残っているので電源回復後に再度新プログラムを更新対象ブロックへ書き込めば良い。このように、一時ブロックへ復元・生成する手段により、差分データを小さくすることが可能となり、かつ電源断などの異常発生した場合でもリトライすれば、復元できるメリットがある。
本実施例の2つの手段によれば、差分更新機能を有していない車載制御装置を高速に差分更新できるので、車載制御装置の差分更新対象範囲を大幅に拡大できるメリットがある。
前述したように、差分更新機能を有していない車載制御装置、いわゆる既存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ブロックへダウンロードした復元回復ソフトを実行する。最初に通信ソフトやフラッシュ書込みソフトなどを初期化し、実行可能状態に設定する。次に復元制御ソフトを実行してプログラム書換え装置からのコマンド待ち状態に設定する。次にプログラム書換え装置から (c)第Nブロック〜第3ブロックの差分データ(Diff)を受信すると、復元ソフトを起動して第Nブロック〜第3ブロックの差分データと旧プログラムから差分更新して新プログラムを復元・生成し、フラッシュ書込みソフトを用いて第N〜第3ブロックの新プログラムを第N〜第3ブロックのフラッシュメモリへ書込む。そしてリセットする。
フェーズ3は、既存ECUのブート部の通信ソフトと全文更新ソフトを用いて、プログラム書込み装置から送信される (d)第2ブロックの新プログラムを受信し、ブート部のフラッシュ書込みソフトを用いて第2ブロックの新プログラムを第2ブロックへ書込み、リセットを行う。これで復元回復ソフトによって破壊された第2ブロックを新プログラムヘ書換えたことになる。
以上、3つのフェーズで構成した既存ECUの差分更新方法は、全文更新処理が第2ブロックの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フェーズの3つのフェーズでプログラム更新することを特徴とする車載制御装置。
4.更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新するように、前記車載制御装置に搭載される演算装置を機能させるプログラム更新ソフトウェアであって、
前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第1のメモリと、データを一時的に記憶する第2のメモリとを備え、第1のメモリは書き換え不可エリアと書き換え可能エリアで構成し、書換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアを配置し、書換え可能エリアには更新可能なプログラム及びデータを配置し、
書換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを書込み可能エリアの先頭のブロックへ書込む第1フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書換え可能エリアのブロックヘ書込む第2フェーズと、書換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第3フェーズの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…FLASHメモリ(不揮発性メモリ)
304…各種のIC
305…通信装置
310…ゲートウェイ(プログラム書き込み装置)
311…マイコン
312…SRAM
313…FLASHメモリ
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…復元ソフト

Claims (42)

  1. 更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新可能な車載制御装置であって、
    前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第1のメモリと、データを一時的に記憶する第2のメモリとを備え、
    前記更新ツールは、更新対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
    前記車載制御装置は、前記差分データを第2のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む、車載制御装置。
  2. 前記車載制御装置は、ての更新対象ブロックの更新が完了した後に、前記更新ツールから送信された前記他のブロックの新プログラムを圧縮した圧縮データを受信して前記第2のメモリへ格納し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込む、請求項1記載の車載制御装置。
  3. 前記更新対象ブロックを含む複数のブロックの旧プログラムは、更新対象ブロックに隣接し、かつ上位アドレスの連続したブロックの旧プログラムである、請求項1記載の車載制御装置。
  4. 前記差分データを前記第2のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第3の手段と、
    前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第4の手段と、を有し、
    全ての更新対象ブロックを前記第3の手段と前記第4の手段を繰返し用いることにより、前記第1のメモリを前記新プログラムへ書き換える、請求項1記載の車載制御装置。
  5. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第1フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第2フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第3フェーズの3つのフェーズでプログラム更新する、請求項1記載の車載制御装置。
  6. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
    前記書き換え不可エリアには更新ソフトウェアが配置され、
    前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
    前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項1記載の車載制御装置。
  7. 前記復元回復ソフトは、
    a:更新ツールと通信コマンドを受信するための通信機能と、
    b:前記新プログラムを再現する再現機能と、
    c:前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
    d:前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
    を有する、請求項5または請求項6記載の車載制御装置。
  8. 更新ツールから提供される更新内容に基づいて、車載制御装置に格納されている旧プログラムを新プログラムヘ更新可能なプログラム更新システムであって
    前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第1のメモリと、データを一時的に記憶する第2のメモリとを備え、
    前記更新ツールは、更新対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
    前記車載制御装置は、差分データを前記第2のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む、プログラム更新システム。
  9. 前記差分データを前記第2のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第3の手段と、
    前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第4の手段と、を有し、
    全ての更新対象ブロックを前記第3の手段と前記第4の手段を繰返し用いることにより、前記第1のメモリを前記新プログラムへ書き換える、請求項8記載のプログラム更新システム。
  10. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第1フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第2フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第3フェーズの3つのフェーズでプログラム更新する、請求項8記載のプログラム更新システム。
  11. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
    前記書き換え不可エリアには更新ソフトウェアが配置され、
    前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
    前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項8記載のプログラム更新システム。
  12. 前記復元回復ソフトは、
    a:更新ツールと通信コマンドを受信するための通信機能と、
    b:前記新プログラムを再現する再現機能と、
    c:前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
    d:前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
    を有する、請求項10または請求項11記載のプログラム更新システム。
  13. 更新ツールから提供される更新内容に基づいて車載制御装置に格納されている旧プログラムを新プログラムヘ更新するように、前記車載制御装置に搭載される演算装置を機能させるプログラム更新ソフトウェアであって、
    前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第1のメモリと、データを一時的に記憶する第2のメモリとを備え、
    前記更新ツールは、更新対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
    前記プログラム更新ソフトウェアは、差分データを前記第2のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込むように前記演算装置を機能させる、プログラム更新ソフトウェア。
  14. ての更新対象ブロックの更新が完了した後に、前記更新ツールから送信された前記他のブロックの新プログラムを圧縮した圧縮データを受信して前記第2のメモリへ格納し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込むように前記演算装置を機能させる、請求項13記載のプログラム更新ソフトウェア。
  15. 前記差分データを前記第2のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第3の手段と、
    前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第4の手段と、として前記演算装置を機能させ
    全ての更新対象ブロックを前記第3の手段と前記第4の手段を繰返し用いることにより、前記第1のメモリを前記新プログラムへ書き換える、請求項13記載のプログラム更新ソフトウェア。
  16. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第1フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第2フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第3フェーズの3つのフェーズでプログラム更新する、請求項13記載のプログラム更新ソフトウェア。
  17. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
    前記書き換え不可エリアには更新ソフトウェアが配置され、
    前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
    前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項13記載のプログラム更新ソフトウェア。
  18. 前記復元回復ソフトは、
    a:更新ツールと通信コマンドを受信するための通信機能と、
    b:前記新プログラムを再現する再現機能と、
    c:前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
    d:前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
    を有する、請求項16または請求項17記載のプログラム更新ソフトウェア。
  19. 更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新可能な車載制御装置であって、
    前記車載制御装置は、前記プログラムを格納する複数のブロックで構成された不揮発性の第1のメモリと、データを一時的に記憶する第2のメモリとを備え、さらにプログラムまたはデータを受信すると一時的に第2のメモリへ格納し、その後にプログラムまたはデータを前記不揮発性の第1のメモリへ書込む第3のダウンロード手段を備え、
    前記更新ツールは、差分または圧縮による更新手順を有する復元ソフトを車載制御装置へ送信し、次に対象である更新対象ブロックの新プログラムと更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
    前記車載制御装置は、前記復元ソフトを受信すると前記第3のダウンロード手段により前記不揮発性の第1のメモリの予め定めたブロックへ書込みを行う第1の手順と、前記復元ソフトを実行して、前記差分データを受信すると差分データを前記第2のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む第2手順で構成されたプログラム更新を行う、車載制御装置。
  20. 前記車載制御装置は、ての更新対象ブロックの更新が完了した後に、前記更新ツールから送信された前記他のブロックの新プログラムを圧縮した圧縮データを受信して前記第2のメモリへ格納し、前記復元ソフトを実行し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込む、請求項19記載の車載制御装置。
  21. 前記差分データを前記第2のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第3の手段と、
    前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第4の手段と、を有し、
    全ての更新対象ブロックを前記第3の手段と前記第4の手段を繰返し用いることにより、前記第1のメモリを前記新プログラムへ書き換える、請求項19記載の車載制御装置。
  22. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第1フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第2フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第3フェーズの3つのフェーズでプログラム更新する、請求項19記載の車載制御装置。
  23. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
    前記書き換え不可エリアには更新ソフトウェアが配置され、
    前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
    前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項19記載の車載制御装置。
  24. 前記復元回復ソフトは、
    a:更新ツールと通信コマンドを受信するための通信機能と、
    b:前記新プログラムを再現する再現機能と、
    c:前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
    d:前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
    を有する、請求項22または請求項23記載の車載制御装置。
  25. 更新ツールから提供される更新内容に基づいて車載制御装置に格納されている旧プログラムを新プログラムヘ更新するように、前記車載制御装置に搭載される演算装置を機能させるプログラム更新ソフトウェアであって、
    前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第1のメモリと、データを一時的に記憶する第2のメモリと、プログラムまたはデータを受信すると一時的に第2のメモリへ格納し、その後に前記プログラムまたはデータを前記不揮発性の第1のメモリへ書込むダウンロード手段とを備え、
    前記更新ツールは、差分または圧縮による更新手順を有する復元ソフトを車載制御装置へ送信し、次に対象である更新対象ブロックの新プログラムと、更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、
    前記プログラム更新ソフトウェアは、前記復元ソフトを受信すると前記ダウンロード手段により前記不揮発性の第1のメモリの予め定めたブロックへ書込みを行う第1の手順と、前記復元ソフトを実行して、前記差分データを受信すると差分データを前記第2のメモリに格納し、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを用いて、前記更新対象ブロックとは異なる他のブロックに再現し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む第2の手順とを実行するように前記演算装置を機能させる、プログラム更新ソフトウェア。
  26. ての更新対象ブロックの更新が完了した後に、前記更新ツールから送信された前記他のブロックの新プログラムを圧縮した圧縮データを受信して前記第2のメモリへ格納し、前記復元ソフトを実行し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込むように前記演算装置を機能させる、請求項25記載のプログラム更新ソフトウェア。
  27. 前記差分データを前記第2のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第3の手段と、
    前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第4の手段と、として前記演算装置を機能させ
    全ての更新対象ブロックを前記第3の手段と前記第4の手段を繰返し用いることにより、前記第1のメモリを前記新プログラムへ書き換える、請求項25記載のプログラム更新ソフトウェア。
  28. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第1フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第2フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第3フェーズの3つのフェーズでプログラム更新する、請求項25記載のプログラム更新ソフトウェア。
  29. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
    前記書き換え不可エリアには更新ソフトウェアが配置され、
    前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
    前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項25記載のプログラム更新ソフトウェア。
  30. 前記復元回復ソフトは、
    a:更新ツールと通信コマンドを受信するための通信機能と、
    b:前記新プログラムを再現する再現機能と、
    c:前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
    d:前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
    を有する、請求項28または請求項29記載のプログラム更新ソフトウェア。
  31. 更新ツールから提供される更新内容に基づいて、格納している旧プログラムを新プログラムヘ更新可能な車載制御装置であって、
    前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第1のメモリと、データを一時的に記憶する第2のメモリとを備え、さらにプログラムまたはデータを受信すると一時的に第2のメモリへ格納し、その後にプログラムまたはデータを前記不揮発性の第1のメモリへ書込むダウンロード手段を備え、
    前記更新ツールは、差分または圧縮による更新手順と差分データまたは圧縮データの通信手順を有する復元回復ソフトを車載制御装置へ送信し、次に対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、次に予め定めたブロックの新プログラムを送信し、
    前記車載制御装置は、前記復元回復ソフトを受信すると前記ダウンロード手段により前記不揮発性の第1のメモリの予め定めたブロックへ書込みを行う第1の手順と、前記復元回復ソフトの通信手順を実行して、前記差分データを受信すると差分データを前記第2のメモリに格納し、前記復元回復ソフトの更新手順を実行して前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムを入力として前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに復元し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む第2の手順と、前記予め定めたブロックの新プログラムを受信すると前記ダウンロード手段により前記不揮発性の第1のメモリの予め定めたブロックへ前記新プログラムを書込む第3の手順で構成されたプログラム更新を行う、車載制御装置。
  32. 前記差分データによる更新対象ブロックの更新が完了した後に、前記更新ツールは前記他のブロックの新プログラムを圧縮した圧縮データを送信し、車載制御装置は、前記圧縮データを受信して前記第2のメモリへ格納し、前記復元回復ソフトは前記圧縮データを解凍し、新プログラムを前記他のブロックへ書込む、請求項31記載の車載制御装置。
  33. 前記差分データを前記第2のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第3の手段と、
    前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第4の手段と、を有し、
    全ての更新対象ブロックを前記第3の手段と前記第4の手段を繰返し用いることにより、前記第1のメモリを前記新プログラムへ書き換える、請求項31記載の車載制御装置。
  34. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第1フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第2フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第3フェーズの3つのフェーズでプログラム更新する、請求項31記載の車載制御装置。
  35. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
    前記書き換え不可エリアには更新ソフトウェアが配置され、
    前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
    前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項31記載の車載制御装置。
  36. 前記復元回復ソフトは、
    a:更新ツールと通信コマンドを受信するための通信機能と、
    b:前記新プログラムを再現する再現機能と、
    c:前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
    d:前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
    を有する、請求項34または請求項35記載の車載制御装置。
  37. 更新ツールから提供される更新内容に基づいて車載制御装置に格納されている旧プログラムを新プログラムヘ更新可能なプログラム更新ソフトウェアであって、
    前記車載制御装置は、前記プログラムを格納する複数のブロックを備える不揮発性の第1のメモリと、データを一時的に記憶する第2のメモリとを備え、さらにプログラムまたはデータを受信すると一時的に第2のメモリへ格納し、その後にプログラムまたはデータを前記不揮発性の第1のメモリへ書込む第3のダウンロード手段を備え、
    前記更新ツールは、差分または圧縮による更新手順と差分データまたは圧縮データの通信手順を有する復元回復ソフトを車載制御装置へ送信し、次に対象である更新対象ブロックの新プログラムと前記更新対象ブロックを含む複数のブロックの旧プログラムとの差分データを車載制御装置へ送信し、次に予め定めたブロックの新プログラムを送信し、
    前記プログラム更新ソフトウェアは、前記復元回復ソフトを受信すると前記第3のダウンロード手段により前記不揮発性の第1のメモリの予め定めたブロックへ書込みを行う第1の手順と、前記復元回復ソフトの通信手順を実行して、前記差分データを受信すると差分データを前記第2のメモリに格納し、前記復元回復ソフトの更新手順を実行して、前記差分データと前記更新対象ブロックを含む複数のブロックに格納されている旧プログラムとを入力として前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる他のブロックに復元し、前記更新対象ブロックを消去した後に前記他のブロックに再現された新プログラムを前記更新対象ブロックに書き込む第2の手順と、前記予め定めたブロックの新プログラムを受信すると前記第3のダウンロード手段により前記不揮発性の第1のメモリの予め定めたブロックへ前記新プログラムを書込む第3の手順とを実行するように演算装置を機能させる、プログラム更新ソフトウェア。
  38. 前記差分データによる更新対象ブロックの更新が完了した後に、前記更新ツールは前記他のブロックの新プログラムを圧縮した圧縮データを送信し、
    前記プログラム更新ソフトウェアは受信した圧縮データを前記第2のメモリへ格納し、前記復元回復ソフトを実行し、前記圧縮データを解凍して新プログラムを前記他のブロックへ書込むように前記演算装置を機能させる、請求項37記載のプログラム更新ソフトウェア。
  39. 前記差分データを前記第2のメモリに格納し、前記差分データと前記旧プログラムとを用いて、前記更新対象ブロックの新プログラムを前記更新対象ブロックとは異なる一時ブロックへ復元・生成する第3の手段と、
    前記更新対象ブロックを消去した後に前記一時ブロックに復元・生成した新プログラムを前記更新対象ブロックへ書き込む第4の手段と、として前記演算装置を機能させ
    全ての更新対象ブロックを前記第3の手段と前記第4の手段を繰返し用いることにより、前記第1のメモリを前記新プログラムへ書き換える、請求項37記載のプログラム更新ソフトウェア。
  40. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアで構成され、前記書き換え不可エリアには更新ツールと通信コマンドや全文データを受信する通信機能と前記ブロックへプログラムとデータを書込むフラッシュ書込み機能と全文データによる全文更新機能を有するソフトウェアが配置され、前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記書き換え不可エリアのソフトウェアを用いて通信機能と復元機能と復元制御機能を有する復元回復ソフトを前記書込み可能エリアの先頭のブロックへ書込む第1フェーズと、前記復元回復ソフトを起動して差分データとブロックの旧プログラムから新プログラムを復元・生成して前記書き換え可能エリアのブロックヘ書込む第2フェーズと、前記書き換え不可エリアのソフトウェアを用いて書込み可能エリアの先頭のブロックへ当該ブロックの新プログラムを書込む第3フェーズの3つのフェーズでプログラム更新する、請求項37記載のプログラム更新ソフトウェア。
  41. 前記第1のメモリは書き換え不可エリアと書き換え可能エリアとで構成され、
    前記書き換え不可エリアには更新ソフトウェアが配置され、
    前記書き換え可能エリアには更新可能なプログラム及びデータが配置され、
    前記更新ソフトウェアは復元回復ソフトを前記書き換え不可エリアから受信すると、前記復元回復ソフトを前記書き換え可能エリアの先頭へ書込み、前記書き換え可能エリアを新プログラムへ更新し、さらに前記車載制御装置をリセットして再起動し、
    前記更新ツールは、前記差分データを前記再起動後に前記車載制御装置へ送信する、請求項37記載のプログラム更新ソフトウェア。
  42. 前記復元回復ソフトは、
    a:更新ツールと通信コマンドを受信するための通信機能と、
    b:前記新プログラムを再現する再現機能と、
    c:前記ブロックへ前記新プログラムを書込むフラッシュ書込み機能と、
    d:前記通信コマンドの種類を識別して前記新プログラムを前記ブロックへ書込む処理を行う復元制御機能と、
    を有する、請求項40または請求項41記載のプログラム更新ソフトウェア。
JP2017543171A 2015-09-29 2016-09-21 車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェア Active JP6568947B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2015190627 2015-09-29
JP2015190627 2015-09-29
PCT/JP2016/077760 WO2017057111A1 (ja) 2015-09-29 2016-09-21 車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェア

Publications (2)

Publication Number Publication Date
JPWO2017057111A1 JPWO2017057111A1 (ja) 2018-06-14
JP6568947B2 true JP6568947B2 (ja) 2019-08-28

Family

ID=58423588

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017543171A Active JP6568947B2 (ja) 2015-09-29 2016-09-21 車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェア

Country Status (5)

Country Link
US (1) US10430176B2 (ja)
EP (1) EP3358465B1 (ja)
JP (1) JP6568947B2 (ja)
CN (1) CN108027753B (ja)
WO (1) WO2017057111A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11650811B2 (en) 2019-11-26 2023-05-16 Hyundai Autoever Corp. Method of updating control unit for vehicle

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017156937A (ja) * 2016-03-01 2017-09-07 ヤンマー株式会社 端末装置およびソフトウェア書き換えプログラム
US10860238B2 (en) * 2017-12-27 2020-12-08 Intel Corporation Method and apparatus for improving firmware loading
CN109343872A (zh) * 2018-08-01 2019-02-15 宝沃汽车(中国)有限公司 车辆的软件刷写方法和装置
JP7047819B2 (ja) * 2018-08-10 2022-04-05 株式会社デンソー 電子制御装置、車両用電子制御システム、アクティベートの実行制御方法及びアクティベートの実行制御プログラム
JP7367359B2 (ja) * 2018-08-10 2023-10-24 株式会社デンソー 車両用電子制御システム、ファイルの転送制御方法、ファイルの転送制御プログラム及び装置
JP7003975B2 (ja) * 2018-08-10 2022-01-21 株式会社デンソー 車両情報通信システム,センター装置及びセンター装置のメッセージ送信方法
WO2020115818A1 (ja) * 2018-12-04 2020-06-11 三菱電機株式会社 更新管理装置、更新管理システム及び更新管理方法
CN109901861B (zh) * 2019-02-26 2022-05-06 浙江吉利汽车研究院有限公司 一种电控单元软件更新方法及装置
JP7128763B2 (ja) * 2019-03-18 2022-08-31 日立Astemo株式会社 電子制御装置及び制御データの設定方法
CN110347412B (zh) * 2019-06-27 2023-05-30 中国第一汽车股份有限公司 电子控制单元固件升级管理方法、装置、设备和存储介质
JP7177755B2 (ja) * 2019-07-24 2022-11-24 株式会社日立製作所 サーバ、ソフトウェア更新システム、およびソフトウェア更新装置
CN112346756A (zh) * 2019-08-06 2021-02-09 日本电产艾莱希斯株式会社 电动助力转向控制装置
KR102088167B1 (ko) * 2019-08-27 2020-03-12 루나 주식회사 소프트웨어 업데이트 에이전트 장치 및 이를 통한 패치방법
KR102088164B1 (ko) * 2019-08-27 2020-03-12 루나 주식회사 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치
CN110673870A (zh) * 2019-09-27 2020-01-10 奇瑞汽车股份有限公司 一种汽车仪表软件的刷新方法
JP7310570B2 (ja) * 2019-11-27 2023-07-19 株式会社オートネットワーク技術研究所 車載更新装置、プログラム及び、プログラムの更新方法
JP2021135777A (ja) * 2020-02-27 2021-09-13 株式会社小松製作所 作業機械のコンポーネントのソフトウェア更新システムおよびソフトウェア更新方法
JP7363853B2 (ja) * 2021-04-26 2023-10-18 トヨタ自動車株式会社 Otaマスタ、センタ、システム、更新方法、更新プログラム、及び車両
CN117707588A (zh) * 2022-09-09 2024-03-15 荣耀终端有限公司 差分文件的还原方法及电子设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
JP4153324B2 (ja) 2003-01-31 2008-09-24 松下電器産業株式会社 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム
ATE392661T1 (de) * 2004-03-10 2008-05-15 Sony Ericsson Mobile Comm Ab Automatisierter datensicherungsspeicher in firmware-aufwertungen
WO2005085997A2 (en) * 2004-03-10 2005-09-15 Sony Ericsson Mobile Communications Ab Automatic backup store in firmware upgrades
US20060259207A1 (en) * 2005-04-20 2006-11-16 Denso Corporation Electronic control system for automobile
US7814478B2 (en) * 2005-11-09 2010-10-12 Texas Instruments Norway As Methods and apparatus for use in updating application programs in memory of a network device
US20080005733A1 (en) * 2006-06-29 2008-01-03 Balaji Ramachandran Method and apparatus for updating firmware and software
JP2011081561A (ja) * 2009-10-06 2011-04-21 Canon Inc 情報処理装置
JP5653259B2 (ja) 2011-03-08 2015-01-14 クラリオン株式会社 更新差分データ作成装置、データ更新システムおよび更新差分データ作成プログラム
JP5696018B2 (ja) 2011-09-28 2015-04-08 クラリオン株式会社 対象データの配置方法、対象データ配置システム、および、それらのサーバ装置、クライアント装置、プログラム
US9298439B2 (en) * 2013-07-16 2016-03-29 Dropbox, Inc. System and method for installing a client application using a light installer
WO2016121442A1 (ja) 2015-01-26 2016-08-04 日立オートモティブシステムズ株式会社 車載制御装置、プログラム書き込み装置、プログラム生成装置及びプログラム
US9916151B2 (en) * 2015-08-25 2018-03-13 Ford Global Technologies, Llc Multiple-stage secure vehicle software updating

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11650811B2 (en) 2019-11-26 2023-05-16 Hyundai Autoever Corp. Method of updating control unit for vehicle

Also Published As

Publication number Publication date
JPWO2017057111A1 (ja) 2018-06-14
US10430176B2 (en) 2019-10-01
CN108027753A (zh) 2018-05-11
CN108027753B (zh) 2021-07-06
EP3358465B1 (en) 2024-04-17
WO2017057111A1 (ja) 2017-04-06
US20180246711A1 (en) 2018-08-30
EP3358465A4 (en) 2019-06-05
EP3358465A1 (en) 2018-08-08

Similar Documents

Publication Publication Date Title
JP6568947B2 (ja) 車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェア
JP6739498B2 (ja) 車載制御装置及びプログラム書き込み装置
KR101359834B1 (ko) 압축 버전을 포함하는 내용을 업데이트하는 방법 및시스템들
JP5057519B2 (ja) 記憶装置に記憶されたコンテンツをインプレース更新するための方法およびシステム
JP6013626B2 (ja) 不揮発性メモリ書込み機構
US20110004871A1 (en) Embedded electronic device and firmware updating method thereof
TWI296778B (en) Method and system for maintaining smbios
JP6070360B2 (ja) 情報処理装置およびその処理方法
US8578359B2 (en) Method and apparatus for reliable in-place update
EP2329368B1 (en) Updating content without using a mini operating system
JP6719020B2 (ja) 車載制御装置、及び、プログラム更新ソフトウェア
JP2009301264A (ja) Nand型フラッシュメモリアクセス装置及びnand型フラッシュメモリアクセスプログラム及び記録媒体
JP6301820B2 (ja) リプログラミングシステム
JP5100500B2 (ja) データ書き換えシステム及び新版データ作成装置及び差分データ作成装置及び新版データ作成プログラム及び差分データ作成プログラム
JP5521437B2 (ja) 携帯端末装置、ソフトウェア更新方法及びプログラム
JP2018160206A (ja) 車載制御装置、及び、プログラム更新ソフトウェア
JP2005235110A (ja) 電子機器及び同機器に用いるプログラム
KR100640612B1 (ko) 메인 코드 기입 방법 및 장치
JP2019175024A (ja) 車載制御装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180223

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190716

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190805

R150 Certificate of patent or registration of utility model

Ref document number: 6568947

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350